AWS Control Tower の始め方 2022 春

個人アカウントに AWS Control Tower を設定したので、その際の流れをメモしておきます。少し前で恐縮ですが、画面ショット自体は 2022/3/29 時点の情報です。Control Tower そのものや関連するサービス自体の説明はしていません。

## セットアップの流れ
Control Tower コンソールに移動し、ランディングゾーンの設定に進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/8932991f-13d4-bb32-8e3a-fd7daed06905.png)

最初に Control Tower を設定するホームリージョンを指定します。ランディングゾーンの作成中に一部のリソースがホームリージョンでプロビジョニングされます。ランディングゾーンの作成後、ホームリージョンは変更できませんのでご注意ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/d4187701-4e06-bb19-3d45-36d7db44787f.png)

2021/11/30 のアップデートでリージョン拒否ガードレールを設定できるようになりました。リージョン拒否設定を有効にすると、Control Tower の管理対象外とするリージョンに対するオペレーションを拒否できます。以下の例の場合、東京リージョン、バージニア北部リージョン、オハイオリージョンが管理対象リージョンとなり、それ以外のリージョンに対する操作はすべて拒否されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/3500aff0-17ff-61d4-47a1-ad201bbb44b4.png)

ランディングゾーンの設定後に、ランディングゾーン設定からリージョン情報を確認すると以下のように管理対象外のリージョンが拒否済みになっていることを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/c3436eb7-8263-b2f1-625e-ab058076b43b.png)


参考: 

https://aws.amazon.com/jp/about-aws/whats-new/2021/11/deny-services-operations-aws-regions-control-tower/

https://docs.aws.amazon.com/controltower/latest/userguide/region-deny.html

組織単位 (OU) の設定では、ログアーカイブアカウントと監査アカウントが所属する 基礎となる OU と追加の OU 名のカスタマイズができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/173ba5e1-d84c-2860-e442-05c459dce99a.png)

共有アカウントの設定ではログアーカイブアカウントと監査アカウントのメールアドレスを指定します。新規のアカウントを作成するため、既存や閉鎖済みのアカウントで使用したアドレスを使用することはできません。

※スクリーンショットを取り忘れたため、[Enable AWS Control Tower for Existing Organizations](https://www.youtube.com/watch?v=CwRy0t8nfgM) より引用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/8a35216d-2cef-284d-cc78-43985278aaab.png)


2021/7/28 のアップデートで KMS による暗号化設定をサポートしています。Control Tower が設定する CloudTrail および AWS Config のログファイルに対して AWS KMS 管理キーによる暗号化 (SSE-KMS) を設定できます。特に CloudTrail の証跡に関しては SSE-KMS による暗号化が CIS AWS Foundations Benchamrk や AWS 基礎セキュリティのベストプラクティスでも推奨されているため、設定をおすすめします。

https://aws.amazon.com/jp/about-aws/whats-new/2021/07/aws-control-tower-provides-support-kms-encryption/

「暗号化設定を有効にして、カスタマイズする」にチェックを入れて、新しい KMS キーを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/a0f8331e-5cbb-bfdc-a625-df2e71359369.png)

Control Towerは、マルチリージョンキーおよび非対称キーをサポートしていないため、必ず対象キーかつ単一リージョンキーで作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/163a2188-e093-11ee-796b-d582e786eb3f.png)

エイリアスや説明、タグは任意の値を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/c17aca21-9b8b-d81f-2ca9-54e8020bd467.png)

キーの管理アクセス許可および使用アクセス許可では必要に応じて管理ユーザーやロール等を追加しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/6545336d-7627-cab9-ce9b-fe73304e61a8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/c3ec0210-7e0d-cd62-579a-0846e383661b.png)

設定を確認し、キーを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/8604df86-aefc-ac0e-f451-3e6e46ea048d.png)

キーの作成後に以下のキーポリシーを追加します。CloudTrail および AWS Config が KMS キーを使用できるようにするため追加が必要です。

```json
{
  "Sid": "Allow CloudTrail and AWS Config to encrypt/decrypt logs",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "cloudtrail.amazonaws.com",
      "config.amazonaws.com"
   ]
  },
   "Action": [
      "kms:GenerateDataKey",
      "kms:Decrypt"
   ],
    "Resource": "*"
}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/12ab8f7f-9469-f14d-b0fb-7b20edba4ab2.png)

ランディングゾーンの設定画面に戻り、カスタマーキーの指定で作成した KMS キーを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/c7df6ed2-7308-dd7f-1fb1-d05935b607fe.png)

最後にサービスのアクセス許可に関する確認にチェックを入れ、ランディングゾーンの設定を開始します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/a0b64791-3135-5f4e-927b-365a393be3e0.png)

ランディングゾーンの設定には時間がかかりますのでしばらく待ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/d116a227-9054-da74-e623-2e2ee16f2783.png)

推定残り時間は60分と表示されますが、今回の設定内容では 30 分程度で完了しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/425316f0-7072-9971-2267-b03dcb6f6212.png)

AWS Organizations の管理アカウントのメールアドレス認証が飛んでいるので Verify します。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/ef6d98c7-73c5-9305-2c40-b32afd5c3a50.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/b55a558c-490f-c2de-d6e0-fef26136ff4c.png)

AWS SSO の招待メールも飛んでいます。Accept すると AWS SSO から各アカウントへサインインできるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/6ace1e0f-896c-3120-a43b-deee78db2174.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/2f135123-ec97-31c9-5062-96943e994acc.png)



Control Tower の違反通知やドリフト通知を受け取るため、監査アカウントには各リージョンに`aws-controltower-AggregateSecurityNotifications` という SNS Topic が作成され、監査アカウントのメールアドレスがサブスクライブされます。管理対象にしたリージョンの数だけサブスクリプションの確認メールが飛んでいるはずですので、すべてのサブスクリプションを確認しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/ab4f73c5-c346-c269-c6e2-81ce710823d6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/5fc38208-2dab-c87b-de5d-3b0345e57595.png)

参考:

https://docs.aws.amazon.com/controltower/latest/userguide/receive-notifications.html

以上でランディングゾーンの初期設定は完了です。

## その他おすすめ初期設定
### AWS SSO
#### ユーザーポータル URL のカスタマイズ
AWS SSO のスタートページはについてデフォルトでは ID ストア ID (d-xxxxxxxxxx)がサブドメインになっているが、任意のサブドメインに変更可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/07246061-66bf-25db-489e-94e89d862e32.png)

#### 多要素認証 (MFA) の設定
今回は個人アカウントであるため、AWS SSO のサインインに IdP を使用しません。AWS SSO の ID ストアを使用するため、AWS SSO ユーザーが MFA を設定できるよう変更します。

設定 → ネットワークとセキュリティから AWS SSO ユーザーに多要素認証 (MFA) の設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/0d108458-c858-684f-42cb-1fc5b869c2c8.png)

MFA を要求するタイミングやタイプなど任意のカスタマイズし、変更を保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/cd9e4e19-9766-1262-8c93-6e81024c69d9.png)

ここでは以下のように設定しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/2effbdfb-ff34-65db-737a-ac6c6986ab9e.png)

セキュリティキーで MFA を登録します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/13f546a2-0b6d-0b02-e878-2bfb8ade302a.png)

#### アクセス許可セットのデフォルトセッション時間
アクセス許可セットのセッション時間はデフォルトで1時間となっているため、必要に応じて変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/c5588422-f1fd-1def-0df5-5d41178de5a6.png)


以上です。
参考になれば幸いです。