コンテンツにスキップ
Classmethod Aws Iam Requesttag Principaltag Ssm

AWS IAM の aws:RequestTag は実行者のタグではない?aws:PrincipalTag との違いを SSM Parameter Store で検証してみた

詳細

3 つの条件キーの定義

条件キー評価対象
aws:RequestTag/${TagKey}API リクエストで指定されたタグ
aws:PrincipalTag/${TagKey}IAM ロール・IAM ユーザーなど実行主体に付与されたタグ
aws:ResourceTag/${TagKey}対象リソースに既に付与されているタグ

検証結果まとめ

検証Deny 条件ロールタグリクエストタグ結果
1aws:RequestTag/Env が TestEnv=Test ありなし成功(RequestTag はロールのタグを見ない)
2aws:RequestTag/Env が TestEnv=Test ありEnv=Test あり失敗(リクエストで指定したタグが条件にヒット)
3aws:PrincipalTag/Env が TestEnv=Test ありなし失敗(ロールに付与されたタグが条件にヒット)

まとめ

  • aws:RequestTag は IAM ロールのタグを見ない。API リクエストで渡されたタグのみを評価する
  • 実行主体のタグを条件にしたい場合は aws:PrincipalTag を使う
  • ssm:PutParameter のサービス認可リファレンスには aws:RequestTag は明示されているが、aws:PrincipalTag は IAM グローバル条件キーとして別途評価される点に注意

注意点

  • aws:PrincipalTagssm:PutParameter の Deny ポリシーで使う場合、アクション行への記載の有無に関わらずグローバル条件キーとして評価される