AWS Organizations に属していない AWS アカウントからのリソース利用を検知できるようになったので、さっそく試してみました。

IAM Access Analyzer が AWS Organizations 管理外のアカウントからのアクセスを検出できるようになったので試してみました。

https://aws.amazon.com/jp/about-aws/whats-new/2020/03/review-and-remediate-unintended-access-allowed-on-your-aws-resources-from-outside-your-aws-organization/

## IAM Access Analyzer とは
https://aws.amazon.com/jp/about-aws/whats-new/2019/12/introducing-aws-identity-and-access-management-access-analyzer/

>セキュリティチームと管理者が、リソースへの意図したアクセスのみがポリシーで提供されているかを簡単に確認できるようにします。リソースポリシーにより、お客様は特定のリソースにアクセスできるユーザーと、クラウド環境全体でそのリソースを使用する方法を細かく制御できます。

対象の AWS カウント(今回の追加で AWS Organizations 管理下の AWS アカウント)外からのアクセスが意図しているものなのかを検出するための機能です。
例えば、S3 へのアクセス権を与えているが、意図していないアクセスがないかを検出してくれます。

## IAM Access Analyzer の設定
AWS Organizations のマスターアカウント(Payerアカウント)でマネージメントコンソールにログインし、 IAM の画面を表示します。そして、 Access Analyzer の箇所をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/58f548d9-a511-b297-8ec7-d1c1131473da.png)

アナライザーを作成のボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/0743ceeb-1603-3802-9404-3a4362901de5.png)

アナライザーの名前を指定し、信頼ゾーンとして、現在の組織を選択。「アナライザーを作成」ボタンをクリックします。必要に応じてタグ付けをしてください。
また、この設定は、リージョンごとに実施する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/096a366c-ba01-0579-886b-0532d56fdbff.png)

## 動作検証
### AWS Organizations 内の操作
動作確認のため、AWS CLI をつかって、一時的なセキュリティ認証情報を取得します。これで、 IAM Role に対する検出が行えます。

```sh
aws sts assume-role --role-arn arn:aws:iam::account:role/role-name --role-session-name <セッション名>
```

コマンドを実行したら、 IAM Access Analyzer の画面を表示します。
今までは、AWS アカウント外からのアクセスは検出されましたが、信頼ゾーンとして「現在の組織」を選んでいますので、 AWS Organizations 内のアカウントからのアクセスとなり、特になにもありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/ff1cfb84-b354-d105-1b9b-8e914099b8f7.png)


### AWS Organizations 外からの操作
AWS Organizations 内の操作と同様に AWS CLI をつかって、一時的なセキュリティ認証情報を取得します。

```sh
aws sts assume-role --role-arn arn:aws:iam::account:role/role-name --role-session-name <セッション名>
```

コマンドを実行したら、同様に IAM Access Analyzer の画面を表示します。
すると、このように検出結果が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/e88e39ee-1bf0-a319-3fd9-742a377b3bbd.png)


結果ID をクリックすると詳細が表示されます。
内容を確認して、意図したアクセスならば「アーカイブ」をクリック。そうでなければ、右下の「次のページに移動します。IAMコンソール」のボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/9e8b0bf8-7546-4c97-5a6e-ab823f75e262.png)

では、意図していないアクセスとして、「次のページに移動します。IAMコンソール」のボタンをクリックして、設定を変更後、改めて、前述の AWS CLI を実行します。そして、「再スキャン」のボタンをクリックします。

すると、以下のように「ステータス」が解決済みになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/240607e4-772b-0349-8ba3-fe8fef42a518.png)

また、アーカイブの表示についても、表記が切り替わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/75942cb4-b4b3-0286-f191-2c7479d339ef.png)

では、これが意図したアクセスだった場合はどうなるのでしょうか。
(実際にはアーカイブルールで意図したものは自動的にアーカイブに入れておくと思いますが、それが漏れていた場合などに検出されます)
改めて、設定を施したうえでアクセスし、「アーカイブ」ボタンをクリックしてみました。
すると、ステータスが「アーカイブ済み」になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/4ffced72-48a7-5578-cbd6-81935ec1d6a3.png)

## まとめ
マルチアカウントを AWS Organizations で管理している環境で、 IAM Access Analyzer でのアクセス管理がしやすくなりました。これまではアカウントごとでの管理だったので、煩雑な面もありました。
しかし、管理下すべてを問題なしとするのもよろしくない場面もあるので、要件に応じた設定をしていきましょう。