活動履歴に基づいたIAMポリシーの自動生成機能が利用可能となりました

記事タイトルとURLをコピーする

はじめに

こんにちは、技術1課の三木宏昭です。
在宅勤務で快適ワークな毎日ですが、続けてると四季の変化に対して鈍感になるな、ということに気付きました。
日常生活の中に散歩を入れるなど、上手く改善していきたい今日この頃です。

ところで、皆さん。
IAM User/IAM Roleの権限について、適切に設計・運用していますか?

権限設計は作成も見直しも難しく、構築時は「使えればよい」「何を使うのか分からない」といった点から寛容な付与になりがちです。
また、運用時は「何を使っているか分からない」「権限を削除した際に事故が起きたら困る」といった点から改善に対して消極的になりがちで、結果的に構築時の寛容な権限が残りがちです。
こうした状況を解決できる、便利な機能が実装されました!

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

活動履歴に基づいたIAM Policyの自動生成機能が利用できるようになりました!
この機能を利用する事で、IAM User/Roleに対して寛容に設定されている権限を、適切な(必要最小限の)権限に設定しなおすことが出来ます。

参考: IAM Access Analyzer makes it easier to implement least privilege permissions by generating IAM policies based on access activity
 ※現在英語のみ

何が嬉しいか

これまではあらかじめ用意されているManaged Policyを利用しない場合、自分でポリシーを作成する必要がありました。
しかし、ポリシー作成はAWSの経験・知識がある程度必要でした。「自分が行いたい操作をするのに、どういった権限を付与する必要があるのか」というのを考え、ポリシーに落とし込む所に技術が必要なためです。
結果として、「大きな権限を持つManaged Policy(xxxFullAccessとか)をとりあえず付与しよう」という、最小権限の原則から外れてしまうケースが散見されています。

以前から、アクセスアドバイザーという機能を利用することで、「どのサービスに対するアクセスがあるか/ないか」を確認することは出来たのですが、結局ポリシーを書くのに技術が必要な部分は変わりませんでした。

f:id:swx-miki:20210409104352p:plain
アクセスアドバイザーの画面。表示されているサービスに対しては、アクセス履歴が無い(=権限は付与されているが利用していない)事が分かる。

この為、「IAM User/IAM Roleに対して、「実際に何の操作が行われているのか」「どの権限は不要な権限なのか」というのを分析し、必要最小限のポリシーを作成する」というこの最後の部分が、とても有用なものだと私は考えています。

仕組み

CloudTrail(AWS上のAPI操作のログを取得するサービス)を分析することで、各サービスにアクセスしているかどうかを確認します。
分析完了後、その結果に基づいて必要最小限なポリシーをAWSにて記載してくれる仕組みです。
また、ポリシーレビュー時に編集することも出来る為、作成されたポリシーに権限を追加したり削除したりすることも出来ます。

想定される利用ケース

  • IAM User/Roleに付与した権限を、最小権限の原則に従って運用したい場合(定期的に棚卸をしたい場合)
  • 過大な権限がついている事は判明しているものの、どうやって改善したらよいか分からない場合

実際の操作

ポリシーの生成

IAM User/IAM Roleの画面から分析したいUser/Roleを開き、「ポリシーの生成」を押下します。 f:id:swx-miki:20210409102453p:plain

次に、分析期間と分析対象を選択します。
対象となるCloudTrailを選択してください。また、期間の最長は過去90日分です。

f:id:swx-miki:20210409100451p:plain
期間とCloudTrailを選択して、「ポリシーを生成」を押下

ポリシーが生成されるまで、少し待ちます。(私の環境では5分ほどかかりました)

ポリシーの確認

作成が完了したら、「生成されたポリシーを表示」を押下します。
f:id:swx-miki:20210409102548p:plain

すると、「生成されたポリシー」と「アクションを追加」の2項目が表示されます。

f:id:swx-miki:20210409100828p:plain
生成されたポリシー

f:id:swx-miki:20210409100843p:plain
使用する他のサービスのアクションを追加

「生成されたポリシー」は、CloudTrailを分析した結果、利用が確認されたサービス・アクションが記載されたものです。(利用実績がある操作の一覧)
ここに記載されているものは、新規作成するポリシーに付与される事になります。

「アクションを追加」は、CloudTrailを分析した結果、利用が確認されていないサービス・アクションのうち、今後利用予定があるものを追加する項目になります。
例えば「直近90日ではS3のListBucket操作を行わなかったけど、今後利用予定がある」といった場合には以下のような操作を行うことで、後工程のポリシー生成に反映されます。

f:id:swx-miki:20210409101133p:plain
S3のドロップダウンを押下

f:id:swx-miki:20210409101158p:plain
許可したいアクションを選択

f:id:swx-miki:20210409101215p:plain
画面に反映されている事を確認

確認および追加操作が完了したら、右下にある「次へ」を押下します

アクセス権限のカスタマイズ

前工程での「生成されたポリシー」に表示されていた項目と、「アクションの追加」で追加したサービス・アクションの項目がポリシーとなって表示されます。 f:id:swx-miki:20210409101341p:plain

この工程で自由に追加・編集・削除が行えるので、「生成されたポリシーには含まれてるけど、今後この操作は行わない」といった場合には削除する事が可能です。

また、下に出ている「エラー」の部分を選択すると、エラー内容が表示されます。
ARNは自動で入力されないので、この一覧を参考に手入力する必要があります。 f:id:swx-miki:20210409101512p:plain f:id:swx-miki:20210409101559p:plain

ポリシーを生成

最後に、名前と説明の入力・タグ付けを行います。(説明入力とタグ付けは任意操作) f:id:swx-miki:20210409101726p:plain

また、作成したポリシーを分析対象としたIAM User/Roleにアタッチするかも選択できます。 f:id:swx-miki:20210409101914p:plain

おわりに

いかがだったでしょうか。
皆様のお役に立てれば幸いです。

三木 宏昭 (執筆記事の一覧)

クラウドインテグレーション部 技術1課

紅茶と親子丼とAWSが好き

2021年の目標:毎日リングフィットアドベンチャーのコントローラーを持つ

AWS認定12冠