AWS ControlTower④SecurityHubの設定

# 全体の流れ
①	管理アカウントでSecurityHubを有効化する
↓
②	SecurityHUBの管理権限を、管理アカウントから監査(Audit)アカウントに委任する
＝監査アカウントにて、ControlTower全体のSecurityHub(設定したセキュリティ基準を満たせているか)を確認できるようにするための準備を行う。
→この時点では管理アカウントと監査アカウントでのみSecurityHubが有効化されている！
↓
③	中央設定を行う
＝監査アカウントにて、ControlTower全体のSecurityHub(設定したセキュリティ基準を満たせているか)を確認できるようにするための実際の設定を行う。
→ここでControlTowerに所属しているアカウントやOUはSecurityHubを有効化され、結果が監査アカウントに集約される。

# 中央設定とは
https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/central-configuration-intro.html (←公式ドキュメント)
中央設定とは、ControlTowerに所属している全アカウント・全リージョンに対し、一括でSecurityHubを有効化できるものです。
(たくさんポチポチしなくてラッキーな反面、色々困ったこともありました。)

# SecurityHubを設定しよう

まず、管理アカウントでSecurityHubを有効化するためのベースを作成します。
Organizationsのサービス画面から、「SecurityHub」を探します。
見つけたらサービス名のリンクを押下します。
![スクリーンショット (687).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/ffa9a5b0-16c3-b8e2-6b1e-40ee2bafa7b3.png)
![スクリーンショット (688).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/bd0a3182-7e55-0ea8-a9ff-4f1f4dc9edb0.png)


次に、「信頼されたアクセスを有効にする」を押下します。
![スクリーンショット (689).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/a178652d-4980-5c94-6c42-627be11e3322.png)


するとポップアップが表示されるので、チェック＆入力を行い、「信頼されたアクセスを有効にする」を押下します。
![スクリーンショット (690).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/d5171e45-4710-b412-e39a-5471cfb8056d.png)
![スクリーンショット (691).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/d1dc330c-b2ba-06f6-10d4-439bee9b09d0.png)

画面上部に「SecurityHubに対する信頼され他アクセスを正常に有効にしました」を表示されます。
これで組織全体で有効化するためのベースが出来ました！
![スクリーンショット (692).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/589eab18-86ce-b40f-a4ba-0df3958f4d8b.png)


次に管理アカウントでSecurityHubを有効化します。
「SecurityHubに移動」を押下します。
![スクリーンショット (693).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/192cae0d-9508-6317-750e-5eb96138032f.png)

ここでは有効にしたいセキュリティ基準を選択します。
今回は「AWS基礎セキュリティのベストプラクティスv1.0.0(FSBP)」を設定します。
![スクリーンショット (695).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/f8f3edcb-7619-be65-2769-c1dedd71e894.png)

一番下の「委任された管理者」項目で、委任したいアカウント(今回はAudit)のアカウントIDを入力します。
![スクリーンショット (697).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/3ae8e6e7-0fc8-58c7-6624-fd53d3aa8d7e.png)

入力後、【委任】を押下すると以下のような画面になります。
ここで委任先が間違っていないことを確認したら、【SecurityHubの有効化】を押下します。
![スクリーンショット (698).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/05ba11c5-192c-be84-c6b7-0835d01a9b8a.png)

「管理者が正常に委任されました」を表示されたら成功です。
実際に、下の画面でもFSBPのみ有効化されていることが分かりますね。
![スクリーンショット (699).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/56da6b89-d438-e96a-1f44-2dc41faf3261.png)
管理アカウントから見て、委任が完了していることが確認できます。
![スクリーンショット (872).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/55ccd884-7bcf-43ac-88d7-e466bac833c0.png)

ここまでで、管理アカウント→Auditへの委任設定は完了しました。

# ここからが本番
まずAuditアカウントから見て、委任が完了していることが確認できます。
![スクリーンショット (871).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/73f1de15-6855-beba-fe25-98679a740a3e.png)

組織全体でSecurityHubを有効化するために、左のメニューバーから設定の中の【設定】をクリック。
(以下の画面を見ると、この時点ではFSBPと設定していないCISが有効になっている素振りが感じられますが、後で解消するので今は放っておいて問題ないです)
![スクリーンショット (701).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/0fc4e62e-0a4a-c1b5-05eb-866276bb07ae.png)


設定ページに飛んだあと、初期は概要項目がローカル設定になっていると思います。それを確認しつつ、編集を押下します。
![スクリーンショット (702).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/65c2aece-effc-2fcf-363c-8ec70d4c2fd8.png)

するとポップアップが表示されるので、【中央設定】を選択し、【中央設定を開始】を押下してください。
→中央設定を開始するでも、編集を押すでも、同じ画面同じ手順になります
![スクリーンショット (704).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/72eabd4f-639c-808e-a92b-941e663f5f2f.png)
![スクリーンショット (705).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/b0c1ed5b-36d3-015b-65cd-986c77ae2737.png)


