ControlTower⑨CloudWatchクロスアカウントダッシュボードの設定

## ControlTower関連記事まとめ
[・ControlTower①マルチアカウント環境をセットアップする](https://qiita.com/tonkatsu_oishi/items/6890ecc24c3b3bf8ee32)
[・ControlTower②環境確認](https://qiita.com/tonkatsu_oishi/items/b6dc3d548461d21b440d)
[・ControlTower③SSOの確認・アカウントの追加・削除](https://qiita.com/tonkatsu_oishi/items/281ad127699115ff54c3)
[・ControlTower④ガードレールの設定](https://qiita.com/tonkatsu_oishi/items/4e7be29ffa6553322c65)
[・ControlTower⑤Auditアカウントに作成されるリソースについて](https://qiita.com/tonkatsu_oishi/private/82811c94ebdc6fe509f2)
[・ControlTower⑥LogArchiveアカウントに作成されるリソースについて ](https://qiita.com/tonkatsu_oishi/private/5bb4fea771ec2a5e075b)
[・ControlTower⑦SecurityHubの有効化](https://qiita.com/tonkatsu_oishi/private/6fd0e2c73718057adcc9)
[・ControlTower⑧GuardDutyの有効化](https://qiita.com/tonkatsu_oishi/private/c28b6dd7652c8546d745)
・ControlTower⑨CloudWatchクロスアカウントダッシュボードの設定←今ここ
[・ControlTower⑩LogArchiveアカウント内バケットへのCloudWatchLogs集約](https://qiita.com/tonkatsu_oishi/items/e8d8efc681cdc2616273)
## CloudWatchのクロスアカウントダッシュボード・クロスアカウントアラームについて
2019年11月のアップデートで、CloudWatchの[クロスアカウントダッシュボード](https://aws.amazon.com/jp/blogs/news/cross-account-cross-region-dashboards-with-amazon-cloudwatch/)機能が利用できるようになりました。また、2021年8月には[CloudWatchのクロスアカウントアラーム機能](https://aws.amazon.com/jp/about-aws/whats-new/2021/08/announcing-amazon-cloudwatch-cross-account-alarms/)が追加され、マルチアカウント構成での監視の集約がますます実装しやすくなりました。今回はCloudWatchのクロスアカウントダッシュボード機能を利用して、各アカウントのメトリクス監視機能をAuditアカウントに集約する設定を確認します。

## 設定する内容の確認
まずは各アカウントの役割を確認します。
ControlTowerによりConfigが有効化され、Configの通知がAuditアカウントに集約されています。
また、前回・前々回の記事でGuardDuty・SecurityHubを有効化し、Auditアカウントを親として設定しています。今回はAuditアカウントにさらにCloudWatchのクロスアカウントダッシュボードを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/af81a607-c1d3-3179-7586-7fd4947594de.png)

クロスアカウントダッシュボードを追加した際の動作は下記のイメージです。
Auditアカウントのクロスアカウントダッシュボードからその他のアカウントのメトリクス監視や、クロスアカウントアラーム設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/44751f44-d940-9e47-25c3-a8e963d84828.png)

## ControlTower環境下でのCloudWatchクロスアカウントダッシュボード有効化手順
現在の環境ではControlTowerによりOUが作成されており、AuditアカウントはSecurityOUのメンバーアカウントとなっています。まずは管理（root)アカウントにログインし、組織との共有設定を行う必要があります。組織の共有設定が完了後AuditアカウントのCloudWatchからクロスアカウントクロスリージョンの設定を行ことで設定が完了します。

### マスターアカウントでCloudWatchの組織との共有を行う
まずは管理（root)アカウントにログインし、CloudWatchのサービスページに移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/5f28a625-3470-3f85-a6ab-1cafcfb0933f.png)
左メニューから「設定」に移動し、「クロスアカウントクロスリージョン」の「設定」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/48905e2f-950f-5a7b-1358-bb45696c4720.png)
クロスアカウントクロスリージョンの設定メニューが表示されます。
下にスクロールし、「組織内のアカウントのリストにアクセス許可を付与する」というセクションの「組織アカウントリストを共有」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/c1596f9f-6461-a36c-f3de-38ae7750134d.png)
「特定のアカウント」のチェックボックスにチェックを入れ、テキストボックスにAuditアカウントのアカウントIDを入力します。「CloudFormationスタックを作成」セクションの「CloudFormationテンプレートを起動」を押下します。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/7c9ede6f-5c71-03a2-c50a-7ee2d69e705a.png)
クロスアカウントアカウントダッシュボードに使用するIAMロールを作成する為のCloudFormationの画面が表示されます。下にスクロールします。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/9a83d02a-2baa-3c3b-74ee-10d21e17bf70.png)

「CloudFormationによってIAMリソースがカスタム名で作成されることを承認します」というチェックボックスにチェックを入れ、「スタックの作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/13aeb33b-7467-e414-7ba0-ed19cad78c65.png)

