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
}}'