すると中央設定の起動画面に移るので、以下の通り設定を行っていきます。
まずリージョンです。ControlTowerを有効化した際に設定した、ランディングゾーンで有効化しているリージョンを選択してください。
![スクリーンショット (706).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/9a340fe8-efe2-f8a8-f0fc-242c2fe82888.png)
![スクリーンショット (707).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/6081e433-db8c-6550-0eba-8281c896250d.png)

(「利用可能なすべてのリージョンのリンクを設定」のチェックを外すと、個別にリージョンが選択できるようになります↓)
![スクリーンショット (709).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/58503a4e-05b0-eefc-a6fe-5fb2c0f5a329.png)
【確認して続行】を押下します。
![スクリーンショット (711).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/e6f47ebe-0519-87e7-f607-fbfcc2099574.png)


【ポイント】
・「利用可能なすべてのリージョンのリンクを設定」について。「なんとなく全部包括していた方がよくない？特段何もないなら無理に狭めなくてよくない？」と思いがちなのですが、これで失敗しました・・・。
「利用可能なすべてのリージョンのリンクを設定」を選択して最後まで設定を行うと、こんな感じのエラーが出るようになります↓
<エラー文>Policy association failed because standards could not be enabled in Regions ap-northeast-1, us-west-2 and 3 other(s). Check if AWS Config is enabled and properly configured and retry.
![スクリーンショット (877).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/38b0f87c-0d1d-db61-7226-e3321651d122.png)

これが全然解消しないんですね。Configあるけど！有効化されてるけど！の繰り返しで、サポートに問い合わせても「Config有効化してね」と言われるだけで困ったものでした。
原因としては、「すべてのリージョンを有効化してしまうことにより、こちらが想定していない範囲(ランディングゾーンで有効化していないリージョン)の設定もAWSが見に行ってしまい、Configが設定されていない(当たり前)と怒られていた」という感じのようです。ControlTowerで統制を有効にしたリージョンにしたいのであれば、ここはリージョンを一個一個設定するのがベスト、ということのようです。以下ドキュメントです。
＞設定ポリシーは、ホームリージョンとリンクされたすべてのリージョンで有効になります。
https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/central-configuration-intro.html

・「将来のリージョンのリンクを設定」について。このチェックをつけておくと、将来リージョンが追加された時にAWS側で自動的にリージョンを追加してくれます。


【組織を首尾よく一元化しました。最初の構成ポリシーを作成します】という緑の帯が画面上部に出てきたら、次のステップに進みます。
![スクリーンショット (712).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/4dcbc4aa-f904-ea9e-1f70-17e0d4969226.png)
画面をスクロールして、今回はFSBPのみを設定したいので、「SecurityHUBの設定をカスタマイズ」を選択します。
カスタムポリシーではFSBPを選択。
![スクリーンショット (714).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/7c397957-f6e2-8369-b960-5f73fa935273.png)

上記で設定したルールセット以外は現状必要がないため、「すべてのコントロールを有効」を選択します。(ここ日本語わかりにくいので注意です)
![スクリーンショット (715).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/ff1f6ad3-a37c-17d5-3cab-cc7c5314e228.png)

スクロールし、適用するアカウントは「すべてのアカウント」を選択。
![スクリーンショット (874).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/5eb3b1ee-7c01-71c9-19b6-416e08998d48.png)

ポリシーの詳細を決定します。ポリシー名、ポリシーの説明、タグ付与が可能です。
【次へ】を押下します。
![スクリーンショット (716).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/983fda4a-b571-91ff-f7cb-1e15768b0a64.png)

【ポイント】
・カスタムポリシー(コントロール)について。躓きました。
まず、個々の設定は以下の通りです。
すべてのコントロールを有効→直前のセキュリティ基準で選択したルールが有効化される。
特定のコントロールを有効化→基本全部無効化。その下で「有効にするコントロール」を選択できるので、ここで有効化したコントロールのみが適用される。
特定のコントロールを無効化→上記の有効化バージョン。
つまり、「特定のコントロールを有効化」を選択してしまうと、直前でFSBPを選んでいても無効化されます。
日本語が解読できませんでした。気づいたのは、何故か設定したはずのSecurityHubが0%になっていたからでした・・・。
しかしここで注意です！一度「特定のコントロールを有効化」(つまり完全無効化)の方で今回のポリシーを有効化した後に、同じポリシーを変更して「すべてのコントロールを有効化」しようとすると、無効化と有効化の設定がバッティングしてエラーが起きます。
<エラー文>Cannnot configure both Enabled and Disabled security controls in the policy
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/5e4ef388-1acd-552c-b463-9b234d3b6d53.png)

