Parameter Store がパラメータの取得を許可する仕組み
4 つの Parameter Store オペレーションはパラメータ値を返すことができ、それぞれが独自の IAM アクションに対して承認されます。そのうち 3 つは、リクエストで指定されたパラメータに対して承認されます。GetParametersByPath は例外です。これは、返されるパラメータではなく、リクエストのパスに対して承認されます。
| Operation | 承認済み IAM アクション | 承認対象のリソース |
|---|---|---|
| GetParameter | ssm:GetParameter |
リクエストされたパラメータ |
| GetParameters | ssm:GetParameters |
リクエストされた各パラメータ |
| GetParameterHistory | ssm:GetParameterHistory |
リクエストされたパラメータ |
| GetParametersByPath | ssm:GetParametersByPath |
返されるパラメータではなく、リクエストで指定されたパス |
制限ポリシーを設計する際に重要視される、このモデルの結果が 2 つあります。
各アクションは個別に承認されます
Parameter Store は、各取得オペレーションを独自の IAM アクションに対して承認します。ssm:GetParameter を拒否しても、ssm:GetParameters、ssm:GetParametersByPath、または ssm:GetParameterHistory への呼び出しには影響しません。パラメータ値へのアクセスを制限するには、それを返すことができるすべてのアクションを拒否します。
4 つのアクション名はすべて GetParameter で始まるため、ワイルドカードパターン ssm:GetParameter* を使用すると、1 つのステートメントでそれらをすべてカバーできます。例については、アクセス許可を拒否する を参照してください。
GetParametersByPath はリクエストされたパスに対して承認されます
つまり、個々のパラメータに対するリソースレベルの拒否は、パスクエリが返す内容を制限しません。パラメータ階層を使用して環境またはアプリケーション層を分離する場合は、パス自体にコントロールを適用します。
重要
Parameter Store は、GetParametersByPath オペレーションが返す各パラメータではなく、リクエストで指定したパスに対してオペレーションを承認します。パス /a に対して GetParametersByPath の呼び出しが許可されているプリンシパルは、/a/b を含む、そのパスのすべてのパラメータを受け取ります。同じポリシーが他のアクションの /a/b へのアクセスを明示的に拒否した場合でも同様です。
GetParametersByPath がパラメータを返さないようにするには、結果にそのパラメータを含める可能性のあるすべての祖先パスで ssm:GetParametersByPath アクションを拒否してください。例えば、/a/b が返されないようにするには、/a と / の両方で ssm:GetParametersByPath を拒否します。
削除にも同じパターンが適用されます。DeleteParameters は、ssm:DeleteParameter に対してではなく、ssm:DeleteParameters に対して承認されます。プリンシパルがパラメータを削除できないようにするには、両方のアクションを拒否します。
注記
Parameter Store オペレーションは AWS CloudTrail に記録されます。アカウントのパラメータの取得に使用されたオペレーションを確認するには、「Parameter Store アクティビティの監査とログ記録」を参照してください。