CloudWatchのクロスアカウントダッシュボード設定画面に戻ります。「CloudWatch-CrossAccountSharingRoleが作成されました」と表示されていることを確認し、「完了」を押下します。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/e73763b5-56c4-448c-806d-01cf81de6125.png)
これで、管理（root）アカウント側での設定が完了しました。

### Auditアカウントでクロスアカウントダッシュボードの有効化を行う
次はAuditアカウント側の設定を行います。
Auditアカウントにログインし、CloudWatchのサービスページに移動します。
左メニューから「設定」に移動し、「クロスアカウントクロスリージョンを表示」の「編集」ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/f55f3bc6-cd3d-d071-1b32-68eb8b0b8500.png)
クロスアカウントクロスリージョンの設定画面が表示されます。
「コンソールにセレクタを表示する」のチェックボックスにチェックを入れます。
「AWS組織アカウントセレクタ」を選択し、「変更を保存」を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/6cf4f03b-d8b9-1208-8435-2e29f57b6821.png)

CloudWatchのトップページに戻りしばらくすると、ダッシュボードのセレクタからアカウントを選択することができるようになります。LogArchiveアカウント、Sandboxアカウントなど、ControlTowerのOU配下にある各アカウントが表示できるようになっています。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/346421e1-921c-a0c0-9a5c-fcda2a0d3303.png)

### クロスアカウントアラームの設定
ここまで設定すると、AuditアカウントからOU配下の別アカウントに対してクロスアカウントアラームを設定することができるようになります。
CloudWatchのサービスページの左メニューから、「メトリクス」に移動します。
メトリクス画面でも、アカウントセレクタから各アカウントが選択できるようになっています。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/3034ffe1-bb68-276d-eae1-340ada9d9360.png)

クロスアカウントアラームを作成します。
CloudWatchの左メニューから「アラーム」を選択し、「アラームの作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/964d32ba-25f5-7836-32ed-52de6603491e.png)
「メトリクスの選択」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/9c31c506-67c2-b8fb-e859-34a9a3d42b27.png)
メトリクスの選択画面が表示されます。「アカウントIDを入力する」というテキストボックスにOU配下のアカウントIDを入力すると、別アカウントのメトリクスに対してアラームが設定できます。
後は通常のCloudWatchアラームの設定手順と同様にしきい値やアクションの設定を行うことで、クロスアカウントアラームの作成が完了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/4de17b4e-461f-7620-6564-2eb67142269a.png)

### クロスアカウントダッシュボードの注意点
クロスアカウントダッシュボードにより、他アカウントのメトリクスやアラームの設定・確認が行えるようになりました。ただし、他アカウントのCloudWatchロググループについてはクロスアカウントダッシュボードからは確認ができません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/95030338-308d-fdbc-4c78-7a5990711af6.png)
ロググループの画面上部にもアカウントセレクタが表示されていますが、別アカウントを選択すると「Logs はログインしていたアカウントにのみ表示できます」と表示されてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/ce9c33fb-2848-a83d-b479-8a1d6497168f.png)

CloudWatchLogsに対してクロスアカウントアラームを設定する場合は、各アカウントのEventBridgeからルールを作成する必要があります。設定の概要としては、EventBridgeのルールにてイベントパターンに「CloudWatchLogs」を選択し、ターゲットに「別アカウントまたはリージョンのイベントバス」を設定するという流れです。実際に設定を行う場合は、[ユーザーガイド](https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-cross-account.html)をご参照ください。

ここまでお読みくださりありがとうございました。
次回は、LogArchiveアカウントのS3にCloudWatchLogsを集約する設定を確認します。