AWS Systems Manager Parameter Store
AWS Systems Manager の一機能である Parameter Store は、設定データ管理と機密管理のための安全な階層型ストレージを提供します。パスワード、データベース文字列、Amazon Machine Image (AMI) ID、ライセンスコードなどのデータをパラメータ値として保存することができます。値はプレーンテキストまたは暗号化されたデータとして保存できます。パラメータの作成時に指定した一意の名前を使用して、スクリプト、コマンド、SSM ドキュメント、設定およびオートメーションワークフローの Systems Manager パラメータを参照できます。Parameter Store の使用を開始するには、Systems Manager コンソール
Parameter Store も、Secrets Manager と統合されています。Parameter Store パラメータへの参照を既にサポートしている他の AWS のサービスを使用する際、Secrets Manager のシークレットを取得できます。詳しくは、「Parameter Store パラメータからの AWS Secrets Manager シークレットの参照」を参照してください。
注記
パスワードローテーションのライフサイクルを実装するには、 を使用しますAWS Secrets Manager Secrets Manager を使用すると、データベースの認証情報、API キー、その他のシークレットをそのライフサイクルを通してローテーション、管理、取得できます。詳細については、AWS Secrets Managerユーザーガイドの「AWS Secrets Manager とは」を参照してください。
Parameter Store はどのように組織にとってメリットになりますか?
Parameter Store は、以下の利点を提供します。
-
セキュアでスケーラブルな、ホストされたシークレット管理サービスを使用します (管理が必要なサーバーはありません)。
-
コードからデータを分離してセキュリティ体制を改善します。
-
設定データと暗号化された文字列を階層内に保存し、バージョンを追跡します。
-
きめ細かいレベルでアクセスの制御と監査を行います。
-
Parameter Store は AWS リージョン で複数のアベイラビリティーゾーンでホストされるため、パラメータは確実に保存してください。
Parameter Store はどのようなユーザーに適していますか?
-
設定データを一元的に管理したいすべての AWS のお客様。
-
さまざまなログインや参照ストリームを保存したいソフトウェアデベロッパー。
-
シークレットとパスワードが変更された場合、または変更されない場合に通知を受信する管理者。
Parameter Store の特徴は何ですか?
-
変更通知
パラメータとパラメータポリシーの両方について、変更通知を設定し、自動化されたアクションを呼び出すことができます。詳しくは、「Parameter Store イベントに基づき、通知を設定またはアクションをトリガーする」を参照してください。
-
パラメータの整理
パラメータに個別にタグを付けると、そのタグに基づいてパラメータを識別できます。例えば、特定の環境または部門のパラメータをタグ付けできます。詳しくは、「Systems Manager パラメータにタグをつける」を参照してください。
-
ラベルのバージョン
ラベルを作成することで、パラメータのバージョンにエイリアスを関連付けることができます。ラベルは、バージョンが複数ある場合にパラメータバージョンの用途を覚えておくのに役立ちます。
-
[Data validation] (データ検証)
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを指すパラメータを作成すると、Parameter Store がこれらのパラメータを検証して、期待されるリソースタイプを参照していること、リソースが存在すること、および顧客にリソースを使用するアクセス許可があることを確認します。例えば、
aws:ec2:image
データ型の値として Amazon Machine Image (AMI) ID を持つパラメータを作成すると、Parameter Store で非同期検証オペレーションが実行され、パラメータ値が AMI ID の書式設定要件を満たし、指定された AMI を AWS アカウント で使用できることが確認されます。 -
シークレットの参照
Parameter Store は AWS Secrets Manager と統合されたため、Parameter Store パラメータへの参照がすでにサポートされている他の AWS のサービスを使用する際に Secrets Manager のシークレットを取得できます。
-
他のアカウントとパラメータを共有
オプションで、設定データを 1 つの AWS アカウント に一元管理し、パラメータにアクセスする必要のある他のアカウントとパラメータを共有できます。
-
他の AWS のサービスからアクセス可能
他の Systems Manager 機能および AWS のサービスで Parameter Store パラメータを使用して、中央のストアからシークレットおよび設定データを取得できます。パラメータは、AWS Systems Manager の機能である Run Command、 Automation、State Manager などの Systems Manager 機能で動作します また、次のような他の多くの AWS のサービスでパラメータを参照することもできます。
-
Amazon Elastic Compute Cloud (Amazon EC2)
-
Amazon Elastic Container Service (Amazon ECS)
-
AWS Secrets Manager
-
AWS Lambda
-
AWS CloudFormation
-
AWS CodeBuild
-
AWS CodePipeline
-
AWS CodeDeploy
-
-
他の AWS のサービスとの統合
暗号化、通知、モニタリング、監査のために、以下の AWS のサービスとの統合を設定します。
-
AWS Key Management Service (AWS KMS)
-
Amazon Simple Notification Service (Amazon SNS)
-
Amazon CloudWatch: 詳細については、「パラメータおよびパラメータポリシー用の EventBridge ルールを設定する」を参照してください。
-
Amazon EventBridge: 詳細については、「Amazon SNS 通知を使用した Systems Manager のステータス変更のモニタリング」および「リファレンス: Systems Manager 用の Amazon EventBridge イベントパターンとタイプ」を参照してください。
-
AWS CloudTrail詳細については、「」を参照してください。AWS Systems Manager による AWS CloudTrail API コールのログ記録
-
パラメータとは何ですか?
Parameter Store パラメータとは、テキストのブロック、名前のリスト、パスワード、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
データ型を使用してこれらのパラメータを作成します。
重要
String
パラメータまたは StringList
パラメータに機密データを保存しないでください。機密データを暗号化したままにする場合は、SecureString
パラメータタイプのみを使用します。
詳細については、「」を参照してくださいSecureString パラメータを作成する (AWS CLI)
次のシナリオでは SecureString
パラメータを使用することをお勧めします。
-
コマンド、関数、エージェントログ、または CloudTrail ログに値をプレーンテキストとして公開せずに、すべての AWS のサービスでデータ/パラメータを使用する。
-
機密データへのユーザーのアクセスを制御する。
-
機密データへのアクセスを監査する (CloudTrail)。
-
機密データの暗号化と独自の暗号化キーがアクセスの管理に必要である。
重要
SecureString
パラメータの値のみが暗号化されます。パラメータ名、説明などのプロパティは暗号化されません。
SecureString
パラメータタイプは、パスワード、アプリケーションシークレット、機密設定データ、保護するその他のタイプのデータなど、暗号化するテキストデータに使用できます。SecureString
データは、AWS KMS キーを使用して暗号化および復号されます。AWS が提供するデフォルトの KMS キーを使用するか、独自の AWS KMS key を作成して使用することができます。(SecureString
パラメータへのユーザーアクセスを制限する場合は自分の AWS KMS key を使用してください。 詳細については、「AWS のデフォルトキーとカスタマーマネージドキーを使用するための IAM アクセス権限」を参照してください。)
他の AWS のサービスと SecureString
パラメータを使用することもできます。次の例では、GetParameters API を使用して Lambda 関数で SecureString
パラメータを取得します。
from __future__ import print_function 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
- 詳細情報