ControlTower関連リンクまとめ
・ControlTower①マルチアカウント環境をセットアップする
・ControlTower②環境確認
・ControlTower③SSOの確認・アカウントの追加・削除
・ControlTower④ガードレールの設定
・ControlTower⑤Auditアカウントに作成されるリソースについて
・ControlTower⑥LogArchiveアカウントに作成されるリソースについて
・ControlTower⑦SecurityHubの有効化←今ここ
・ControlTower⑧GuardDutyの有効化
・ControlTower⑨CloudWatchクロスアカウントダッシュボードの設定
・ControlTower⑩LogArchiveアカウント内バケットへのCloudWatchLogs集約
設定する内容の確認
ControlTower①~⑥までの記事で、ControlTowerにより作成される初期リソースについて確認を行いました。ControlTowerでは各アカウントのAWS Config、CloudTrailは自動で有効化され、Auditアカウントに集約されます。今回はこの環境に各アカウントでSecurityHubを有効化し、Auditアカウントに集約する設定を追加します。
SecurityHubによるセキュリティチェックやコントロールも、Configルールにより実行されます。そのため、SecurityHubの親アカウントをControlTowerのAuditアカウントに指定することで、SecurityHubの通知もAuditアカウントに集約することができます。
ControlTower環境でのSecurityHubの有効化手順
AuditアカウントはSecurityOUに所属しています。各SecurityHubはOrganizationsと統合されたサービスの為、まずは管理(Root)アカウントのOrganizationsでSecurityHubのアクセスを有効化し、SecurityHubの委任を行う必要があります。
Organizationsと統合できるAWSサービスはこちらからご確認ください。
マスターアカウントのOrganizationsでSecurityHubのアクセスを有効化する
管理(Root)アカウントにログインし、Organizationsのサービスページに移動します。
左メニューの「サービス」からサービス一覧を表示し、「Security Hub」を探します。
Security Hubのサービス名のリンクを押下すると、信頼されたアクセスの設定画面に移動できます。
「信頼されたアクセスを有効にする」ボタンを押下します。
「Security Hub コンソールを通じて信頼されたアクセスを有効にすると、そのサービスは必要な追加のセットアップタスクを完了できます。」とありますが、今回は順を追ってSecurityHubの設定を行いたいため、「追加のセットアップタスクを実行せずに Security Hub の信頼されたアクセスを有効にするオプションを表示します。」のチェックボックスにチェックを入れます。
テキストボックスに指定の文字列を入力し、「信頼されたアクセスを有効にする」を押下します。
上部に「Security Hub に対する信頼されたアクセスを正常に有効にしました」と表示が出ることを確認します。次はSecurity Hubのサービスページに移動し、Security Hubの有効化を行いましょう。
マスターアカウントでSecurityHubの有効化・委任設定を行う
Security Hubのサービスページに移動します。
右上の「Security Hubに移動」を押下します。
SecurityHubの設定ページが表示されます。
有効化したいセキュリティ基準のチェックボックスにチェックを入れ、画面をスクロールします。
今回はAuditアカウントにSecurityHubを集約します。そのため、「委任された管理者」のテキストボックスに、AuditアカウントのアカウントIDを入力し、「委任」を押下します。
「お客様の代わりに組織内の Security Hub を管理するアカウントを承認しました。この指定は、いつでも取り消しまたは変更することができます。」と表示されます。この表示が出たら、「SecurityHubの有効化」ボタンを押下します。
これで、管理(Root)アカウントでのSecurity Hub設定作業が完了しました。
Security Hubの「設定」ページに移動し、「一般」タブを表示します。
委任された管理者として、先ほど入力したAuditアカウントのアカウントIDが表示されていることが確認できます。これで、管理(Root)アカウント側での作業は完了です。
AuditアカウントのSecurityHub画面確認
マスターアカウントでの作業が完了したら、AuditアカウントにログインしSecurityHubの状況を確認しましょう。マスターアカウントにてSecurityHubの委任を行ったことで、Auditアカウント側のSecurityHubは既に有効化されています。
画面上部に表示されている「このリージョンで組織のSecurity Hubを有効にする」という通知から、組織全体でSecurityHubを有効化することができます。通知の右側に表示されている「設定」ボタンを押下します。
確認画面が表示されます。「有効化」を押下すると、組織全体でSecurityHubが有効化されます。
組織全体に対してSecurityHubを有効化したら、左メニューから「設定」画面に移動します。
「アカウント」タブを表示すると、Organizationsに所属するすべてのアカウントが表示されています。
もしSecurityHubの管理対象から外したいアカウントがある場合は、対象のアカウントのチェックボックスにチェックを入れ、右上の「Actions」から「Diassociate account」を押下します。
確認画面が表示されます。「diassociate account」のボタンを押下すると、アカウントがSecurityHubの管理対象から外れます。
SecurityHubのメンバー出ないアカウントは、「Status」に「Not a member」と表示されます。
メンバーアカウントでのSecurityHub画面確認
LogArchiveアカウントにログインし、SecurityHubのトップページを表示します。
LogArchiveアカウントでも既にSecurityHubの有効化が完了しています。
SecurityHubを集約しているAuditアカウントではメンバーアカウントのセキュリティチェック結果がすべて参照できるのに対して、メンバーアカウント側では自分のアカウント内の情報しか参照できないように設定されます。
左メニューから「設定」画面に移動すると、「Security Hub メンバーとしてログインしています。メンバーアカウントはアカウント設定を管理できません。」と表示されることが確認できます。
SecurityHubの通知について
Security Hubによるセキュリティチェックは、Configルールにより実行されます。
ControlTowerを有効にすると、ConfigはすべてAuditアカウントに集約されます。
そのため、現状でも追加設定なしでSecurityHubのセキュリティチェック結果がAuditのSNSトピックから発報されるようになっています。
もちろん、Configの通知とSecurityHubの通知を別々に設定することも可能です。ConfigとSecurityHubの通知を別々にする場合は、Config通知の中からSecurityHub関連ルールの通知を除外する設定を追加することをご検討ください。
また、Configからの通知は追加設定なしだとJson形式の文面で発報されます。
Security Hub関連ルールの通知例
{
"version": "0",
"id": "4287572c-7b5c-9db6-5bf4-ff4a7325a72f",
"detail-type": "Config Rules Compliance Change",
"source": "aws.config",
"account": "****",
"time": "2022-02-14T02:52:03Z",
"region": "ap-northeast-1",
"resources": [],
"detail": {
"resourceId": "*****",
"awsRegion": "ap-northeast-1",
"awsAccountId": "****",
"configRuleName": "securityhub-iam-inline-policy-blocked-kms-actions-d24d29c6",
"recordVersion": "1.0",
"configRuleARN": "arn:aws:config:ap-northeast-1:****:config-rule/aws-service-rule/securityhub.amazonaws.com/config-rule-4clfd2",
"messageType": "ComplianceChangeNotification",
"newEvaluationResult": {
"evaluationResultIdentifier": {
"evaluationResultQualifier": {
"configRuleName": "securityhub-iam-inline-policy-blocked-kms-actions-d24d29c6",
"resourceType": "AWS::IAM::Role",
"resourceId": "*****"
},
"orderingTimestamp": "2021-09-16T02:12:44.852Z"
},
"complianceType": "COMPLIANT",
"resultRecordedTime": "2022-02-14T02:52:02.874Z",
"configRuleInvokedTime": "2022-02-14T02:52:02.743Z"
},
"notificationCreationTime": "2022-02-14T02:52:03.673Z",
"resourceType": "AWS::IAM::Role"
}
}
実際の運用を行う際は、LambdaやEventBridgeで通知の文面を整形してからメール発報を行う構成をご検討ください。
ここまでお読みくださりありがとうございました。
次回はControlTower環境下でのGuardDutyの有効化設定について確認します。