Systems Manager Parameter Store から SecureString 値を取得する - AWS CloudFormation

Systems Manager Parameter Store から SecureString 値を取得する

CloudFormation では、機密データを「SecureString」として AWS Systems Manager Parameter Store に保存することで、パスワードやライセンスキーなどの機密データをテンプレートで直接公開することなく使用できます。Parameter Store の概要については、「AWS Systems Manager ユーザーガイド」の「AWS Systems Manager Parameter Store」を参照してください。

テンプレートで Parameter Store の Secure String を使用するには、ssm-secure 動的参照を使用します。CloudFormation が実際の SecureString 値を保存することはありません。代わりに、SecureString のプレーンテキストパラメータ名を含むリテラルな動的参照のみを保存します。

スタックの作成時または更新時に、CloudFormation は、実際の値を公開することなく、必要に応じて SecureString 値にアクセスします。SecureString は、ssm-secure の動的参照パターンをサポートするリソースプロパティのためにのみ使用できます。詳細については、「Secure String のための動的なパラメータパターンをサポートするリソース」を参照してください。

CloudFormation は、どの API コールでも SecureString の実際のパラメータ値を返しません。リテラル動的参照のみを返します。変更セットを使用して変更を比較する場合、CloudFormation は、リテラルの動的参照文字列のみを比較します。実際の SecureString の値を解決して比較することはありません。

ssm-secure 動的参照を使用する場合、留意すべき重要な点がいくつかあります。

  • CloudFormation は、他の AWS アカウント から Parameter Store 値にアクセスできません。

  • CloudFormation は、動的参照での Systems Manager パラメータラベルまたはパブリックパラメータの使用をサポートしません。

  • cn-north-1 および cn-northwest-1 リージョンでは、SecureString は Systems Manager によってサポートされていません。

  • ssm-secure などの安全な値の動的参照は、現在カスタムリソースではサポートされていません。

  • CloudFormation がスタックの更新をロールバックする必要があり、以前に指定したバージョンの SecureString パラメータが利用できなくなっている場合、ロールバックオペレーションは失敗します。このような場合、次の 2 つのオプションがあります。

    • リソースをスキップするには CONTINUE_UPDATE_ROLLBACK を使用してください。

    • Systems Manager パラメータストアで Secure String パラメータを再作成し、パラメータのバージョンがテンプレートで使用されているバージョンに達するまでそれを更新します。その後、リソースをスキップせずに CONTINUE_UPDATE_ROLLBACK を使用します。

Secure String のための動的なパラメータパターンをサポートするリソース

ssm-secure の動的参照パターンをサポートするリソースには、以下のものがあります。

リファレンスパターン

CloudFormation テンプレートで Systems Manager Parameter Store の Secure String 値を参照するには、次の ssm-secure 参照パターンを使用します。

{{resolve:ssm-secure:parameter-name:version}}

参照は、parameter-name と version について、以下の正規表現パターンに従う必要があります。

{{resolve:ssm-secure:[a-zA-Z0-9_.\-/]+(:\d+)?}}
parameter-name

パラメータストア内のパラメータの名前。パラメータ名では大文字と小文字が区別されます

必須。

version

使用するパラメータのバージョンを指定する整数。正確なバージョンを指定しない場合、CloudFormation は、スタックを作成または更新するたびに最新バージョンのパラメータを使用します。詳細については、「AWS Systems Manager ユーザーガイド」の「パラメータバージョンの使用」を参照してください。

オプション。

次の例では、ssm-secure の動的参照を使用して、IAM ユーザーのパスワードを Parameter Store に格納されている SecureString に設定します。指定されているとおり、CloudFormation はスタック操作および変更セット操作に IAMUserPassword パラメータのバージョン 10 を使用します。

JSON

"MyIAMUser": { "Type": "AWS::IAM::User", "Properties": { "UserName": "MyUserName", "LoginProfile": { "Password": "{{resolve:ssm-secure:IAMUserPassword:10}}" } } }

YAML

MyIAMUser: Type: AWS::IAM::User Properties: UserName: 'MyUserName' LoginProfile: Password: '{{resolve:ssm-secure:IAMUserPassword:10}}'