使用 Amazon Secrets Manager 管理应用程序密钥 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

使用 Amazon Secrets Manager 管理应用程序密钥

Amazon Secrets Manager 可帮助您在凭证、API 密钥及其他机密信息的全生命周期内,完成对其的管理、访问与轮换操作。借助 Secrets Manager,您能够安全管理用于访问 Amazon 环境、第三方服务以及本地环境中各类资源的机密信息。有关更多信息,请参阅 Amazon Secrets Manager 用户指南

在适用于 Argo CD 的 EKS 功能中使用 Secrets Manager 时,该服务可提供一种安全方式来存储和获取 Git 存储库凭证,无需在 Argo CD 的配置项和资源列表中硬编码敏感数据。这种集成方式对于管理私有存储库访问令牌,以及 Argo CD 用于从 Git 存储库同步应用的 SSH 密钥,都尤为实用。

在 Argo CD 中使用 Amazon Secrets Manager

在适用于 Argo CD 的 EKS 功能中进行操作时,可将 Git 存储库凭证存储在 Secrets Manager 中,并配置 Argo CD 来获取这些凭证。相较于直接在 Argo CD 配置中存储凭证,或是使用长期有效的个人访问令牌,这种方式安全性要更高。

先决条件

  • 已启用 Argo CD 功能的 Amazon EKS 集群

  • 已在 Amazon Secrets Manager 中存储 Git 存储库凭证

  • 已为 Argo CD 配置访问 Secrets Manager 所需的 IAM 权限

配置 Argo CD 使用 Secrets Manager 管理存储库凭证

  1. 将 Git 凭证存储到 Secrets Manager 中。例如,存储一个 GitHub 个人访问令牌:

    aws secretsmanager create-secret \ --name argocd/github-token \ --secret-string '{"username":"git","password":"ghp_xxxxxxxxxxxx"}'
  2. 确保 Argo CD 功能角色具备获取机密信息的权限:

    { "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" } } } ] }
    注意

    由于 Secrets Manager 会使用 Amazon KMS 对所有机密信息进行加密,因此 KMS 解密权限是必需项。配置中的条件会将解密操作限制为仅针对带有 argocd/ 前缀的机密信息。若使用 Secrets Manager 的默认 Amazon 托管式密钥,则该权限已足够。若使用客户托管式 KMS 密钥,则在 Resource 字段中更新为对应的密钥 ARN。

  3. 配置 Argo CD,使其从 Secrets Manager 中获取凭证。有关将 Secrets Manager 中的机密信息同步为 Argo CD 可引用的 Kubernetes 机密的方法,请参阅 Argo CD 文档中的机密管理章节。

  4. 创建一个引用该机密 ARN 的 Argo CD 存储库配置:

    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

有关使用 Argo CD 配置存储库访问权限的更多信息,请参阅配置存储库访问权限