ある多国籍企業では、以下の要件があります。 ・500人以上の開発者が複数のプロジェクトチームに所属し、チーム異動が頻繁に発生する ・各開発者は自分のチームが所有するEC2インスタンスやS3バケットのみにアクセスできる必要がある ・すべてのリソースには「Team」タグが付与されており、タグ値でチームを識別している ・IAMポリシー自体の変更なしにチーム異動に対応できる、スケーラブルなアクセス制御を実現したい この要件を満たす最も適切なIAMアクセス制御の設計はどれか?
ABAC(属性ベースアクセス制御)では、IAMポリシーのCondition要素でaws:PrincipalTag/${TagKey}とaws:ResourceTag/${TagKey}を照合することで、プリンシパルとリソースのタグが一致する場合のみアクセスを許可できる。チーム異動時はプリンシパルのTeamタグ値を更新するだけでポリシー自体の変更が不要となり、管理オーバーヘッドを最小化しながらスケールできる。 選択肢Aのチームごとのグループ管理は、チーム数に比例してグループとポリシーが増加し、大規模環境ではスケールしない。 選択肢Bは静的なリスト比較のため、チームの追加・変更のたびにポリシーを手動更新する必要があり、スケーラビリティに欠ける。 選択肢DのAWSアカウント分離は管理コストとオーバーヘッドが過大であり、同一アカウント内でのきめ細かいアクセス制御という要件に合致しない。