ぼっちでもControl Tower連載[2/2]~予防的ガードレールの確認~

# はじめに
この記事では予防的ガードレールSCPの設定を確認していくのですが、
書き終える頃に、ガードレールやコントロールについてまとめられているドキュメントを見つけました。
https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/controls-reference.html

コントロールについての記述がドキュメントの下層にあったため気付くのが遅れました...
Control Towerのコントロールとして必須コントロールの他にデジタル主権コントロールやプロアクティブコントロール、選択コントロールが用意されていて、初期設定では必須コントロールのみ適用されているそうです。

各種設定についてはドキュメントによくまとまっているので、この記事はあくまで、Control Towerの実装直後のコンソール画面を確認する程度の目的でお読みください...

# Control Towerでデフォルトでされる設定の確認をしていくよ
連載企画の①でとりあえずLandingZoneを作ってしまったので、どんな設定がされているのか確認します。
連載の続きです。
1. [ぼっちでもControl Tower[1/2]~とりあえず作ってみた~](https://qiita.com/asuka0708japan/items/f508564635096e0b1444)

前提として、Control Tower設定時に作成された管理アカウントのユーザでAdmin権限を使って管理アカウントにサインインをします。
この記事では予防的ガードレールSCPの設定を確認していきたいと想います。

# ダッシュボード
とりあえずダッシュボード確認。
![代替テキスト](https://qiita-img-20240309.s3.ap-northeast-1.amazonaws.com/CntTwr2_1_dashboard.png "ダッシュボード")
最上段左を確認すると組織単位が2つ、アカウントが4つあります。アカウントの1つは自分で追加したので、初期で作成されるのは3つですね。
上から3段目には組織単位と4段目にはアカウント名がありますね。Control Tower作成時に設定した名前でOUとアカウントが作成されています。

最上段右を確認すると、有効な統制として呼ぼう管理が20、検出管理が3つ設定されています。実際どんなものが設定されているのか確認したいです。
# コントロールの情報
コントロールの画面はこんな感じで一覧が表示されます。
![代替テキスト](https://qiita-img-20240309.s3.ap-northeast-1.amazonaws.com/CntTwr2_2_control.png "コントロール一覧")
513種類もあるんですね。この画面ではどのコントロールがどのOUで有効になっているのか全く分からないです。
コントロールの詳細を確認してみました。
![代替テキスト](https://qiita-img-20240309.s3.ap-northeast-1.amazonaws.com/CntTwr2_3_controldetail.png "コントロール一覧")
ここまで見ると、どのOUで有効になっているかまで分かりそうですね。
コントロールを有効にする画面も確認してみます。
![代替テキスト](https://qiita-img-20240309.s3.ap-northeast-1.amazonaws.com/CntTwr2_4_controlactivate.png "コントロールアクティベート")
有効にしたいOUを選択する形になっていますね。なぜかSecurity OUは選択出来ないようになっています。プロアクティブコントロールはSecurity OUには適用出来ない？なぁぜなぁぜ？
# SCP
コントロール確認しても何がガードレールとして適用されいるのか一覧で分からないので、直接OrganizationsのSCPを確認しに行きました。以下の画像のように自動で4つのSCPが作成されていました。
![代替テキスト](https://qiita-img-20240309.s3.ap-northeast-1.amazonaws.com/CntTwr2_5_scp.png "コントロールアクティベート")
OUやアカウントとの関係は
- 上2つがSecurity OU
- 上から3つめがProd OU
- 一番下のSCPは全てのOUとアカウント

に紐付いていました。
1つ1つ内容を確認していきます。
## 1.各種リソースの変更や削除を禁止するSCP
色々と長く書いてありましたが、統制に必要な各種リソースの変更や削除を禁止する内容でした。
```
"aws:PrincipalARN": "arn:aws:iam::*:role/AWSControlTowerExecution"
```
以外のプリンシパルがControl Towerの作った以下のリソースの削除や変更を禁止する内容でした。

- S3バケットとポリシー
- CloudTrail
- EventBridgeルール
- Configルール
- IAMロール
- Lambda
- SNS

## 2.SNSのサブスクリプション変更を禁止するSCP
Control TowerからのSNSのサブスクリプションの追加や削除を禁止する内容が設定されていました。なんで1つ目と別になってるんだろう...分からない
```ruby:aws-guardrails-QcRErd
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Condition": {
        "ArnNotLike": {
          "aws:PrincipalARN": "arn:aws:iam::*:role/AWSControlTowerExecution"
        }
      },
      "Action": [
        "sns:Subscribe",
        "sns:Unsubscribe"
      ],
      "Resource": [
        "arn:aws:sns:*:*:aws-controltower-SecurityNotifications"
      ],
      "Effect": "Deny",
      "Sid": "GRSNSSUBSCRIPTIONPOLICY"
    }
  ]
}
```

## 3.各種リソースの変更や削除を禁止するSCP(S3以外)
基本的に1つ目と2つ目の内容に類似していましたが、全体的に数が少ないのと、S3に関する禁止事項が無かったです。ログアーカイブアカウントではないためかと思います。

## 4.全てのリソースへの全てのアクションを許可するSCP
全てのアカウントとOUに紐付けられていました。許可と拒否では拒否が優先するので、1から3のSCPで拒否されたアクション以外を許可する形になっています。

# 感想
実際にSCPを見てみて、SNSやLambdaもデプロイされている事を初めて知りました。ネットで調べるだけより実際に作ってみるのは勉強になるなと改めて思います。
# 次やる事
Control TowerとしてはSecurity HubやGuardDutyの設定とかしていきたいですが、本番OU配下に作ったアカウントに自分のブログシステム構築も進めていきたいです。