AWS Systems Manager
ユーザーガイド

Secure String パラメータについて

Secure String パラメータは、セキュアな方法で保存および参照する必要がある機密データです。パスワードやライセンスキーなど、ユーザーがプレーンテキストで変更または参照しないデータがある場合は、SecureString データ型を使用してこれらのパラメータを作成します。次のシナリオでは Secure String パラメータを使用することをお勧めします。

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

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

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

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

パラメータを作成するときには、SecureString データ型を選択した場合は、パラメータストア は AWS Key Management Service (KMS) カスタマーマスターキー (CMK) を使用してパラメータ値を暗号化します。KMS はパラメータ値を暗号化するときに、カスタマー管理の CMK または AWS 管理の CMK を使用します。AWS 管理およびカスタマー管理の CMK の詳細については、AWS Key Management Service Developer Guide で、「AWS Key Management Service の概念」を参照してください。パラメータストア および AWS KMS の暗号化の詳細については、「AWS KMS で AWS Systems Manager パラメータストア を使用する方法」を参照してください。

注記

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

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

重要

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

KMS カスタマーマスターキーを使用した Secure String パラメータの作成

アカウントとリージョンで AWS 管理の CMKを使用して Secure String パラメータを作成する場合、--key-id パラメータの値を指定する必要はありません

以下の AWS CLI の例は、--key-id パラメータを使用しないで、パラメータストア に新しい Secure String パラメータを作成するコマンドです。

aws ssm put-parameter --name parameter_name --value "parameter value" --type SecureString

カスタマー管理の CMK を使用した Secure String パラメータの作成

アカウントに割り当てられた AWS 管理の CMK の代わりにカスタマー管理の CMK を使用するには、--key-id パラメータを使用してキーを指定する必要があります。パラメータは以下の KMS パラメータ形式をサポートします。

  • キー ARN の例:

    arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012

  • エイリアス ARN の例:

    arn:aws:kms:us-east-2:123456789012:alias/MyAliasName

  • キー ID の例:

    12345678-1234-1234-1234-123456789012

  • エイリアス名の例:

    alias/MyAliasName

カスタマー管理の CMK を作成するには、AWS Management Console または AWS KMS API を使用します。以下の AWS CLI コマンドは、AWS アカウントの現在のリージョンでカスタマー管理のキーを作成します。

aws kms create-key

先ほど作成したキーを使用して、Secure String パラメータを作成するには、以下の形式のコマンドを使用します。

aws ssm put-parameter --name parameter_name --value "parameter value" --type SecureString --key-id arn:aws:kms:us-east-2:123456789012:key/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e

注記

暗号化された値でパラメータを手動で作成できます。この場合、値は既に暗号化されているため、SecureString データ型を選択する必要はありません。SecureString を選択した場合、パラメータは二重に暗号化されます。

デフォルトでは、すべての Secure String 値は暗号テキストとして表示されます。Secure String 値を復号するには、KMS Decrypt API アクションを呼び出すアクセス許可が必要です。KMS アクセスコントロールの設定方法については、AWS Key Management Service Developer Guide の「AWS KMS に対する認証とアクセスコントロール」を参照してください。

他の AWS のサービスで Secure String パラメータを使用する

他の AWS のサービスでも Secure String パラメータを使用できます。以下の例では、GetParameters API を使用して AWS Lambda 関数で Secure String パラメータを取得します。

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

関連トピック

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