Administración de secretos de aplicaciones con AWS Secrets Manager - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Administración de secretos de aplicaciones con AWS Secrets Manager

AWS Secrets Manager lo ayuda a administrar credenciales, claves de API y otros secretos durante su ciclo de vida, acceder a ellos y rotarlos. Con Secrets Manager, puede proteger y administrar los secretos utilizados para acceder a los recursos en AWS, en servicios de terceros y en las instalaciones. Para obtener más información, consulte la Guía del usuario de AWS Secrets Manager.

Al utilizar la capacidad de EKS para Argo CD, Secrets Manager proporciona una forma segura de almacenar y recuperar las credenciales de repositorios de Git sin necesidad de codificar información confidencial en la configuración y los recursos de Argo CD. Esta integración es particularmente útil para administrar los tokens de acceso a repositorios privados y las claves de SSH que utiliza Argo CD para sincronizar aplicaciones de los repositorios de Git.

Uso de AWS Secrets Manager con Argo CD

Al utilizar la capacidad de EKS para Argo CD, puede almacenar las credenciales de repositorios de Git en Secrets Manager y configurar Argo CD para recuperarlas. Este enfoque es más seguro que almacenar las credenciales directamente en la configuración de Argo CD o utilizar tokens de acceso personal de larga duración.

Requisitos previos

  • Un clúster de Amazon EKS con la capacidad de Argo CD activada

  • Credenciales de repositorios de Git almacenadas en AWS Secrets Manager

  • Permisos de IAM configurados para que Argo CD acceda a Secrets Manager

Configuración de Argo CD para que utilice Secrets Manager como credenciales de repositorios

  1. Almacene credenciales de Git en Secrets Manager. Por ejemplo, haga lo siguiente para almacenar un token de acceso personal de GitHub:

    aws secretsmanager create-secret \ --name argocd/github-token \ --secret-string '{"username":"git","password":"ghp_xxxxxxxxxxxx"}'
  2. Asegúrese de que el rol de capacidad de Argo CD tenga permisos para recuperar el secreto:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "arn:aws:secretsmanager:region:account-id:secret:argocd/github-token*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:region:account-id:key/*", "Condition": { "StringLike": { "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:region:account-id:secret:argocd/*", "kms:ViaService": "secretsmanager.*.amazonaws.com" } } } ] }
    nota

    El permiso de descifrado de KMS es obligatorio porque Secrets Manager cifra todos los secretos mediante AWS KMS. La condición restringe el descifrado solo a los secretos con el prefijo argocd/. Si utiliza la clave administrada de AWS predeterminada para Secrets Manager, este permiso es suficiente. En el caso de las claves de KMS administradas por el cliente, actualice el campo Resource con el ARN de clave específico.

  3. Configure Argo CD para que utilice las credenciales de Secrets Manager. Para obtener información sobre cómo sincronizar los secretos de Secrets Manager con los secretos de Kubernetes a los que Argo CD puede hacer referencia, consulte Secret Management en la documentación de Argo CD.

  4. Cree una configuración de repositorios de Argo CD que haga referencia al ARN de secreto:

    apiVersion: v1 kind: Secret metadata: name: private-repo namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: https://github.com/org/repo secretArn: arn:aws:secretsmanager:region:account-id:secret:argocd/github-token

Para obtener más información sobre cómo configurar el acceso al repositorio con Argo CD, consulte Configuración del acceso al repositorio.