Amazon ECS で Secrets Manager シークレットをプログラムで取得する - Amazon Elastic Container Service

Amazon ECS で Secrets Manager シークレットをプログラムで取得する

Secrets Manager は、データベースの認証情報、API キー、その他のシークレットに対して、そのライフサイクル全体でローテーションと管理および取得を行うために使用します。

アプリケーション内でプレーンテキストの機密情報をハードコーディングする代わりに、Secrets Manager を使用して機密データを保存することができます。

機密データの取得にはこの方法が推奨されます。これにより、以後、Secrets Manager のシークレットが更新された場合には、アプリケーションが自動的に最新バージョンのシークレットを取得するようになります。

Secrets Manager でシークレットを作成します。Secrets Manager シークレットの作成後、アプリケーションコードを更新して、そのシークレットを取得します。

Secrets Manager で機密データの保護を行う前に、以下の考慮事項を確認してください。

  • CreateSecret API の SecretString パラメータで作成されたシークレットであるテキストデータを格納するシークレット のみがサポートされます。CreateSecret API の SecretBinary パラメータで作成されたシークレットであるバイナリデータを格納するシークレットはサポートされていません。

  • セキュリティ制御を強化するために、インターフェイス VPC エンドポイントを使用します。Secrets Manager 用に、インターフェイス VPC エンドポイントを作成する必要があります。VPC エンドポイントの詳細については、「AWS Secrets Manager ユーザーガイド」の「VPC エンドポイントの作成」を参照してください。

  • タスクで使用する VPC は、DNS 解決を使用している必要があります。

必要な IAM 許可

この機能を使用するには、Amazon ECS タスクロールを持っていて、タスク定義でそのロールを参照する必要があります。詳細については、「Amazon ECS タスクの IAM ロール」を参照してください。

作成した Secrets Manager シークレットにアクセスできるようにするには、タスクの実行ロールに対し、以下のアクセス許可を手動により追加します。アクセス許可の管理の詳細については、「IAM ユーザーガイド」の「IAM ID のアクセス許可の追加および削除」を参照してください。

  • secretsmanager:GetSecretValue – Secrets Manager シークレットを参照する場合に必須です。Secrets Manager からシークレットを取得するための許可を追加します。

次のポリシーの例では、必須のアクセス許可を追加します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" ] } ] }

Secrets Manager シークレットを作成する

Secrets Manager コンソールを使用して、機密データ用のシークレットを作成できます。シークレットの作成方法の詳細については、「AWS Secrets Manager ユーザーガイド」の「AWS Secrets Manager シークレットを作成する」を参照してください。

Secrets Manager シークレットをプログラムにより取得するようにアプリケーションを更新する

アプリケーションから直接 Secrets Manager API を呼び出し、シークレットを取得することができます。詳細については、「AWS Secrets Manager ユーザーガイド」の「AWS Secrets Manager からのシークレットの取得」を参照してください。

AWS Secrets Manager に保存されている機密データを取得するには、「AWS SDK コードサンプルコードライブラリ」の「AWS SDK を使用する AWS Secrets Manager のコードサンプル」を参照してください。