IAMで最小権限を簡単な手順で設定した後の話

こんにちは。
本日は、IAMの最小権限を簡単な手順で設定した後、必要な権限、不要な権限の追い込みをかけたい時にどういうアプローチができるかについて記載します。

:::note info
そもそものIAM最小権限の原則については以下をご覧ください。
[IAMユーザーガイド > IAM でのセキュリティのベストプラクティス](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html) 
:::


# 1. IAMの最小権限を簡単な手順で設定する
まず、簡単に最小権限を設定する手順について振り返ります。
以下のページに記載されている <b>IAM Access Analyzer </b> を活用すると、
現在利用している IAMロールで必要なポリシー、不要なポリシーを分析して、
そのロールで必要と想定されるポリシーを簡単に生成することができます。

:::note info
参考記事
[2021.5.6 AWSブログ
IAM Access Analyzer を利用して、
アクセスアクティビティに基づいて IAM ポリシーを生成し、
最小限の権限のアクセス許可を簡単に実装する](https://aws.amazon.com/jp/blogs/news/iam-access-analyzer-makes-it-easier-to-implement-least-privilege-permissions-by-generating-iam-policies-based-on-access-activity/) 
:::

かいつまんで記載すると、以下のサービスを有効にすることで、IAMロールのページから、
<b> CloudTrail イベントに基づいてポリシーを生成 </b> という機能でポリシーを生成できます。
<br>

<b> ▼前提となるサービス</b>
* <b> CloudTrail
* <b> IAM Access Analyzer
<br>
<b> ▼実際のIAMロールの画面</b><br>
<b> CloudTrail イベントに基づいてポリシーを生成 </b> の画面で、<br>
<b> ポリシーを生成 </b> ボタンを押下するとポリシーの分析が始まります。<br>
ポリシーは数分で生成されます。

<b> 生成されたポリシーを表示 </b> ボタンを押下すると、ポリシーのひな型が提示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/5e640a5b-72c9-95d1-17eb-09ae9d4dec54.png)

# 2. 生成されたポリシーをカスタマイズする

注意点として、<b> CloudTrail イベントに基づいてポリシーを生成 </b> で提示されるポリシーのひな型は、以下のような制限事項があることがあげられます。

* 取得できるIAMアクションは CloudTrail で取得できる管理イベントに限られ、
<b> データイベントは取得できない</b>ため、
<b> 生成されるポリシーでは権限が不足する可能性が高い</b>
* iam:PassRole アクションは CloudTrail によって追跡できないため、
<b>iam:PassRole ポリシーの要/不要を判断できない</b>

詳細は以下のページに記載がありますので、必ずご確認ください。

:::note info
参考記事
[IAMユーザーガイド > IAM Access Analyzer ポリシーの生成
ポリシーの生成について知っておくべきこと](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access-analyzer-policy-generation.html#access-analyzer-policy-generation-know) 
:::

そのため、生成されたポリシーは、以下の手順でカスタマイズするとよいかと思います。

<br>
<b>▼生成されたポリシーのカスタマイズ手順</b>

1. 生成されたポリシーをいったんIAMロールに付与して、
実際にそのIAMロールで操作をする
1. 権限が足りないというエラーが出たら権限を追加する

この手順で、最小権限のポリシーをひとまず設定することは可能です。

# 3. カスタマイズしたポリシーを改善する

ひとまず動く状態で最小権限にすることはできますが、必要なアクションをどのリソースの範囲に絞るか等、より厳密に改善していきたいケースも多々あると思います。

そういった権限設定の追い込みをしたい場合には、以下のブログ記事をまずご覧ください。
とても参考になります。

:::note info
参考記事
2021.9.28 AWSブログ
[最小権限実現への4ステップアプローチ 前編
](https://aws.amazon.com/jp/blogs/news/systematic-approach-for-least-privileges-jp/) 2021.9.28 AWSブログ
[最小権限実現への4ステップアプローチ 後編
](https://aws.amazon.com/jp/blogs/news/systematic-approach-for-least-privileges-jp2/) 
:::

こちらのブログで、IAMのアクションを分類しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/b0521a42-a677-be7b-b8df-73adbffba503.png)

ここで、
『<b>AWS サービスごとに権限の名称や実装が異なるため、
　サービスによっては以下の例とは異なるアクセスレベルにアクションが分類される</b>』
と記載があります。

この後どのように分類していったらいいか。
IAMアクションの分類を自分でやるとなると、とても大変です。

そこで調べていたら、以下のページにたどり着きました。


:::note info
参考記事
[サービス認証リファレンス > 
AWS サービスのアクション、リソース、および条件キー](https://docs.aws.amazon.com/ja_jp/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) 
:::

このページで、マネージドサービスごとにIAMアクションの分類が記載されています。
ECSを例にすると、以下のようにまとめられています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3622796/ba2e85a6-da62-3352-4607-47fd94a105d7.png)

より厳密にポリシーを定義していきたい場合には、<b>サービス認証リファレンス </b>のページをみていくことでIAMのアクションごとに定義を深堀していくことが可能になります。

:::note info
ポエム的な
なかなかこのページにたどり着くことができなかったので、
ぜひ紹介したかったのがこの記事の動機です。
:::

<br>

IAMの最小権限を簡単な手順で設定した後、必要な権限、不要な権限の追い込みをかけたい時にどういうアプローチをするかの話は以上で終わりです。
どなたかのお役に立てれば幸いです。


それでは、Happy AWS Life!!