Systems Manager Parameter Store を使用して機密データを指定する
AWS Batch を使用すると、AWS Systems Manager パラメータストアのパラメータに機密データを保存してコンテナの定義でそれを参照することによって、コンテナに機密データを挿入できます。
トピック
Systems Manager Parameter Store を使用した機密データの指定に関する考慮事項
Systems Manager パラメータストアのパラメータを使用してコンテナの機密データを指定する場合は、以下を考慮する必要があります。
-
この機能では、コンテナインスタンスに、バージョン 1.23.0 以降のコンテナエージェントが必要です。ただし、最新のコンテナエージェントのバージョンを使用することをお勧めします。エージェントのバージョンの確認と最新バージョンへの更新の詳細については、Amazon Elastic Container Service デベロッパーガイドのAmazon ECS コンテナエージェントの更新を参照してください。
-
機密データは、コンテナが最初に開始されたときにジョブのコンテナに挿入されます。シークレットまたは Parameter Store パラメータが後で更新またはローテーションされたときに、コンテナは更新された値を自動的に受け取りません。更新されたシークレットを使用して新しいジョブを強制的に起動するには、新しいジョブを起動する必要があります。
AWS Batch シークレットで必須の IAM アクセス許可
この機能を使用するには、実行ロールを持っていて、ジョブ定義でそのロールを参照する必要があります。これにより、Amazon ECS コンテナエージェントは必要な AWS Systems Manager リソースをプルすることを許可されます。詳細については、AWS Batch IAM 実行ロールを参照してください。
作成した AWS Systems Manager パラメータストア パラメータにアクセスできるように、実行ロールに以下のアクセス許可をインラインポリシーとして手動で追加する必要があります。詳細については、IAM ユーザーガイドのIAM ポリシーの追加と削除を参照してください。
-
ssm:GetParameters— Systems Managerパラメータストアのパラメータをタスク定義で参照する場合は必須です。 -
secretsmanager:GetSecretValue— Secrets Manager シークレットを直接参照するか、Systems Manager パラメータストアのパラメータがタスク定義で Secrets Manager シークレットを参照している場合は必須です。 -
kms:Decrypt– シークレットでカスタムの KMS キーを使用し、デフォルトのキーを使用しない場合にのみ必須です。そのカスタムキーの ARN はリソースとして追加されている必要があります。
次の例のインラインポリシーでは必須許可を追加しています。
環境変数として機密データを挿入する
コンテナの定義内で、コンテナに設定する環境変数の名前と、コンテナに渡す機密データが含まれている Systems Manager パラメータストアのパラメータの ARN 全体を使用して secrets を指定できます。
以下に示すのは、Systems Manager パラメータストアのパラメータを参照するときの形式を示すタスク定義のスニペットです。起動するタスクと同じリージョンに、Systems Manager パラメータストアのパラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。
{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }
ログ設定に機密データを挿入する
コンテナの定義内で logConfiguration を指定するときに、コンテナに設定するログドライバーオプションの名前と、コンテナに渡す機密データが含まれている Systems Manager パラメータストアのパラメータの ARN 全体を使用して secretOptions を指定できます。
重要
起動するタスクと同じリージョンに、Systems Manager パラメータストアのパラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。
以下に示すのは、Systems Manager パラメータストアのパラメータを参照するときの形式を示すタスク定義のスニペットです。
{ "containerProperties": [{ "logConfiguration": [{ "logDriver": "fluentd", "options": { "tag": "fluentd demo" }, "secretOptions": [{ "name": "fluentd-address", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }] }
AWS Systems Manager Parameter Store パラメータを作成する
Systems Manager コンソールを使用して、機密データ用の AWS Systems Manager パラメータストアのパラメータを作成できます。詳細については、AWS Systems Managerユーザーガイドのコマンドでパラメータを作成して使用する (コンソール)を参照してください。
パラメータストアのパラメータを作成するには
-
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 -
ナビゲーションペインで パラメータストア、パラメータの作成 の順に選択します。
-
名前 に、階層とパラメータ名を入力します。例えば、
test/database_passwordと入力します。 -
Description] (説明) に説明を入力します (省略可能)。
-
Type] (タイプ) として、String]、StringList]、SecureString] のいずれかを選択します。
注記
-
SecureString] を選択すると、KMS Key ID] フィールドが表示されます。KMS キー ID、KMS キー ARN、エイリアス名、またはエイリアス ARN が指定されていない場合、システムは
alias/aws/ssmを使用します。これは、Systems Manager 用のデフォルトの KMS キーです。このキーを使用しない場合は、カスタムキーを選択します。詳細については、AWS Systems ManagerユーザーガイドのSecure String パラメータを使用するを参照してください。 -
コンソールで
key-idパラメータにカスタム KMS キーエイリアス名またはエイリアス ARN のいずれかを指定して Secure String パラメータを作成する場合は、そのエイリアスの前にプレフィックスalias/を指定する必要があります。ARN の例を次に示します。arn:aws:kms:us-east-2:123456789012:alias/MyAliasNameエイリアス名の例を次に示します。
alias/MyAliasName
-
-
Value] (値) に値を入力します。例えば、
MyFirstParameterです。SecureString] を選択している場合、入力した値は必ずマスクされます。 -
パラメータの作成 を選択します。