![[アップデート] IAM Access Analyzer によるポリシーの生成でより多くの AWS サービスが「アクションレベルの情報」に対応しました](https://devio2023-media.developers.io/wp-content/uploads/2019/05/aws-iam.png)
[アップデート] IAM Access Analyzer によるポリシーの生成でより多くの AWS サービスが「アクションレベルの情報」に対応しました
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
コンバンハ、千葉(幸)です。
IAM Access Analyzer がよりきめ細やかなポリシーの生成に対応しました。
アクションレベルの情報を返してくれる AWS サービスが 16 → 58 に増加しています。
何が変わったのか
IAM Access Analyzer によるポリシーの生成
IAM Access Analyzer によるポリシーの生成は 2021 年 4 月に発表された新機能です。 特定の IAM ユーザーや IAM ロールに対して、CloudTrail に記録された過去のアクティビティを基にポリシーの雛形を生成してくれるものです。最小権限を実現するのに役立ちます。
全体的な動作イメージは以下です。

発表当時のブログは以下です。併せてご参照ください。
サービスレベルとアクションレベルの情報
IAM Access Analyzer によるポリシーの生成では、ポリシーそのものを直接作成してくれるわけではありません。
まずは雛形となるポリシードキュメントが生成され、そこから必要があれば IAM ポリシーを作成するという流れです。

ポリシードキュメント内の情報はサービスレベルとアクションレベルに分かれています。サービスレベルの場合は「どのサービスを使用した」というレベル、アクションレベルの場合は「どのアクションが使用された」というレベルでの記載がされます。
アクションレベルの情報の例は以下です。これは生成されたポリシードキュメントをカスタマイズして IAM ポリシーを作成する際の操作画面です。

↑上記に記載されたアクションが JSON ポリシーに含まれた状態でカスタマイズを開始できます。
一方で、サービスレベルの情報の例は以下です。

↑「どのサービス」までのレベルまでしか情報がないので、アクションは手動で選択してあげる必要があります。
せっかくなら多くの AWS サービスがアクションレベルの情報に対応して欲しいところですよね。
アクションレベルの情報に対応した AWS サービス
ようやく本題ですが、アクションレベルの情報に対応している AWS サービスの一覧は以下です。
「新規」に「●」がついているのが今回のアップデートで対応したサービスです。
| # | サービス名 | 新規 | 
|---|---|---|
| 1 | IAM Access Analyzer | |
| 2 | AWS Amplify | ● | 
| 3 | Amazon AppIntegrations | ● | 
| 4 | Amazon AppFlow | ● | 
| 5 | AWS Application Cost Profiler | ● | 
| 6 | Amazon Athena | ● | 
| 7 | AWS Batch | ● | 
| 8 | Amazon Braket | ● | 
| 9 | Amazon CloudWatch | |
| 10 | Amazon CloudWatch Logs | ● | 
| 11 | Amazon CloudWatch Synthetics | ● | 
| 12 | Amazon CodeGuru Profiler | ● | 
| 13 | Amazon Cognito Identity | |
| 14 | Amazon Cognito Sync | ● | 
| 15 | Amazon Cognito user pools | |
| 16 | AWS Cost and Usage Report | ● | 
| 17 | Amazon DevOps Guru | ● | 
| 18 | Device Advisor | ● | 
| 19 | AWS Directory Service | ● | 
| 20 | Amazon Elastic Block Store | ● | 
| 21 | Amazon EC2 | |
| 22 | Amazon Elastic Container Registry | ● | 
| 23 | Amazon ECS | |
| 24 | Elastic Load Balancing | |
| 25 | Amazon EventBridge Schemas | ● | 
| 26 | Fleet Hub for AWS IoT Device Management | ● | 
| 27 | AWS Ground Station | ● | 
| 28 | Amazon GuardDuty | ● | 
| 29 | IAM | |
| 30 | Amazon Interactive Video Service | ● | 
| 31 | AWS KMS | |
| 32 | Amazon Kinesis Data Firehose | ● | 
| 33 | AWS Lambda | |
| 34 | Amazon MQ | ● | 
| 35 | Amazon Managed Blockchain | ● | 
| 36 | Amazon Managed Streaming for Apache Kafka | ● | 
| 37 | Amazon Nimble Studio | ● | 
| 38 | AWS OpsWorks | ● | 
| 39 | AWS Outposts | ● | 
| 40 | Amazon RDS Performance Insights | ● | 
| 41 | Amazon RDS | |
| 42 | AWS RAM | |
| 43 | AWS Resource Groups | |
| 44 | Resource Groups Tagging API | ● | 
| 45 | Savings Plans | ● | 
| 46 | AWS Secrets Manager | ● | 
| 47 | AWS Security Hub | ● | 
| 48 | AWS Security Token Service | |
| 49 | AWS Server Migration Service | ● | 
| 50 | Service Quotas | ● | 
| 51 | AWS Signer | ● | 
| 52 | Amazon Simple Email Service | ● | 
| 53 | Amazon S3 | |
| 54 | AWS Systems Manager | |
| 55 | Amazon Textract | ● | 
| 56 | Amazon Translate | ● | 
| 57 | AWS Well-Architected Tool | ● | 
| 58 | Amazon WorkLink | ● | 
AWS ドキュメントでは以下から確認できます。
日本語版のドキュメントとの差異から、新規分を洗い出せました。一気に多くのサービスが対応しましたね!
余談:ポリシーの生成について知っておくべきこと
以下ドキュメントに幾つかのポイントが載っています。
大まかに整理すると以下のとおりです。
- CloudTrail が有効になっていることが前提
- iam:PassRoleアクションは Trail によって追跡されないため生成されたポリシーにも含まれない
- ポリシー生成の時間を短縮するためには分析する期間を短めにすること
- 監査目的でポリシー生成を使用してはならない
- ポリシーを生成できるのは IAM Console で一つまで
- 複数の IAM エンティティに対するポリシー生成を同時には実行できません
 
- 生成されたポリシー(テンプレート)はコンソールで最大 7日間確認可能
- クォータについては以下参照のこと
- IAM and STS quotas - AWS Identity and Access Management
- 分析できる Trail の期間は最大 90日分
- 1日に生成できるポリシーは5つまで など
 
2021 年 4 月当時に確認した内容と比較すると、iam:PassRoleに関する内容が増えています。また、当時は「 Trail は IAM エンティティと同じアカウントで有効化すること」という記載があったのですが、その記述が無くなっています。
以下のアップデートがきっかけだと思いますが、クロスアカウントでの分析にも現状では対応しているようです。
日々変わっていきますね。
やってみた
せっかくなのでポリシーの生成を試してみます。今回は普段よく自分が検証環境で使用している IAM ロールを指定して実行してみます。
IAM ロールの詳細画面から、「ポリシーの生成」を押下します。

分析する期間として直近の 90 日間を指定し、もろもろの選択をした上で生成を行います。

分析が終わるまでしばし待ちましょう。

と思ったら失敗しました。

失敗の部分にカーソルを合わせると以下のメッセージが表示されました。
CloudTrail log files processed per policy generation limit exceeded. Please fix before trying again.
対象が広すぎるのかな、ということで 7 日に絞って生成をし直しました。出来上がったのがこちらです。

生成されたポリシー(ここまでポリシードキュメントと呼んできたもの)を表示してみます。
アクションレベルの情報として、今回のアップデートにより追加された AWS サービスのものが現れています。(CloudTrailは一覧に載っていなかったはずだけど……気にしないことにします。)

次のステップで JSON ポリシーのカスタマイズを行います。Resource 部が変数となっているため構文エラーが発生している箇所がありますので、適宜修正して次に進みます。

最後にポリシー名や作成時のアタッチ有無などを設定し、作成が完了です。

今回は作成と同時にアタッチするオプションを有効にしたので、以下のように作成およびアタッチされました。

よりきめ細やかなポリシーの生成に対応した IAM Access Analyzer の確認ができました。
終わりに
IAM Access Analyzer によるポリシーの生成において、アクションレベルの情報に対応した AWS サービスが増えた、というアップデートでした。
正直なところサービスレベルの情報をもとに自力でアクションを選択していくのはなかなか辛いものがありますので、自動的にアクションレベルで洗い出してくれる対象が広がるのは嬉しいですね。これからも追加されていく予感がしますので、どんどん便利になることを期待しています。
以上、 チバユキ (@batchicchi) がお送りしました。











