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

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

Systems Manager Parameter Store により、シークレットの安全な保管および管理ができます。パスワード、データベース文字列、EC2 インスタンス ID、AMI ID、ライセンスコードなどのデータをパラメータ値として保存できます。値はプレーンテキストまたは暗号化されたデータとして保存できます。

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

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

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

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

  • テキストデータを格納するシークレットのみがサポートされます。バイナリデータを格納するシークレットはサポートされません。

  • セキュリティ制御を強化するために、インターフェイス VPC エンドポイントを使用します。

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

必要な IAM 許可

この機能を使用するには、Amazon ECS タスクロールを持っていて、タスク定義でそのロールを参照する必要があります。これにより、コンテナエージェントは、必要な Systems Manager リソースをプルできるようになります。詳細については、「Amazon ECS タスクの IAM ロール」を参照してください。

重要

EC2 起動タイプを使用するタスクの場合、この機能を使用するには ECS エージェント設定変数 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true を使用する必要があります。コンテナインスタンスの作成時に ./etc/ecs/ecs.config ファイルに追加するか、既存のインスタンスに追加して ECS エージェントを再起動できます。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。

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

  • ssm:GetParameters – Systems Manager Parameter Store のパラメータをタスク定義で参照している場合は必須です。Systems Manager パラメータを取得するための許可を追加します。

  • secretsmanager:GetSecretValue – Secrets Manager シークレットをユーザーが直接参照している、あるいは、Systems Manager Parameter Store のパラメータが、タスク定義で Secrets Manager シークレットを参照している場合は必須です。Secrets Manager からシークレットを取得するための許可を追加します。

  • kms:Decrypt – シークレットが、デフォルトのキーではなく、カスタマーマネージドのキーを使用している場合にのみ必須です。そのカスタムキーの ARN はリソースとして追加されている必要があります。カスタマーマネージドキーを復号するための許可を追加します。

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:region:aws_account_id:parameter/parameter_name", "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name", "arn:aws:kms:region:aws_account_id:key/key_id" ] } ] }

パラメータを作成する

Systems Manager コンソールを使用すると、機密データ用に Systems Manager Parameter Store のパラメータを作成できます。詳細については、「AWS Systems Manager ユーザーガイド」の「Systems Manager パラメータを作成する (コンソール)」または「Systems Manager パラメータを作成する (AWS CLI)」を参照してください。

Systems Manager Parameter Store のシークレットをプログラムで取得するようにアプリケーションを更新する

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