【マルチアカウント管理】AWSのベストプラクティスを実現できるControlTowerに取り組んでみる~⑦コントロールの設定をしてみよう~

ControlTower構築後、第4回でSSOの仕組みを体験し、第5回、第6回で内部と外部のセキュリティを高める設定を行いました。
今回はControlTower本来の機能に戻り、今設定されているコントロールの確認、コントロールの追加ということで、少し後回しにしていた「コントロール」についてフォーカスしていくような内容です。
ではやっていきましょう～

---

## 【マルチアカウント管理】AWSのベストプラクティスを実現できるControlTowerに取り組んでみる

目次
[①マルチアカウント管理の利点](https://qiita.com/Thereisnoblue/items/a07f4eb74ab02a9f4a0e)　
[②ControlTowerの利点（＆実際かかったコストの画像）](https://qiita.com/Thereisnoblue/items/d51249a467875967d32a)
[③ひとまず構築しながらControlTowerを理解してみよう（手順付）](https://qiita.com/Thereisnoblue/items/0a8296484e3fa5783749)
[④SSOユーザー作成→サインインしてマルチアカウント管理を体感しよう](https://qiita.com/Thereisnoblue/items/3013f7533965c6a5cf7c)
[⑤セキュリティ（SecurityHub）の設定をしてみよう](https://qiita.com/Thereisnoblue/items/3df46ad95cadd10eec33)
[⑥セキュリティ（GuardDuty）の設定をしてみよう](https://qiita.com/Thereisnoblue/items/475d1ad67eabfa133595)
[⑦コントロールのざっくり解説＆設定をしてみよう](https://qiita.com/Thereisnoblue/items/a69e45d534524d374b2f)←本記事はここ
⑦までやればいったん一通り構築完了です。
ControlTowerだけの構築であれば③だけで完了です。

(+印付きはオプション 現在執筆中です)
[+ベストプラクティスとはいえ、構築後に実運用に沿って変えた設定集](https://qiita.com/Thereisnoblue)
[+全アカウントのコスト管理を行う](https://qiita.com/Thereisnoblue)
[+アカウント管理者を任命したらやること](https://qiita.com/Thereisnoblue)
[+SecurityHubをもっと詳しく](https://qiita.com/Thereisnoblue)



もし今回までの記事が参考になったり、いいなと思ったら、よろしければストックやいいねしていただけると非常に嬉しいです🙌
あなたのいいねがとっても励みになり、記事を書くモチベになります。
コメントもぜひ、お待ちしております。

※本記事で使用するメールアドレスやアカウント名は一部マスキングしております。
あらかじめご了承ください。

---
## 本記事の流れ
本記事の大まかな流れは以下になります。

 ***①現在ControlTowerで設定済みの統制のルール（コントロール）を確認する***

 ***（おまけ）ControlTower統制の仕組み (コントロールについてざっくり解説）***

 ***②追加でコントロールを有効化してみる***

今回は上記の流れで行きます。もしコントロールについて調べてみたけどよくわからん！という方は①において途中のおまけトグル（ControlTower統制の仕組み）でちょっぴり解説しています。（スキップ可能です）

ControlTowerを立てたものの、その特徴であるコントロールについてはあまり触れてきませんでした。
これまで、「ひとまず初回構築をしてその中で理解をしてもらう」ように記事を書いていたためです。人によりますが、私は「やってみて理解」が一番自分に合っている気がするので、実はそんな感じで書いてます。

コントロールは最初からガチガチに決めるよりは、ある程度決めつつ途中途中で実運用に沿ってカスタマイズしていくほうが現実的だと思います。

一通り構築が終わった今回は、今設定済みのコントロールの確認、その後「ある程度決める」の部分をやっていきます。
「ある程度決める」の部分では、以下のように見てください。

***「ご自身で確認されたうえで設定済みのものだけでいいや」という人はご自由にスキップください。***

***「一応推奨されてる追加設定があるなら、いったんそれもやっちゃおう」という人は読んでみてください。***

## ①現在ControlTowerで設定済みの統制のルール（コントロール）を確認する

では、始めていきましょう。

コントロールはContolTowerの管理者しか詳細を確認できないため、ControlTowerの管理者アカウントにサインインします。SSOユーザー/IAMユーザーで入ります。
※一応ベストプラクティス的には管理者がなんかやるときは管理権限もつSSOユーザーでやってねとは言われてます。

https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/accounts.html


サインインしたらControlTowerを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/1d3c1610-8a8c-3393-2a0e-bbd1ced530ce.png)

左タブで「コントロールライブラリ」をクリックし、コントロールライブラリを開きます。
![image01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/7bb6a6b9-4d5c-ee21-cc4e-98bfc6005030.png)

コントロールの設定を後回しにしていたのは、このコントロールが539個あり(2025/2/11時点)、非常に多いため、この設計を考えるところで心が折れてほしくないなと思ったからです。

細かいコントロールの解説はいろいろなところでなされているため、今回はおまけの方でざっくりとした解説にとどめます。飛ばしても問題ありません。

### ControlTowerの統制の仕組み (以下トグル)

 <details><summary>（スキップ可）🔵ControlTowerの統制の仕組み</summary>

そもそもControlTowerでは、大まかに3つの形で統制を取っています。
![masking_image20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/52aae320-e9e2-4e5d-a076-536f738d1431.png)

（これは私の個人的な、めちゃくちゃざっくりとした言い換えなので、もし相違あればご指摘ください。特にプロアクティブは分かりづらいので、公式ドキュメントも併せてみることを推奨します。）

https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/aws-security-controls/proactive-controls.html

そしてそれぞれの統制に対応するように、以下のコントロールが設けられています。
![masking_image21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/2bcf4785-915d-4d52-a7fa-b02f3bd258e9.png)

これらはコントロールライブラリの「動作」列でフィルタリングすると、それぞれのコントロールに何があるかを確認できます。
![image22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/5908affa-f3a0-43af-aac6-499f51b2f349.png)


また、それぞれのコントロールの中にも、

* 「この予防コントロールは必須だろう（必須）」
* 「この予防コントロールは権限強いし、実運用で欲しい人だけ選択してもらおう（選択的）」
* 「この検出コントロールは強く推奨されてるから基本適用しよう。一部は別の方法で検知するから無効化しよう（強く推奨）」

みたいなレベルがあります。以下のとおりです。
![masking_image23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/477d6d84-4180-46bf-b2a2-f9afce1de024.png)

デフォルトではこの「必須」や「選択的」が表示されないため、右上の歯車マークから「ガイダンス」をオンにしてみましょう。
![image24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/3945f66a-13a6-4a56-94c2-528cdd4ea7bb.png)

「動作」列＆「ガイダンス」列でフィルタリングするとこんな感じです
![image25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/20c010b2-ec99-46ca-9436-5396743cc2ee.png)


よりコントロールを詳しく知りたい人は、このあたりとかはわかりやすく書いてくださっているため、おすすめです。

https://note.shiftinc.jp/n/n6d107f32edcc

もちろん、公式ドキュメントも詳しく載っています。
![image26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/3449ca67-e6a4-4f4e-b663-715384a643a2.png)

https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/how-control-tower-works.html#how-controls-work

業界によっては、有志の方がコントロールと業界基準のアーキテクチャの対応表を書いてくださっていたりします。

例 　金融 FISC 安全対策基準 実務基準 (2023/11/13時点)

https://github.com/aws-samples/baseline-environment-on-aws-for-financial-services-institute/blob/main/doc/governance-base/ct-guardrails-for-fisc.md

ただ、コントロールの内容はそ
こそこの頻度でアップデートされますので、最新版はご自身で確認する必要があります。更新のタイミングは例えばですが、

例　S3バケットの暗号化がデフォルトで行われるようになる、という仕様変更

→S3バケットに対するガードレールが追加、およびガイダンスが「必須」→「選択的」になる　

https://dev.classmethod.jp/articles/update-aws-control-tower-logarchive-guardrail/

s3がデフォルトで暗号化されることによって、[Athena.1][[Athena.1] Athena ワークグループは、保管中に暗号化する必要があります](https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/athena-controls.html#athena-1)のコントロールが廃止される。

https://dev.classmethod.jp/articles/20240316-remove-security-hub-controls/

などなど……

そのため、具体的に1個1個見ていくよりは、下にあげたようなアプローチを取って、関係各所に説明していくのがよいと思います。

- 「必須」に加えて、一旦AWS側で「強く推奨」されているものを有効にしました。
- 業界基準のアーキテクチャに対応したものを有効にしました。
- 「この統制目標を達成したい！(”統制目標”でフィルタリング)」というところと「でも有効化して予防/検出すると業務に支障でるかも（”ガイダンス”でフィルタリング）」の折り合いをつけて検討しました。

など

統制目標は「コントロールライブラリ」のカテゴリで確認可能です。
![image26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/0f549863-3fb1-40e3-b9b7-2e04b1d433ab.png)

 </details>
    

今回はひとまず「コントロールの有効化」のガイダンスも兼ねて、②の手順では「強く推奨」されているコントロールを有効化していきます。
ということで、その検討をする前に一旦現時点で設定されているコントロールを確認してみましょう。

コントロールライブラリで「ガイダンス＝必須」のフィルターを掛けてみます。

「必須」となっているものは23個（2025/2/11時点）で、その全てがControlTower構築時に自動で有効化されているものです。

※当初の設定の方で「管理リージョン以外のリージョンを拒否する」という設定をControlTowerに設定していた場合は、予防・選択的のコントロール[[AWS-GR_REGION_DENY] リクエストされた AWS リージョンに基づいて AWS へのアクセスを拒否する](https://ap-northeast-1.console.aws.amazon.com/controltower/home/controls/AWS-GR_REGION_DENY?region=ap-northeast-1)が追加され、必須・予防と合わせ計24個になっています。

![image02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/0024f6c5-4265-4a27-9dbd-b912b8e7426d.png)

![image03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/dddfb840-f52d-4771-8272-fa1a01995e34.png)

![image04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/541d71a1-3f51-44df-902a-8eb473e62f6c.png)

![image05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/f2fa9493-6b83-4d2e-a3fc-78f3b55bafab.png)

基本的には必須コントロールは「ControlTowerやそれが作成したリソースに対する変更/削除をしないでください」という旨が多く，別プロジェクトの妨げになるようなものは必須にはありません。

ただ、必須コントロールは無効化出来ないため、必須・予防コントロールで禁止されているようにControlTowerのリソースを自在にカスタマイズできる、というわけではないことも知っておいてほしいです。

これらコントロールはControlTowerに新しく追加されたアカウントにも等しく適用されます。
SecurityOUに現在適用されているコントロールを確認しましょう。
左の「組織」タブからSecurityOUをクリックし、下にスクロールします。
（フィルターがかかっていますが、写真撮り忘れて後から撮っただけなので無視してください。）

![image06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/5364a67e-52d0-4f44-b6d9-ef0a89099c51.png)
SecurityOUは必須コントロールがそのまま23個入っていますね。
では、同じようにSandBoxOUもみてみましょう。
![image07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/2bcd20e3-7705-4b74-9ef0-376786983f3c.png)

![image08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/4d318a89-430b-4fb5-ba4d-26e68a9ee146.png)

![image09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/8dcf0da2-42b9-4f5e-be19-92b3c6f4e18f.png)

SandBoxOUの方は15個しかありません。

なぜかというと、残りの必須コントロール8個はSecurityOU専門だからです。
というより、

**SecurityOUが特別なOUのため、一部のセキュリティに必要なコントロールはSecurityOUにしかつかず、逆にSecurityOUにだけはつかないコントロールもあるからです。**

特に「検出」のコントロールに多いですが、例えば先程SandBoxOUにはなかった8個のうち、以下の検出・必須コントロールなどはSecurityOU以外にあっても役割を果たしません。

[[AWS-GR_DETECT_CLOUDTRAIL_ENABLED_ON_SHARED_ACCOUNTS] セキュリティ組織単位の共有アカウントで AWS CloudTrail または CloudTrail Lake が有効になっているかどうかを検出します。](https://ap-northeast-1.console.aws.amazon.com/controltower/home/controls/AWS-GR_DETECT_CLOUDTRAIL_ENABLED_ON_SHARED_ACCOUNTS?region=ap-northeast-1)

[[AWS-GR_AUDIT_BUCKET_PUBLIC_WRITE_PROHIBITED] ログアーカイブのパブリック書き込みアクセス設定を検出する](https://ap-northeast-1.console.aws.amazon.com/controltower/home/controls/AWS-GR_AUDIT_BUCKET_PUBLIC_WRITE_PROHIBITED?region=ap-northeast-1)

ログアーカイブ、監査アカウントのいるSecurityOUにしか出来ない仕事があるわけです。

## ②追加でコントロールを有効化してみる
では実際に「強く推奨」のコントロールを有効化してみましょう。
コントロールライブラリで「ガイダンス＝強く推奨」のフィルターを掛けてみます。
「強く推奨」は14個で、そのうち動作「検出」のものが12個、動作「予防」のものが2個です。

![image10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/95933da9-15f3-4228-a9cd-d4927727b422.png)
![image11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/7f57ae14-2cf8-44ca-ab49-b48e0a9605a4.png)
![image12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/5d4defbb-4177-4484-84ad-1ddcffc58712.png)

「予防」とはちがい、「強く推奨」「選択的」のものはまだ現時点ではControlTowerに適用されていません。また、その２つはControlTowerのどのOUに適用するかを選ぶことが出来ます。
※先ほどのように、一部SecurityOU専用のコントロール/逆にSecurityOUには適用できないコントロールがあります。

**基本的には「検出」なのでやってまずいことはないと思いますが、「予防」はアクションができなくなってしまいますので、有効化する際は注意してください。**

例えば　[[AWS-GR_RESTRICT_ROOT_USER] ルートユーザーとしてのアクションを許可しない](https://ap-northeast-1.console.aws.amazon.com/controltower/home/controls/AWS-GR_RESTRICT_ROOT_USER)　は強く推奨かつ予防ですが、これを設定すると、アカウントのrootのアクションができなくなります。MFA設定なども例に漏れず出来ないため、もし行う人はここらへんや他にも漏れがないかを確認しましょう。

仮に忘れたまま有効化した場合は、一旦該当のOUアカウントからコントロールを無効化する形になります。

さて確認できたら有効化ですが、左のチェックボックスを選んで14/14（全量/選択数）となっていることを確認します。

![image13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/b8684160-43d0-4ada-a429-3e08260c0808.png)

右上の「コントロールアクション」を押下し、「有効にする」を押下します。
![image14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/9e9e866a-3afb-4fe4-b5d2-87ab797dbf1d.png)

一応「選択したコントロール」を開き、間違いのないことを確認したら、適用する組織単位を選んでいきます。
今回は「SecurityOU」、「SandBox」を選択します。
![image15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/114310c2-1c3f-4713-b513-4e3962cb2315.png)
選択できたら、設定に間違いのないことを確認し、「コントロールを有効化」を押下します。
押下したら、「コントロールアクションが進行中です」と出ます。
![image16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/0b347cc1-49cf-4dc3-b6e2-195019314d19.png)

ちなみにコントロールアクションが進行中に別のコントロールアクション（例えば有効化中に無効化など）を行うとエラーとなってしまうので気をつけてください。
左タブの「最近の業務」から、現在進行中のコントロールオペレーションを確認できます。
![image17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/45d2923f-a50c-4e0d-bc9c-83b50fce2f74.png)

ちなみにコントロールオペレーションが先ほど設定されたものより多いのは、Controltower構築時に必須コントロールを有効化したオペレーションが履歴に残っているからです。
![image18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/8e5dd120-6d86-42d4-b2fc-8ed4c7ad6e1a.png)

オペレーションステータスが「有効」となりました。
![image19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/5aa20305-6c55-4f41-af40-0e00868f5998.png)
確認のため、先ほどと同じようにSecurityOU、SandBoxOUのコントロールを見てみます。
「ガイダンス＝強く推奨」でフィルタリングをかければ、ともに14個のコントロールが有効になっていることを確認できると思います。
![image19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846860/2a0c920c-b13d-4f7b-900c-31de4c520b09.png)
以上でControlTowerのコントロール設定を終わります。

コントロールはたくさんあり、更新頻度もそこそこあり、きっちり運用していくと工数を使いますので、ある程度ゆるめに見ていきましょう。ただ、予防コントロールを安易にやると開発側でできることがだいぶ制限されてしまいます。予防コントロールにはきちんと向き合い、要件とよく相談しましょう。

これでControlTowerの初期構築は終了です。大変お疲れ様でした。
これから運用というフェーズに入り、不足部分の構築の中で、
なるべく他の人の手間や間違ってしまいそうなことをControltowerで無くしていければ良いなと思います。

***ひとまずここまで頑張って作り上げたご自身を褒めてあげてください。***

今回の記事「【マルチアカウント管理】AWSのベストプラクティスを実現できるControlTowerに取り組んでみる」としては一旦区切りですが、この後はオプションとして運用Tipsを書いていきます。
上記興味があれば、ぜひ見ていただけると嬉しいです。

改めてですが、今回の記事が参考になったり、いいなと思ったら、よろしければストックやいいねしていただけると非常に嬉しいです。あなたのいいねがとっても励みになり、記事を書くモチベになります。

コメントもぜひ、お待ちしております。

ではまた～


←前回記事
--
https://qiita.com/Thereisnoblue/items/475d1ad67eabfa133595

次回記事→
--
https://qiita.com/Thereisnoblue