【要約】IAMポリシーでタグ必須にしたはずなのに作成出来る?Null条件の落とし穴 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
組織のリソース管理を徹底するため、管理者はタグ付与を強制するIAMポリシーを導入しようとした。しかし、ポリシーの記述方法に起因して、タグが不完全な状態でもリソースが作成できてしまう問題に直面した。具体的には以下の課題が発生している。
- ・タグ未設定のリソースが増加し、所有者や用途の把握が困難になる。
- ・タグ必須化のポリシーを適用したつもりでも、一部のタグが欠落した状態で作成を許してしまう。
- ・IAMの仕様により、同一演算子内の複数キー指定がAND条件として評価されるため、制御が不完全になる。
// Approach
管理者は、タグの欠落を確実に検知し、リソース作成を拒否するために、ステートメントの分割によるアプローチを採用した。単一のDenyステートメントで複数のタグを判定するのではなく、タグごとに独立した判定ロジックを構築した。
- ・タグごとに個別のDenyステートメントを作成する。
- ・各ステートメント内で、特定のタグがNull(存在しない)場合にDenyを発動させる。
- ・複数のDenyステートメントを並べることで、いずれかのタグが欠落した場合に操作を拒否する仕組みを実現する。
// Result
タグごとの個別制御を導入したことで、指定したすべてのタグが揃っている場合のみリソース作成を許可する運用が可能となった。これにより、ガバナンスの精度が向上し、以下の成果が得られた。
- ・片方のタグのみが存在する不完全なリソース作成を確実に拒否できる。
- ・リソースの所有者や用途の把握が容易になり、管理・棚卸しの精度が向上する。
- ・EC2、EFS、VPCなどの主要リソースに対し、一貫したタグ運用ルールを強制できる。
Senior Engineer Insight
> IAMの条件評価ロジックにおける「同一演算子内はAND評価」という仕様は、設計ミスを招きやすい。大規模環境でのガバナンス自動化において、この挙動を誤解すると、管理不全なリソースが大量に発生するリスクがある。ステートメントの分割は確実な解決策だが、ポリシーのサイズ制限(文字数制限)には留意が必要である。実戦では、ポリシーの複雑化を避けつつ、いかに堅牢なガードレールを敷くかが技術責任者の腕の見せ所となる。