Classmethod Aws Iam Requesttag Principaltag Ssm
AWS IAM の aws:RequestTag は実行者のタグではない?aws:PrincipalTag との違いを SSM Parameter Store で検証してみた
- URL: https://dev.classmethod.jp/articles/aws-iam-requesttag-principaltag-ssm-parameter-store/
- 日付: 2026-06-09
- Tier: Tier 3
- 要旨: AWS IAM の条件キー
aws:RequestTagとaws:PrincipalTagの違いを SSM Parameter Store のssm:PutParameterで実機検証。名前の印象とは違い、aws:RequestTagは実行者のタグではなく API リクエストで渡されたタグを評価することを確認。
詳細
3 つの条件キーの定義
| 条件キー | 評価対象 |
|---|---|
aws:RequestTag/${TagKey} | API リクエストで指定されたタグ |
aws:PrincipalTag/${TagKey} | IAM ロール・IAM ユーザーなど実行主体に付与されたタグ |
aws:ResourceTag/${TagKey} | 対象リソースに既に付与されているタグ |
検証結果まとめ
| 検証 | Deny 条件 | ロールタグ | リクエストタグ | 結果 |
|---|---|---|---|---|
| 1 | aws:RequestTag/Env が Test | Env=Test あり | なし | 成功(RequestTag はロールのタグを見ない) |
| 2 | aws:RequestTag/Env が Test | Env=Test あり | Env=Test あり | 失敗(リクエストで指定したタグが条件にヒット) |
| 3 | aws:PrincipalTag/Env が Test | Env=Test あり | なし | 失敗(ロールに付与されたタグが条件にヒット) |
まとめ
aws:RequestTagは IAM ロールのタグを見ない。API リクエストで渡されたタグのみを評価する- 実行主体のタグを条件にしたい場合は
aws:PrincipalTagを使う ssm:PutParameterのサービス認可リファレンスにはaws:RequestTagは明示されているが、aws:PrincipalTagは IAM グローバル条件キーとして別途評価される点に注意
注意点
aws:PrincipalTagをssm:PutParameterの Deny ポリシーで使う場合、アクション行への記載の有無に関わらずグローバル条件キーとして評価される