SecureString パラメータ - AWS Systems Manager

SecureString パラメータ

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

重要

String パラメータまたは StringList パラメータに機密データを保存しないでください。機密データを暗号化したままにする場合は、SecureString パラメータタイプのみを使用します。

詳細については、「パラメータのタイプと例」を参照してください。

次のシナリオでは SecureString パラメータを使用することをお勧めします。

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

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

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

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

重要

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

AWS KMS の暗号化と料金

パラメータを作成するときに SecureString データ型を選択した場合は、パラメータストア は AWS Key Management Service (KMS) カスタマーマスターキー (CMK) を使用してパラメータ値を暗号化します。KMS はパラメータ値を暗号化するときに、カスタマー管理の CMK または AWS 管理の CMK を使用します。

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

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

AWS のデフォルトキーとカスタマーマネージドキーを使用するための IAM アクセス許可

パラメータストア SecureString パラメータは、AWS Key Management Service (AWS KMS) キーを使用して暗号化および復号化されます。カスタマーマスターキー (CMK) または AWS が提供するデフォルトの KMS キーを使用して SecureString パラメータを暗号化する選択ができます。

カスタマーマネージドキーを使用する場合、パラメータまたはパラメータパスへのユーザーアクセスを許可する IAM ポリシーによって、キーに対する明示的な kms:Encrypt アクセス許可を提供する必要があります。たとえば、次のポリシーでは、指定したリージョンとアカウントで「prod-」で始まる SecureString パラメータを作成、更新、表示することができます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:111122223333:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE" ] } ] }

1指定されたカスタマーマネージドキーを使用して暗号化された詳細パラメータを作成するには、kms:GenerateDataKey アクセス許可が必要です。

対照的に、カスタマーアカウント内のすべてのユーザーは、デフォルトの AWS マネージドキーにアクセスできます。このデフォルトキーを使用して SecureString パラメータを暗号化し、ユーザーが SecureString パラメータを操作しないようにする場合は、次のポリシー例に示すように、IAM ポリシーでデフォルトキーへのアクセスを明示的に拒否する必要があります。

注記

AWS KMS コンソールのデフォルトキーの ARN は、AWS マネージドキーページで確認できます。デフォルトのキーは、[エイリアス] 列の aws/ssm で識別されるキーです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey " ], "Resource": [ "default-key-ARN" ] } ] }

アカウントの SecureString パラメータに対するきめ細かいアクセス制御が必要な場合は、カスタマー管理の CMK を使用して、これらのパラメータへのアクセスを保護および制限する必要があります。また、AWS CloudTrail を使用して SecureString パラメータのアクティビティを監視することをお勧めします。

詳細については、以下のトピックを参照してください。

デフォルトの AWS マネージドキーを使用する SecureString パラメータの作成

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

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

Linux
aws ssm put-parameter \ --name parameter-name \ --value "parameter-value" \ --type SecureString
Windows
aws ssm put-parameter ^ --name parameter-name ^ --value "parameter-value" ^ --type SecureString

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

アカウントに割り当てられた 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

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

Linux
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
Windows
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 を選択した場合、パラメータは二重に暗号化されます。

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

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

他の 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

関連トピック

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