企業がAWS Organizations配下の30アカウントで属性ベースのアクセス制御(ABAC:Attribute-Based Access Control)を実装したい。開発者はプロジェクトタグが一致するリソースのみにアクセスでき、新プロジェクト追加時にIAMポリシーを更新せずに自動的にアクセス権が付与される仕組みが必要である。最適な実装はどれか。
IAM Identity CenterのABAC機能ではIdP(Okta・Active Directory等)のユーザー属性をセッションタグとして全AWSセッションに自動伝播できます。Permission Setのポリシー内でCondition「StringEquals: aws:PrincipalTag/Project: ${aws:ResourceTag/Project}」を設定することで、ポリシー変更なしに新プロジェクトへのアクセス自動付与が実現できます。これはマルチアカウント・大規模チームでのスケーラブルなアクセス制御パターンであり、IAMポリシーの爆発的増加を防ぎます。 選択肢BのプロジェクトごとにIAMグループを作成し、対象リソースのタグをConditionで照合するポリシーをアタッチする は新プロジェクト追加時にポリシー更新が必要であり、スケーラビリティが低い。 選択肢CのAWS Configルールで全リソースのProjectタグ付与を強制し、タグ未付与リソースへのアクセスをSCPでアカウントレベルで拒否する はタグ付与強制だけでは動的なアクセス制御を実現できません。 選択肢DのAPI Gatewayカスタムオーソライザー(Lambda関数)でリクエストヘッダーのプロジェクト属性とリソースタグを照合し、不一致の場合は403を返す はAPI Gateway経由のアクセスのみを制御でき、AWS APIやコンソール経由のアクセスは制御できません。