

 **協助改進此頁面** 

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

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

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

# 使用 AWS Secrets Manager 管理應用程式秘密
<a name="integration-secrets-manager"></a>

 [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) 可協助您在整個生命週期中管理、存取和輪換登入資料、API 金鑰和其他秘密。使用 Secrets Manager，您可以保護和管理用來存取 AWS、第三方服務和內部部署中資源的秘密。如需詳細資訊，請參閱 [AWS Secrets Manager 使用者指南](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)。

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

## 搭配 Argo CD 使用 AWS Secrets Manager
<a name="integration-secrets-manager-use"></a>

使用適用於 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"}'
   ```

1. 確保 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` 欄位。

1. 設定 Argo CD 以使用 Secrets Manager 的登入資料。如需有關將秘密從 Secrets Manager 同步到 Argo CD 可以參考的 Kubernetes 秘密的資訊，請參閱 Argo CD 文件中的[秘密管理](https://argo-cd.readthedocs.io/en/stable/operator-manual/secret-management/)。

1. 建立參考秘密 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 設定儲存庫存取權的詳細資訊，請參閱 [設定儲存庫存取](argocd-configure-repositories.md)。