AWS Systems Manager パラメータストア - AWS Systems Manager

AWS Systems Manager パラメータストア

AWS Systems Manager パラメータストア は、設定データ管理と機密管理のための安全な階層型ストレージを提供します。パスワード、データベース文字列、Amazon マシンイメージ (AMI) ID、ライセンスコードなどのデータをパラメータ値として保存できます。値はプレーンテキストまたは暗号化されたデータとして保存できます。パラメータの作成時に指定した一意の名前を使用して、スクリプト、コマンド、SSM ドキュメント、設定および自動化ワークフローの Systems Manager パラメータを参照できます。

注記

パスワードのローテーションライフサイクルを実装するには、AWS Secrets Manager を使用します。Secrets Manager では、データベースの認証情報、API キー、およびその他のシークレットをライフサイクル全体にわたり簡単に更新、管理、取得できます。詳細については、AWS Secrets Manager ユーザーガイドの「AWS Secrets Manager とは」を参照してください。

パラメータストア はどのように組織にとってメリットになりますか?

パラメータストア は、以下の利点を提供します。

  • セキュアでスケーラブルな、ホストされたシークレット管理サービスを使用できます (管理が必要なサーバーはありません)。

  • コードからデータを分離してセキュリティ体制を改善します。

  • 設定データと暗号化された文字列を階層内に保存し、バージョンを追跡します。

  • きめ細かいレベルでアクセスの制御と監査を行います。

パラメータストア はどのようなユーザーに適していますか?

  • 設定データを一元的に管理したいすべての AWS 顧客。

  • さまざまなログインや参照ストリームを簡単に保存したいソフトウェアデベロッパー。

  • シークレットとパスワードが変更された場合や変更が加えられた場合の通知を希望する管理者。

パラメータストア の特徴は何ですか?

  • 変更通知

    パラメータとパラメータポリシーの両方について、変更通知を設定し、自動化されたアクションをトリガーすることができます。詳細については、「パラメータストア イベントに基づき、通知を設定またはアクションをトリガーする」を参照してください。

  • アクセスの整理と制御

    パラメータに個別にタグを付けると、そのタグに基づいてパラメータをすばやく識別できます。たとえば、特定の環境、部門、ユーザー、グループ、または期間でパラメータをタグ付けできます。ユーザーやグループがアクセスできるタグを指定する IAM ポリシーを作成することで、パラメータへのアクセスを制限することもできます。詳細については、「Systems Manager パラメータのタグ付け」を参照してください。

  • ラベルのバージョン

    ラベルを作成することで、パラメータのバージョンにエイリアスを関連付けることができます。ラベルは、バージョンが複数ある場合にパラメータバージョンの用途を覚えておくのに役立ちます。

  • データ検証

    Amazon EC2 インスタンスを指すパラメータを作成すると、パラメータストア がこれらのパラメータを検証して、期待されるリソースタイプを参照していること、リソースが存在すること、および顧客にリソースを使用するアクセス許可があることを確認します。たとえば、aws:ec2:image データ型の値として Amazon マシンイメージ (AMI) ID を持つパラメータを作成すると、パラメータストア で非同期検証オペレーションが実行され、パラメータ値が AMI ID のフォーマット要件を満たし、指定された AMI が AWS アカウントで使用可能であることが確認されます。

  • シークレットの参照

    パラメータストア は AWS Secrets Manager と統合されたため、パラメータストア パラメータへの参照がすでにサポートされている AWS の他のサービスを使用する際に Secrets Manager のシークレットを取得できます。

  • 他の AWS サービスからアクセス可能

    他の Systems Manager 機能および AWS のサービスで パラメータストア パラメータを使用して、中央のストアからシークレットおよび設定データを取得できます。パラメータは Run Command、ステートマネージャー、Automation などの 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 のサービスとの統合を設定します。

パラメータとは何ですか?

パラメータストア パラメータとは、テキストのブロック、名前のリスト、パスワード、Amazon マシンイメージ (AMI) ID、ライセンスキーなど、パラメータストア に保存されるデータのことです。スクリプト、コマンド、SSM ドキュメントで、このデータを一元的かつ安全に参照できます。

パラメータを参照するときは、以下の規則を使用してパラメータ名を指定します。

{{ssm:parameter-name}}

注記

パラメータは、他のパラメータの値で参照またはネストすることはできません。パラメータ値に {{}} または {{ssm:parameter-name}} を含めることはできません。

パラメータストア では、StringStringListSecureString という 3 タイプのパラメータがサポートされています。

1 つの例外を除いて、パラメータを作成または更新するときは、パラメータ値をプレーンテキストとして入力します。入力したテキストは パラメータストア によって検証されません。ただし、String パラメータの場合、データ型を aws:ec2:image として指定できます。パラメータストア によって、入力した値が 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 パラメータを使用することをお勧めします。

  • コマンド、関数、エージェントログ、または AWS CloudTrail ログに値をプレーンテキストとして公開せずに、すべての AWS のサービスでデータ/パラメータを使用する。

  • 機密データへのユーザーのアクセスを制御する。

  • 機密データへのアクセスを監査する (AWS CloudTrail)。

  • 機密データの暗号化と独自の暗号化キーがアクセスの管理に必要である。

重要

SecureString パラメータののみが暗号化されます。パラメータ名、説明などのプロパティは暗号化されません。

SecureString パラメータタイプは、パスワード、アプリケーションシークレット、機密設定データ、保護する必要があるその他のタイプのデータなど、暗号化するテキストデータに使用できます。SecureString データは、AWS Key Management Service (KMS) キーを使用して暗号化および復号化されます。AWS が提供するデフォルトの KMS キーを使用するか、独自のカスタマーマスターキー (CMK) を作成して使用することができます。(SecureString パラメータへのユーザーアクセスを制限する必要がある場合は、ユーザー独自の CMK を使用します。詳細については、「AWS のデフォルトキーとカスタマーマネージドキーを使用するための IAM アクセス許可」を参照してください。

他の AWS サービスと SecureString パラメータを使用することもできます。次の例では、GetParameters API を使用して AWS 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 Secrets Manager にも統合されています。パラメータストア パラメータへのリファレンスがすでにサポートされている他の AWS のサービスを使用する際に Secrets Manager シークレットを取得できます。詳細については、このガイドの「パラメータストア パラメータからの AWS Secrets Manager シークレットの参照」を参照してください。

AWS KMS の暗号化と料金

パラメータを作成するときに SecureString パラメータ型を選択すると、Systems Manager は AWS Key Management Service (KMS) を使用してパラメータ値を暗号化します。

パラメータストア では、SecureString パラメータの作成には料金はかかりませんが、AWS Key Management Service 暗号化の使用には料金がかかります。詳細については、「AWS Key Management Service 料金表」を参照してください。

AWS 管理およびカスタマー管理の CMK の詳細については、AWS Key Management Service Developer Guide で、「AWS Key Management Service の概念」を参照してください。パラメータストア および KMS 暗号化の詳細については、「AWS Systems Manager パラメータストア で AWS KMS を使用する方法」を参照してください。

注記

AWS マネージド CMK を表示するには、AWS KMS DescribeKey オペレーションを使用します。AWS CLI この例では DescribeKey 、を使用して AWS マネージド CMK を表示します。

aws kms describe-key --key-id alias/aws/ssm

関連トピック

SecureString パラメータの作成方法と使用方法の例については、「SecureString パラメータを作成し、インスタンスをドメイン (PowerShell) に結合する」を参照してください。他の AWS のサービスで Systems Manager パラメータを使用する方法の詳細については、以下のブログ記事を参照してください。