

• AWS Systems Manager CloudWatch ダッシュボードは、2026 年 4 月 30 日以降は利用できなくなります。お客様は、これまでと同様に Amazon CloudWatch コンソールを使用して、Amazon CloudWatch ダッシュボードの表示、作成、管理を継続できます。詳細については、「[Amazon CloudWatch ダッシュボードのドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)」を参照してください。

# Parameter Store を設定する
<a name="parameter-store-setting-up"></a>

Parameter Store でパラメータを設定する前に、指定したアクションを実行するためのアクセス許可をアカウントのプリンシパルに付与する AWS Identity and Access Management (IAM) ポリシーを設定します。

このセクションでは、IAM コンソールを使用してこれらのポリシーを手動で設定する方法と、それらポリシーをユーザーとユーザーグループに割り当てる方法について説明します。マネージドノード上で実行できるパラメータアクションを制御するためのポリシーを作成して割り当てることもできます。

また、このセクションでは、Systems Manager パラメータの変更に関する通知を受信するために Amazon EventBridge ルールを作成する方法についても説明します。EventBridge ルールを使用すれば、Parameter Store の変更に基づき、AWS で他のアクションを呼び出すことができます。

**Topics**
+ [IAM ポリシーを使用した Parameter Store パラメータアクセスの管理](#sysman-paramstore-access)
+ [Parameter Store でのパラメータ階層の選択](parameter-store-advanced-parameters.md)
+ [Parameter Store スループットの管理](parameter-store-throughput.md)
+ [Parameter Store イベントに基づいた通知の設定またはアクションのトリガー](sysman-paramstore-cwe.md)

## IAM ポリシーを使用した Parameter Store パラメータアクセスの管理
<a name="sysman-paramstore-access"></a>

 AWS Systems Manager パラメータにアクセスする IAM プリンシパルには、必要な SSM アクションを実行するアクセス許可が必要です。プリンシパルは、IAM ユーザー、IAM ロール、Amazon EC2 インスタンスプロファイル、Lambda 実行ロール、Amazon ECS タスクロール、CodeBuild サービスロール、または別の AWS サービスロールになります。

 次の表で、さまざまな Parameter Store アクションに必要な IAM アクセス許可について説明します。



| アクション | 必須の IAM 権限 | リファレンス情報 | 
| --- | --- | --- | 
| パラメータを作成または更新する | ssm:PutParameter | [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) | 
| 1 つのパラメータを取得する | ssm:GetParameter | [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) | 
| 複数の名前付きパラメータを取得する | ssm:GetParameters | [GetParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameters.html) | 
| パスの下のパラメータを取得する | ssm:GetParametersByPath | [GetParametersByPath](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParametersByPath.html) | 
| パラメータメタデータを表示する | ssm:DescribeParameters | [DescribeParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeParameters.html) | 
| パラメータのバージョン履歴を表示する | ssm:GetParameterHistory | [GetParameterHistory](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameterHistory.html) | 
| 1 つのパラメータを削除する | ssm:DeleteParameter | [DeleteParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DeleteParameter.html) | 
| 複数のパラメータを削除する | ssm:DeleteParameters | [DeleteParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DeleteParameters.html) | 

IAM ポリシーを使用して Systems Manager パラメータへのアクセス権を付与する場合は、*制限付き* IAM ポリシーを作成して使用することをお勧めします。たとえば、以下のポリシーでは、プリンシパルは限られた一連のリソースに対して `DescribeParameters` および `GetParameters` API オペレーションを呼び出すことができます。プリンシパルは `prod-*` で始まるすべてのパラメータに関する情報を取得し、使用することができます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeParameters"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters"
            ],
            "Resource": "arn:aws:ssm:{{us-east-1}}:{{111122223333}}:parameter/prod-*"
        }
    ]
}
```

------

**重要**  
ユーザーがパスへのアクセス許可を持つ場合、そのユーザーはそのパスのすべてのレベルにアクセスできます。たとえば、ユーザーがパス `/a` へのアクセス許可を持っている場合、ユーザーは `/a/b` にアクセスすることもできます。プリンシパルが IAM でパラメータ `/a/b` へのアクセスを明示的に拒否された場合でも、`/a` に対して `GetParametersByPath` API オペレーションを再帰的に呼び出し、`/a/b` を表示できます。

信頼されている管理者には、以下の例のようなポリシーを使用することで、すべての Systems Manager パラメータ API オペレーションへのアクセスを許可できます。このポリシーにより、ユーザーは、`dbserver-prod-*` で始まるすべての本稼働パラメータにフルアクセスできます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter",
                "ssm:DeleteParameter",
                "ssm:GetParameterHistory",
                "ssm:GetParametersByPath",
                "ssm:GetParameters",
                "ssm:GetParameter",
                "ssm:DeleteParameters"
            ],
            "Resource": "arn:aws:ssm:{{us-east-1}}:111122223333:parameter/dbserver-prod-*"
        },
        {
            "Effect": "Allow",
            "Action": "ssm:DescribeParameters",
            "Resource": "*"
        }
    ]
}
```

