[アップデート] IAM Access Analyzer によるポリシーの生成でより多くの AWS サービスが「アクションレベルの情報」に対応しました

あなたの推しサービスは対応していましたか?

コンバンハ、千葉(幸)です。

IAM Access Analyzer がよりきめ細やかなポリシーの生成に対応しました。

アクションレベルの情報を返してくれる AWS サービスが 16 → 58 に増加しています。

何が変わったのか

IAM Access Analyzer によるポリシーの生成

IAM Access Analyzer によるポリシーの生成は 2021 年 4 月に発表された新機能です。 特定の IAM ユーザーや IAM ロールに対して、CloudTrail に記録された過去のアクティビティを基にポリシーの雛形を生成してくれるものです。最小権限を実現するのに役立ちます。

全体的な動作イメージは以下です。

IAMAccessAnalyzer2

発表当時のブログは以下です。併せてご参照ください。

サービスレベルとアクションレベルの情報

IAM Access Analyzer によるポリシーの生成では、ポリシーそのものを直接作成してくれるわけではありません。

まずは雛形となるポリシードキュメントが生成され、そこから必要があれば IAM ポリシーを作成するという流れです。

IAMAccessAnalyzer3

ポリシードキュメント内の情報はサービスレベルアクションレベルに分かれています。サービスレベルの場合は「どのサービスを使用した」というレベル、アクションレベルの場合は「どのアクションが使用された」というレベルでの記載がされます。

アクションレベルの情報の例は以下です。これは生成されたポリシードキュメントをカスタマイズして IAM ポリシーを作成する際の操作画面です。

IAM_Management_Console-7839092

↑上記に記載されたアクションが JSON ポリシーに含まれた状態でカスタマイズを開始できます。

一方で、サービスレベルの情報の例は以下です。

IAM_Management_Console-7839143

↑「どのサービス」までのレベルまでしか情報がないので、アクションは手動で選択してあげる必要があります。

せっかくなら多くの 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日間確認可能
  • クォータについては以下参照のこと

2021 年 4 月当時に確認した内容と比較すると、iam:PassRoleに関する内容が増えています。また、当時は「 Trail は IAM エンティティと同じアカウントで有効化すること」という記載があったのですが、その記述が無くなっています。

以下のアップデートがきっかけだと思いますが、クロスアカウントでの分析にも現状では対応しているようです。

日々変わっていきますね。

やってみた

せっかくなのでポリシーの生成を試してみます。今回は普段よく自分が検証環境で使用している IAM ロールを指定して実行してみます。

IAM ロールの詳細画面から、「ポリシーの生成」を押下します。

Analyzer

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

Analyzer-9944162

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

Analyzer-9944211

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

Analyzer-9944566

失敗の部分にカーソルを合わせると以下のメッセージが表示されました。

CloudTrail log files processed per policy generation limit exceeded. Please fix before trying again.

対象が広すぎるのかな、ということで 7 日に絞って生成をし直しました。出来上がったのがこちらです。

Analyzer-9945209

生成されたポリシー(ここまでポリシードキュメントと呼んできたもの)を表示してみます。

アクションレベルの情報として、今回のアップデートにより追加された AWS サービスのものが現れています。(CloudTrailは一覧に載っていなかったはずだけど……気にしないことにします。)

Analyzer-9945484

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

Analyzer-9945609

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

Analyzer-9945762

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

Analyzer-9945862

よりきめ細やかなポリシーの生成に対応した IAM Access Analyzer の確認ができました。

終わりに

IAM Access Analyzer によるポリシーの生成において、アクションレベルの情報に対応した AWS サービスが増えた、というアップデートでした。

正直なところサービスレベルの情報をもとに自力でアクションを選択していくのはなかなか辛いものがありますので、自動的にアクションレベルで洗い出してくれる対象が広がるのは嬉しいですね。これからも追加されていく予感がしますので、どんどん便利になることを期待しています。

以上、 チバユキ (@batchicchi) がお送りしました。