使用 AWS Secrets Manager 管理應用程式秘密 - Amazon EKS

協助改進此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS Secrets Manager 管理應用程式秘密

AWS Secrets Manager 可協助您在整個生命週期中管理、存取和輪換登入資料、API 金鑰和其他秘密。使用 Secrets Manager,您可以保護和管理用來存取 AWS、第三方服務和內部部署中資源的秘密。如需詳細資訊,請參閱 AWS Secrets Manager 使用者指南

使用適用於 Argo CD 的 EKS 功能時,Secrets Manager 提供安全的方式來存放和擷取 Git 儲存庫登入資料,而無需在 Argo CD 組態和資源中硬式編碼敏感資料。此整合特別適用於管理私有儲存庫存取權杖,以及 Argo CD 用來從 Git 儲存庫同步應用程式的 SSH 金鑰。

搭配 Argo CD 使用 AWS Secrets Manager

使用適用於 Argo CD 的 EKS 功能時,您可以將 Git 儲存庫登入資料存放在 Secrets Manager 中,並設定 Argo CD 進行擷取。這種方法比直接將登入資料存放在 Argo CD 組態中或使用長期個人存取字符更安全。

先決條件

  • 已啟用 Argo CD 功能的 Amazon EKS 叢集

  • 存放在 AWS 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" } } } ] }
    注意

    KMS 解密許可是必要的,因為 Secrets Manager 會使用 AWS KMS 加密所有秘密。條件會將解密限制為僅具有 argocd/字首的秘密。如果您使用 Secrets Manager 的預設 AWS 受管金鑰,則此許可已足夠。對於客戶受管 KMS 金鑰,請使用您的特定金鑰 ARN 更新 Resource 欄位。

  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 設定儲存庫存取權的詳細資訊,請參閱 設定儲存庫存取