Organizations 環境で AWS Security Hub を全リージョンへ簡単セットアップする

AWS Organizations の連携で AWS Security Hub のセットアップが楽ちん実行できます。セットアップ方法を書きました。
2021.09.08

以下 Security Hub のセットアップをなるべく楽ちんに行います。

  • AWS Security Hub を Organizations 組織内の 全てのアカウントの全てのリージョンで有効化する
  • 有効化するセキュリティ基準はデフォルトのもの (以下 2項目)
    • CIS AWS Foundations Benchmark v1.2.0
    • AWS 基礎セキュリティのベストプラクティス v1.0.0
  • 今後追加されたメンバーアカウントに対して自動で上記セットアップを行う
  • 組織レベルの Security Hub 管理を、特定メンバーアカウントへ委任する
  • 【2021-10-22 追記】 「 全てのアカウントと 全てのリージョン 」の検出結果を 委任されたアカウントの特定リージョンへ集約する ※

Security Hub の Organizations連携機能についての詳細は以下ブログを参照ください。

※ 検出結果のリージョン集約機能については以下ブログを参照ください。

0. 前提条件

Security Hub はバックグラウンドで AWS Configを利用します。 そのため AWS Config が全アカウント、リージョン単位で有効化されていることが前提条件です。

1. 『信頼されたアクセス』を有効化する

マネジメントコンソールの AWS Organizations の [サービス] へ移動します。 Security Hub を 「アクセス有効」 にしておきましょう。 Organizations 連携を活用するために必要です。

img

※もし「Security Hubコンソールを使用して有効化することお勧めします」な表示が出た場合は、 気にせず有効にしましょう。

img

2. 管理アカウントで Security Hub を有効化する

Organizations 連携で 基本的にメンバーアカウントの Security Hub は自動で有効化されます。 しかし 管理アカウントは例外です

なので 管理アカウント上で 全リージョン Security Hub を有効化しておきます。

AWS CloudShell もしくはローカルから AWS CLI を実行します。

aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
| while read region; do
  echo "##### enable security hub in ${region}"
  aws --region ${region} securityhub enable-security-hub --enable-default-standards 
done

確認コマンドはこちら

aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
| while read region; do
  echo "##### check hub in ${region}"
  aws --region ${region} securityhub describe-hub --output yaml
done

3. メンバーアカウントへ委任する

特定メンバーアカウント(Audit用アカウントなど)に Security Hub を委任します。

同じく CloudShell もしくはローカルから AWS CLI を実行します。

adminAccount=123456789012
aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
| while read region; do
  echo "##### enable organization admin account in ${region}"
  aws --region ${region} securityhub enable-organization-admin-account \
  --admin-account-id ${adminAccount}
done

4. メンバーアカウントで Security Hub セットアップ

この作業はマネコンの一括設定が便利なのでポチポチしていきます。

委任先のメンバーアカウントへログインします。

Security Hub の [設定] ページに行きましょう。 ポップアップが出てくるはずです。

「このリージョンで組織の Security Hub を有効化する」ポップアップの [有効化] を選択しましょう。

img

img

Auto-enable が ON になっていること」および 「すべてのアカウントのステータスが Enabled となっていること」が確認できれば OKです。

img

この作業を 全リージョン分、ぽちぽちと設定してきましょう。

img

5. リージョン集約の設定をする

委任先のメンバーアカウントへログインします。

集約したいリージョン(今回は東京) の Secrity Hub のページに [リージョン] タブがあります。 [検出結果の集約を設定] を選択しましょう。

img

『集約リージョンの 有り/無し』設定と『リンクされたリージョン』設定 を行います。 リンクされたリージョンは 全てのリージョン、および将来のリージョン とします。

img

img

[保存] を選択します。以下のような設定値になればOKです。

img

6. チェック

これで設定完了です。

確認する場合は以下 AWS CLIコマンドを委任先メンバーアカウント上で実施しましょう。

aws ec2 describe-regions --query "Regions[].[RegionName]" --output text \
| while read region; do
  echo "##### list members in ${region}"
  aws --region ${region} securityhub list-members \
  --query "Members[].[AccountId,MemberStatus]" --output table
done

# ##### eu-north-1
# -----------------------------
# |        ListMembers        |
# +---------------+-----------+
# |  12345678901x |  Enabled  |
# |  12345678901x |  Enabled  |
# |  12345678901x |  Enabled  |
# |  12345678901x |  Enabled  |
# |  12345678901x |  Enabled  |
# |  12345678901x |  Enabled  |
# +---------------+-----------+
# ##### ap-south-1
# -----------------------------
# |        ListMembers        |
# (略)

すべて Enabled となっていればOKです。

おわりに

Organizations 環境の Security Hub セットアップを行ってみました。

この後の作業としては『通知設定』や『コントロールのチューニング(有効化/無効化)』があります。

コントロールのチューニングは量が多くて大変ですが、頑張ってやっていきましょう。 Security Hub の運用方法については以下ブログが参考になります。

【2021年版】AWS Security HubによるAWSセキュリティ運用を考える | DevelopersIO

参考