------

### アクセス許可を拒否する
<a name="sysman-paramstore-deny-permissions"></a>

各 API は一意であり、個別に許可または拒否できる個別の操作とアクセス許可があります。ポリシー内の明示的な拒否は、許可に優先します。

**注記**  
デフォルトの AWS Key Management Service (AWS KMS) キーには、AWS アカウント 内のすべての IAM プリンシパルに対する `Decrypt` アクセス許可があります。アカウントの `SecureString` パラメータに対してさまざまなアクセスレベルが欲しい場合は、デフォルトのキーを使用しない方がよいでしょう。

パラメータ値を取得するすべての API オペレーションの動作を同じにする場合は、ポリシーの `GetParameter*` ようなパターンを使用できます。次に、`GetParameter` で始まるすべてのパラメータについて、`GetParameters`、`GetParameterHistory`、`GetParametersByPath`、および `prod-*` を拒否する例を示します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:{{us-east-1}}:{{111122223333}}:parameter/prod-*"
        }
    ]
}
```

------

次に、`prod-*` で始まるすべてのパラメータに対してユーザーが他のコマンドを実行できるようにしながら、一部のコマンドを拒否する例を示します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ssm:PutParameter",
                "ssm:DeleteParameter",
                "ssm:DeleteParameters",
                "ssm:DescribeParameters"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParametersByPath",
                "ssm:GetParameters",
                "ssm:GetParameter",
                "ssm:GetParameterHistory"
            ],
            "Resource": "arn:aws:ssm:{{us-east-1}}:111122223333:parameter/prod-*"
        }
    ]
}
```

------

**注記**  
パラメータ履歴には、現在のパラメータを含むすべてのパラメータバージョンが含まれます。したがって、`GetParameter`、`GetParameters`、および `GetParameterByPath` に対するアクセス許可が拒否され、`GetParameterHistory` に対するアクセス許可が認められている場合、`SecureString` を使用して、`GetParameterHistory` パラメータを含む現在のパラメータを表示できます。

### AWS KMS キーを使用したパラメータの暗号化と復号
<a name="ps-kms-permissions"></a>

Parameter Store `SecureString` パラメータは暗号化に AWS KMS キーを使用します。AWS KMS は、AWS マネージドキー またはカスタマーマネージドキーを使用して値を暗号化します。AWS KMS と AWS KMS key の詳細については、「[AWS Key Management Service デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/)」を参照してください。

カスタマーアカウント内のすべてのユーザーは、デフォルトの AWS マネージドキーにアクセスできます。デフォルトのキーの Amazon リソースネーム (ARN) は、AWS KMS コンソールの [[AWS マネージドキー]](https://console.aws.amazon.com/kms/home#/kms/defaultKeys) ページで確認できます。デフォルトのキーは、**[エイリアス]** 列の `aws/ssm` で識別されます。デフォルトキーを使用して `SecureString` パラメータを暗号化すると同時に、ユーザーが `SecureString` パラメータを操作できないようにしたい場合を考えてみましょう。この場合、次のポリシー例に示すように、IAM ポリシーはデフォルトキーへのアクセスを明示的に拒否する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": [
                "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/abcd1234-ab12-cd34-ef56-abcdeEXAMPLE"
            ]
        }
    ]
}
```

------

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

------
#### [ JSON ]

****  

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

------

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

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

詳細については、以下の各トピックを参照してください。
+ *IAM ユーザーガイド*の「[ポリシー評価ロジック](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)」
+ 「AWS Key Management Service デベロッパーガイド」の「[AWS KMS の主要ポリシーを使用する](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」
+ *AWS CloudTrail ユーザーガイド*の「[CloudTrail イベント履歴でのイベントの表示](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)」

### マネージドノードによる特定のパラメータへのアクセスの許可
<a name="sysman-paramstore-access-inst"></a>

マネージドノードが取得できる 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 インスタンスの管理](systems-manager-setting-up-ec2.md)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters"
            ],
            "Resource": [
                "arn:aws:ssm:{{us-east-1}}:111122223333:parameter/prod-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:{{us-east-1}}:111122223333:key/4914ec06-e888-4ea5-a371-5b88eEXAMPLE"
            ]
        }
    ]
}
```

------