IAMユーザーやIAMロールの CloudTrailログ から実際に利用されたIAMポリシーを生成する機能。
CloudTrail の設定によってはうまく動作しないので調査メモと回避策を書いておきます。
IAM Access Analyzer
まず前提知識として。
よく理解できていないが、IAM Access Analyzer は最低でも2種類の機能を持っていて、それぞれで求められる権限が違う。今回はポリシー生成のほうの話。
- アナライザーがリソースをモニタリングしてポリシーを分析する機能
- CloudTrailログを確認してポリシーを生成する機能
Control Tower 管理下
CloudFormation StackSet AWSControlTowerBP-BASELINE-CLOUDTRAIL
によって CloudTrail の有効化が行われています。
CloudTrail ログの保存先は Log archiveアカウント
の S3バケット が指定されています。
そのため IAM Access Analyzer はクロスアカウントで CloudTrailログ を読み取る必要がでてきます。
権限がない状態でポリシーを生成しようとするとエラーとなります。
Log archiveアカウント
の S3バケットポリシー を変更してクロスアカウントアクセスを許可すればいけそうですが、さらに問題が。
必須のガードレール である ログアーカイブで AWS Control Tower が作成した S3 バケットのバケットポリシーの変更を許可しない
があり、 SCP によりバケットポリシーの変更ができません。
つまりSCPを一時的に解除してバケットポリシーを編集、クロスアカウントアクセスを可能にして、ようやくポリシーが生成できます。
どうにもAWSの推奨設定から外れまくっている感じしますね。
Organization 管理下
- AWS CloudTrail と AWS Organizations - AWS Organizations
- アクセスアクティビティに基づくポリシーの生成 - AWS Identity and Access Management
AWS Organizations – Organizations CloudTrail 証跡を使用してポリシーを生成することはできません。
なんと、Organizations CloudTrail 証跡を使っているとポリシー生成できません!
たまにある推奨構成で組むと新機能が使えないジレンマ。
回避策
AWSの推奨事項を抑えつつポリシー生成を行うには、別途 CloudTrail証跡 を作るしかないかと思います。
2つ目なので費用がかかってしまいますが、常時チェックし続けるものでもないので、短期間だけ証跡作ってポリシー生成したら削除するのがよさそうです。
思うところ
各アカウントの CloudTrail が90日間のログを持っているはずなので(GuardDutyなどが見ているやつ)、S3 の CloudTrailログ へアクセスしなくてもポリシー生成できそうなものなんですが、それができない仕組みなんですかね。
まだ出て日が浅い機能なので今後のアップデートに期待しましょうか。