パラメータタイプを理解する
パラメータとは、テキストのブロック、名前のリスト、パスワード、AMI ID、ライセンスキーなど、Parameter Store に保存されるデータのことです。スクリプト、コマンド、SSM ドキュメントで、このデータを一元的かつ安全に参照できます。
パラメータを参照するときは、以下の規則を使用してパラメータ名を指定します。
{{ssm:}}parameter-name
注記
パラメータは、他のパラメータの値で参照またはネストすることはできません。パラメータ値に {{}} または {{ssm: を含めることはできません。parameter-name}}
Parameter Store では、String、StringList、SecureString という 3 タイプのパラメータがサポートされています。
1 つの例外を除いて、パラメータを作成または更新するときは、パラメータ値をプレーンテキストとして入力します。入力したテキストは Parameter Store によって検証されません。ただし、String パラメータの場合、データ型を aws:ec2:image として指定できます。Parameter Store によって、入力した値が Amazon EC2 AMI の適切な形式 (ami-12345abcdeEXAMPLE など) であることが検証されます。
パラメータタイプ: 文字列
デフォルトでは、String パラメータの値はユーザーが入力したテキストのブロックで構成されます。以下に例を示します。
-
abc123 -
Example Corp -
<img src="images/bannerImage1.png"/>
パラメータタイプ: StringList
StringList パラメータの値には、以下の例に示すように、値のカンマ区切りリストを含めます。
Monday,Wednesday,Friday
CSV,TSV,CLF,ELF,JSON
パラメータタイプ: SecureString
SecureString パラメータの値は、セキュアな方法で保存および参照する必要がある機密データです。軽量シークレットやライセンスキーなど、ユーザーがプレーンテキストで変更または参照しないデータがある場合は、SecureString データ型を使用してこれらのパラメータを作成します。
次のシナリオでは SecureString パラメータを使用することをお勧めします。
-
コマンド、関数、エージェントログ、または CloudTrail ログに値をプレーンテキストとして公開せずに、すべての AWS のサービスでデータ/パラメータを使用する。
-
機密データへのユーザーのアクセスを制御する。
-
機密データへのアクセスを監査する (CloudTrail)。
-
機密データの暗号化と独自の暗号化キーがアクセスの管理に必要である。
SecureString パラメータタイプは、ローテーションを必要としない軽量シークレット、機密設定データ、保護するその他のタイプのデータなど、暗号化するテキストデータに使用できます。SecureString データは、AWS KMS キーを使用して暗号化および復号されます。AWS が提供するデフォルトの KMS キーを使用するか、独自の AWS KMS key を作成して使用することができます。(SecureString パラメータへのユーザーアクセスを制限する場合は自分の AWS KMS key を使用してください。 詳細については、「AWS のデフォルトキーとカスタマーマネージドキーを使用するための IAM アクセス権限」を参照してください。)
重要
次の重要な情報に注意してください。
自動ローテーション、クロスアカウントアクセス、または詳細な監査ログ記録を必要とする認証情報を管理する場合は、AWS Secrets Manager を使用することをお勧めします。Secrets Manager は、データベース認証情報、API キー、サポートされているサードパーティ製ソフトウェア提供シークレットなどのシークレットを管理するために構築されています。詳細については、AWS Secrets Manager ユーザーガイド の「What is AWS Secrets Manager? ( とは?)」 を参照してください。
StringまたはStringListパラメータに機密データを保存しないでください。機密データを暗号化したままにする場合は、SecureStringパラメータタイプのみを使用します。SecureStringパラメータの値のみが暗号化されます。パラメータ名、説明などのプロパティは暗号化されません。
他の AWS のサービスと SecureString パラメータを使用することもできます。次の例では、GetParameters API を使用して Lambda 関数で SecureString パラメータを取得します。
import json import boto3 ssm = boto3.client('ssm', 'us-east-2') def get_parameters(): response = ssm.get_parameters( Names=['LambdaSecureString'],WithDecryption=True ) for parameter in response['Parameters']: return parameter['Value'] def lambda_handler(event, context): value = get_parameters() print("value1 = " + value) return value # Echo back the first key value
AWS KMS の暗号化と料金
パラメータを作成するときに SecureString パラメータ型を選択すると、Systems Manager は AWS KMS を使用してパラメータ値を暗号化します。
重要
Parameter Store では、対称暗号化 KMS キーのみをサポートしています。非対称暗号化 KMS キーを使用してパラメータを暗号化することはできません。KMS キーが対称か非対称かを判断する方法については、「AWS Key Management Service デベロッパーガイド」の「対称キーと非対称 KMS キーの識別」を参照してください。
Parameter Store では、SecureString パラメータの作成には料金はかかりませんが、AWS KMS 暗号化の使用には料金がかかります。詳細については、「AWS Key Management Service の料金表
AWS マネージドキー およびカスタマーマネージドキーの詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS Key Management Service の概念」を参照してください。Parameter Store および AWS KMS の暗号化の詳細については、「AWS KMS で AWS Systems ManagerParameter Store を使用する方法」を参照してください。
注記
AWS マネージドキー を表示するには、AWS KMS DescribeKey オペレーションを使用します。この AWS Command Line Interface (AWS CLI) の例では、DescribeKey を使用して AWS マネージドキー を表示します。
aws kms describe-key --key-id alias/aws/ssm