

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**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)を参照してください。

EKS Capability for Argo CD を使用する場合、Secrets Manager は、Argo CD 設定とリソースで機密データをハードコーディングすることなく、Git リポジトリ認証情報を保存および取得するための安全な方法を提供します。この統合は、Argo CD が Git リポジトリからアプリケーションを同期するために使用する、プライベートリポジトリのアクセストークンと SSH キーを管理する場合に特に便利です。

## Argo CD で AWS Secrets Manager を使用する
<a name="integration-secrets-manager-use"></a>

EKS Capability for Argo CD を使用する場合、Git リポジトリ認証情報を Secrets Manager に保存し、それらを取得するように Argo CD を設定できます。このアプローチは、認証情報を Argo CD 設定に直接保存したり、存続期間の長い個人用アクセストークンを使用したりするよりも安全です。

 **前提条件** 
+ Amazon EKS クラスターで Argo CD 機能が有効になっていること
+ Git リポジトリ認証情報が AWS Secrets Manager に保存されていること
+ Argo CD が Secrets Manager にアクセスするように IAM アクセス許可が設定されていること

 **リポジトリ認証情報に Secrets Manager を使用するように Argo CD を設定するには** 

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"
           }
         }
       }
     ]
   }
   ```
**注記**  
Secrets Manager は AWS KMS を使用してすべてのシークレットを暗号化するため、KMS 復号アクセス許可が必要です。この条件により、復号は `argocd/` プレフィックスを持つシークレットのみに制限されます。Secrets Manager でデフォルトの AWS マネージドキーを使用している場合、このアクセス許可で十分です。カスタマーマネージド KMS キーの場合は、使用しているキーの ARN で `Resource` フィールドを更新します。

1. Secrets Manager の認証情報を使用するように Argo CD を設定します。Secrets Manager から Argo CD が参照できる Kubernetes シークレットにシークレットを同期する方法の詳細については、Argo CD ドキュメントの「[Secret Management](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)」を参照してください。