帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
使用 Amazon Secrets Manager 管理应用程序密钥
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 管理存储库凭证
-
将 Git 凭证存储到 Secrets Manager 中。例如,存储一个 GitHub 个人访问令牌:
aws secretsmanager create-secret \ --name argocd/github-token \ --secret-string '{"username":"git","password":"ghp_xxxxxxxxxxxx"}' -
确保 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。 -
配置 Argo CD,使其从 Secrets Manager 中获取凭证。有关将 Secrets Manager 中的机密信息同步为 Argo CD 可引用的 Kubernetes 机密的方法,请参阅 Argo CD 文档中的机密管理
章节。 -
创建一个引用该机密 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 配置存储库访问权限的更多信息,请参阅配置存储库访问权限。