AWSでマルチアカウント環境を実装してみた（④GuardDuty編）

# はじめに
前回記載した①概要編、②Organizations編、③CloudTrail編の続きとなります。今回はOrganizations内の全アカウント、全リージョンに対しGuardDutyを有効化する方法を記載します。
今回の前提となるマルチアカウント環境の全体的な構成や、GuardDutyで何ができるか？については以下の概要編を参照ください。

https://qiita.com/hiro-tech/items/b9f88efe542ac534637e


# 全体構成
概要図はこんな感じです。Organizations内に複数のアカウントがありますが、これらのアカウントのGuradDutyを有効化します。さらに、全リージョンに対してGuardDutyを適用します。

![010_kouseizu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234157/be8d02b2-cbbd-232a-c3bd-193c4099ee20.png)


# 対応手順
以下、対応手順を記載します。Organizationsコンソールは現時点では画面デザインが新しいものと古いものの両方を使えますが、今回は新しい方を使っていきます。

## GuardDutyの委任（東京リージョン）
まずはOrganizationsのメンバーアカウント（セキュリティアカウント）に対し、GuardDutyの権限を委任します。これにより、セキュリティアカウントで組織内のGuardDutyをコントロールできるようになります。以降の手順は管理アカウントで実施します。

管理アカウントでコンソールにログイン後、東京リージョンに切り替えます。続いてGuardDutyコンソールを開きます。画面内の「今すぐ始める」をクリックします。
![020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234157/6d60fa23-6294-e22f-d065-8b98c30baa17.png)


下記の画面が表示されるので、「委任された管理者アカウントID」にセキュリティアカウントのID（12桁の数字）を入力します。
![030.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234157/4245253d-f06c-ea07-e087-71c79c943249.png)


管理者の委任が完了しました。
![040.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234157/9b04ad74-ce08-66cb-77a7-09080335a155.png)



## GuardDuty有効化（東京リージョン）
ここからは委任先のセキュリティアカウントで操作を行います。
セキュリティアカウントのAWSコンソールへログイン後、東京リージョンへ切り替えます。続いてGuardDutyコンソールを開き、左メニューの「設定→アカウント」をクリックします。画面上部に青いバーが出ていますので、「有効化」ボタンをクリックします。
![050.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234157/40828c90-20a6-f3ee-ed9a-9fc689fba95a.png)


無事有効化されました。この時点で、選択されている１リージョン（ここでは東京）に対し、Organizations内の全アカウントのGuardDutyが有効になります。
![060.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234157/1cdd42ca-68ee-79ba-5421-bf8ebd3ee330.png)


## GuardDutyの委任（その他リージョン）
さて、この時点では東京リージョン以外のGuardDutyは無効化されている状態です。上でやったのと同じことを繰り返してもよいですが、ここでは委任操作をCLIで実施したいと思います。
最近CloudShellという便利なサービスが出たのでこれを利用してみます。管理アカウントでAWSコンソールを開き、とりあえず東京リージョンを選択した状態でCloudShellコンソールを起動します。
※下記は検索窓に「CloudShell」と打った状態です
![070.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234157/cda55c34-4199-5088-fc4f-32cc879d0738.png)


しばらく経つと以下の画面が表示されます。恐らくですが、裏で何がしかのコンテナが割り当てられて起動しているものと思われます。このコンソール上でAWS CLIの実行が可能です。ブラウザ上でCLI操作まで完結してしまうとは、何とも素晴らしい時代になったものです。。
![080.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234157/7a03e48e-6bd3-ad18-01ed-dc4ca66968bc.png)


というわけで全リージョン分の委任コマンドを実行します。委任先のアカウントIDには12桁の数字を入力してください。また下記のコマンドは東京リージョンも含めていますので、必要に応じ外してください。

```
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "ap-northeast-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "ap-northeast-2"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "ap-northeast-3"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "ap-south-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "ap-southeast-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "ap-southeast-2"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "ca-central-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "eu-central-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "eu-north-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "eu-west-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "eu-west-2"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "eu-west-3"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "sa-east-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "us-east-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "us-east-2"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "us-west-1"
aws guardduty enable-organization-admin-account --admin-account-id 委任先のアカウントID --region "us-west-2"
```

## GuardDuty有効化（その他リージョン）
セキュリティアカウントのAWSコンソールへログイン後、上記東京リージョンで対応したのと同じ要領で、画面からGuardDutyを有効化していきます。手順は全く同じなので割愛します。


# 最後に
無事全リージョン、全アカウントでGuardDutyを有効化することができました。次回はAWS Configの有効化方法について書ければと思っています。

今回の記事が誰かのお役に立てると幸いです。