Parameter Store を設定する
Parameter Store でパラメータを設定する前に、指定したアクションを実行するためのアクセス許可をアカウントのプリンシパルに付与する AWS Identity and Access Management (IAM) ポリシーを設定します。
このセクションでは、IAM コンソールを使用してこれらのポリシーを手動で設定する方法と、それらポリシーをユーザーとユーザーグループに割り当てる方法について説明します。マネージドノード上で実行できるパラメータアクションを制御するためのポリシーを作成して割り当てることもできます。
また、このセクションでは、Systems Manager パラメータの変更に関する通知を受信するために Amazon EventBridge ルールを作成する方法についても説明します。EventBridge ルールを使用すれば、Parameter Store の変更に基づき、AWS で他のアクションを呼び出すことができます。
内容
IAM ポリシーを使用した Parameter Store パラメータアクセスの管理
AWS Systems Manager パラメータにアクセスする IAM プリンシパルには、必要な SSM アクションを実行するアクセス許可が必要です。プリンシパルは、IAM ユーザー、IAM ロール、Amazon EC2 インスタンスプロファイル、Lambda 実行ロール、Amazon ECS タスクロール、CodeBuild サービスロール、または別の AWS サービスロールになります。
次の表で、さまざまな Parameter Store アクションに必要な IAM アクセス許可について説明します。
| アクション | 必須の IAM 権限 | リファレンス情報 |
|---|---|---|
| パラメータを作成または更新する | ssm:PutParameter |
PutParameter |
| 1 つのパラメータを取得する | ssm:GetParameter |
GetParameter |
| 複数の名前付きパラメータを取得する | ssm:GetParameters |
GetParameters |
| パスの下のパラメータを取得する | ssm:GetParametersByPath |
GetParametersByPath |
| パラメータメタデータを表示する | ssm:DescribeParameters |
DescribeParameters |
| パラメータのバージョン履歴を表示する | ssm:GetParameterHistory |
GetParameterHistory |
| 1 つのパラメータを削除する | ssm:DeleteParameter |
DeleteParameter |
| 複数のパラメータを削除する | ssm:DeleteParameters |
DeleteParameters |
IAM ポリシーを使用して Systems Manager パラメータへのアクセス権を付与する場合は、制限付き IAM ポリシーを作成して使用することをお勧めします。たとえば、以下のポリシーでは、プリンシパルは限られた一連のリソースに対して DescribeParameters および GetParameters API オペレーションを呼び出すことができます。プリンシパルは prod-* で始まるすべてのパラメータに関する情報を取得し、使用することができます。
重要
ユーザーがパスへのアクセス許可を持つ場合、そのユーザーはそのパスのすべてのレベルにアクセスできます。たとえば、ユーザーがパス /a へのアクセス許可を持っている場合、ユーザーは /a/b にアクセスすることもできます。プリンシパルが IAM でパラメータ /a/b へのアクセスを明示的に拒否された場合でも、/a に対して GetParametersByPath API オペレーションを再帰的に呼び出し、/a/b を表示できます。
信頼されている管理者には、以下の例のようなポリシーを使用することで、すべての Systems Manager パラメータ API オペレーションへのアクセスを許可できます。このポリシーにより、ユーザーは、dbserver-prod-* で始まるすべての本稼働パラメータにフルアクセスできます。
アクセス許可を拒否する
各 API は一意であり、個別に許可または拒否できる個別の操作とアクセス許可があります。ポリシー内の明示的な拒否は、許可に優先します。
注記
デフォルトの AWS Key Management Service (AWS KMS) キーには、AWS アカウント 内のすべての IAM プリンシパルに対する Decrypt アクセス許可があります。アカウントの SecureString パラメータに対してさまざまなアクセスレベルが欲しい場合は、デフォルトのキーを使用しない方がよいでしょう。
パラメータ値を取得するすべての API オペレーションの動作を同じにする場合は、ポリシーの GetParameter* ようなパターンを使用できます。次に、GetParameter で始まるすべてのパラメータについて、GetParameters、GetParameterHistory、GetParametersByPath、および prod-* を拒否する例を示します。
次に、prod-* で始まるすべてのパラメータに対してユーザーが他のコマンドを実行できるようにしながら、一部のコマンドを拒否する例を示します。
注記
パラメータ履歴には、現在のパラメータを含むすべてのパラメータバージョンが含まれます。したがって、GetParameter、GetParameters、および GetParameterByPath に対するアクセス許可が拒否され、GetParameterHistory に対するアクセス許可が認められている場合、SecureString を使用して、GetParameterHistory パラメータを含む現在のパラメータを表示できます。
AWS KMS キーを使用したパラメータの暗号化と復号
Parameter Store SecureString パラメータは暗号化に AWS KMS キーを使用します。AWS KMS は、AWS マネージドキー またはカスタマーマネージドキーを使用して値を暗号化します。AWS KMS と AWS KMS key の詳細については、「AWS Key Management Service デベロッパーガイド」を参照してください。
カスタマーアカウント内のすべてのユーザーは、デフォルトの AWS マネージドキーにアクセスできます。デフォルトのキーの Amazon リソースネーム (ARN) は、AWS KMS コンソールの [AWS マネージドキー]aws/ssm で識別されます。デフォルトキーを使用して SecureString パラメータを暗号化すると同時に、ユーザーが SecureString パラメータを操作できないようにしたい場合を考えてみましょう。この場合、次のポリシー例に示すように、IAM ポリシーはデフォルトキーへのアクセスを明示的に拒否する必要があります。
カスタマーマネージドキーを使用する場合、パラメータまたはパラメータパスへのプリンシパルアクセスを許可する IAM ポリシーによって、キーに対する明示的な kms:Encrypt アクセス許可を提供する必要があります。例えば、次のポリシーでは、プリンシパルは、指定した AWS リージョン と AWS アカウント において prod- で始まる SecureString パラメータを作成、更新、表示できます。
注記
指定されたカスタマーマネージドキーを使用して暗号化された詳細パラメータを作成するには、kms:GenerateDataKey アクセス許可が必要です。
アカウントの SecureString パラメータに対するきめ細かいアクセス制御が必要な場合は、カスタマーマネージドキーを使用して、これらのパラメータへのアクセスの保護と制限を行います。また、AWS CloudTrail を使用して SecureString パラメータのアクティビティを監視することをお勧めします。
詳細については、以下の各トピックを参照してください。
-
IAM ユーザーガイドの「ポリシー評価ロジック」
-
「AWS Key Management Service デベロッパーガイド」の「AWS KMS の主要ポリシーを使用する」
-
AWS CloudTrail ユーザーガイドの「CloudTrail イベント履歴でのイベントの表示」
マネージドノードによる特定のパラメータへのアクセスの許可
マネージドノードが取得できる Parameter Store パラメータを制御するには、インスタンスロールに IAM ポリシーをアタッチします。パラメータを作成するときに SecureString パラメータ型を選択すると、Systems Manager は AWS KMS を使用してパラメータ値を暗号化します。AWS マネージドキー を表示するには、以下のコマンドを AWS CLI から実行します。
aws kms describe-key --key-id alias/aws/ssm
以下の例では、「prod-」で始まるパラメータに対してのみ、ノードがパラメータの値を取得できるようにしています。パラメータが SecureString の場合、ノードは AWS KMS を使用してその文字列を復号化します。
注記
以下の例のように、IAM でインスタンスポリシーはインスタンスロールに割り当てられます。ユーザーとインスタンスにポリシーを割り当てる方法を含め、Systems Manager の機能へのアクセスを設定する方法の詳細については、「Systems Manager を利用した EC2 インスタンスの管理」を参照してください。