この時はポリシー単位の設定で大丈夫ですが、一度SecurityHubを無効化する必要があります。そうすればバッティングせず直ります。
日本語との勝負です。

・「有効化するアカウント」について。ここで一部アカウントを選択しても、何故か最後の確認の時点で「すべてのアカウントを有効化する」となります。恐らく組織という単位で設定が行われるのではないか・・・という推測ですが、要注意です。
後々中央設定から一部アカウントを除外することはできるので、ここは我慢です。一旦すべてのアカウントに対して設定を行います。


最後に確認画面です。内容を確認しつつスクロールして、【ポリシーを作成して適用】を押下します。
(ステップ3にて、コントロールが「すべて無効」となっていますが、本来は「すべて有効」となっています。)
![スクリーンショット (717).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/b0d025e9-8d64-ef1d-76b4-631400ef7dcf.png)
![スクリーンショット (718).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/2d7f76fd-db06-dbb7-25c7-1bf15da0cd98.png)


ここまでで、中央設定自体は完了です。

設定画面に遷移し、上部に「ポリシーが正常に作成されました」と表示され、ポリシーができていることを確認します。
![スクリーンショット (719).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/0d30910f-7ed8-5c12-1fbf-4ff136d34803.png)


次に、同じく設定の組織タブから各アカウントにこのポリシーが適用されているのかを確認します。
ページに飛んですぐはポリシーのステータスが保留中になっていますが、これが成功/失敗になっていきます。少し時間はかかりますが、長くてもだいたい10分くらいで結果が表示されると思います。
![スクリーンショット (720).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/fb6f432e-39d6-8c2a-c29c-52284e6d039c.png)
![スクリーンショット (721).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/1a8a4cf3-a61b-d7c9-4353-14b4cdf9c3be.png)

rootOUと管理アカウントが「失敗」と表示されるのはデフォルトのため、気にしないでください。
![スクリーンショット (722).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/e56e39d2-9d68-ac8c-f621-a4a00980cdaf.png)

【ポイント】
あまりにも長すぎるとき(1hくらい・・・)はほとんど失敗です・・・
待てなさすぎる場合はOUやアカウントのラジオボタンをクリックすると、何故か最速で結果が切り替わったりします。お試しあれ。
【ポイント2】
基本的には管理アカウントとrootOU以外が成功になるはずです。
なんで管理アカウントはならないの？おかしくないか？と思いがちですが、管理アカウントはデフォルトでConfigを有効化していないので、失敗になります。(SecurituHub自体、Configの上に階層を作って検知しているようなものなので)管理アカウントはデフォルトだとCloudTrailしか有効化されていません。
そのため、管理アカウントとrootOUが失敗(rootOUは配下のアカウント・OUがすべて成功にならないと成功にならないため、管理アカウントが失敗である限りrootOUも失敗となる)が一つの成功例になります。
あとはControlTowerに所属していないがOrganizationsに所属している、というアカウントもこの中央設定ではポリシーを適用されそうになります。ですが、必ず「失敗」になるのでご安心ください。

とはいっても、失敗があるとなんか気になりますよね。
なので今回は管理アカウントを中央設定から除外して、すべて成功にしたいと思います。
設定したいアカウントのラジオボタンを押下して、【編集】を押下します。
![スクリーンショット (873).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/10abc73d-57a6-90e2-bad0-9b6ed49dc2c1.png)

管理タイプにて「セルフマネージド」を選択し、【次へ】を押下します。
![スクリーンショット (723).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/b56fa352-b4e8-938f-ecaa-ec8b223b6adb.png)
![スクリーンショット (724).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/7fe6bfb3-d23a-839b-9e76-3dfc7d57d800.png)


確認して、【適用】を押下します。
他のOUやアカウントと同様に、管理アカウントとrootOUがポリシーのステータス成功となることを確認します。
![スクリーンショット (725).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/a0403869-48c4-e2c1-9779-e5abd8b1bffe.png)

(気持ちいですね)
![スクリーンショット (726).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/42e27c1e-fc79-2acb-a798-a104f7b7e0e5.png)


上記同様の手順で中央設定から除外することができるので、管理アカウント以外にも適用できます。

ここまで来たら、最後にLogArchiveアカウントからSecurityHUBを確認し、設定の中に設定タブがないことを確認します。
＝中央設定など、SecurityHUBの設定を変更する権限がないことを示しています。また、画面上部にどのアカウントで管理されているかも表示されます。(伏せているところはアカウントIDが表示されます)
![スクリーンショット (870).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3827410/dc388563-f327-3cb3-a748-cd42cb8252db.png)


ここまでで、SecurityHUBの設定については以上です！
今後新しくアカウントをControlTowerに追加する際、中央設定をしておくことで自動的にポリシーが適用され、ポリシーステータスが成功になります！