AWS Security Hub オートメーションルールをCloudFormation StackSetsで複数リージョンに作成してみる

AWS Security Hub オートメーションルールをCloudFormation StackSetsで複数リージョンに作成してみる

Clock Icon2024.09.10

はじめに

本記事では、CloudFormation StackSetsを使用してAWS Security Hubオートメーションルールを複数リージョンに効率的に作成する方法について解説します。

以前、AWS Security Hub オートメーションルールを使用して特定のコントロールを自動抑制する方法についてブログを執筆しました。
https://dev.classmethod.jp/articles/aws-security-hub-automation-rules-suppress-controls/

複数リージョンでオートメーションルールを作成する必要がある場合、手動では、作成の作業自体や、作成後のルール更新も各リージョンで個別に行う必要があり、非常に手間がかかります。

そこで今回は、コードによる管理が可能で、複数リージョンへの展開が容易なCloudFormation StackSetsを使用して、オートメーションルールを複数リージョンに作成する方法をご紹介します。

前提条件

  • Security Hubの管理権限が管理アカウントに委任済み
    • ただし、ベストプラクティスとしては、別のアカウントを委任先として指定することが推奨されます。

StackSetsで必要なリソース作成

オートメーションルールの管理は、Security Hubの委任管理アカウントでのみ可能です。

本記事では、Security Hubの委任管理アカウントを管理アカウントと同一としています。そのため、StackSetsで利用する以下の2つのIAMロールを管理アカウントで作成する必要があります。

これらのIAMロールが既に作成済みの場合は、この章をスキップしてください。

上記の2つのテンプレートをダウンロードし、それぞれスタックを作成します。

cm-hirai-screenshot 2024-09-03 17.37.26

AWSCloudFormationStackSetExecutionRole.ymlのテンプレートのパラメータのうち、AdministratorAccountIdには、管理アカウントのAWSアカウントIDを入力します。
cm-hirai-screenshot 2024-09-03 17.15.50

StackSetsで複数リージョンに作成

次に、StackSetsを使用して複数リージョンにオートメーションルールを作成する手順を説明します。

以下のテンプレートを利用します。このテンプレートは、コントロールID[EC2.17]と[EC2.18]の検出結果を自動抑制するルールです。

AWSTemplateFormatVersion: 2010-09-09
Description: Create a Security Hub automation rule

Resources:
  SecurityHubAutomationRule:
    Type: AWS::SecurityHub::AutomationRule
    Properties:
      RuleName: SH-特定のコントロールの検出結果を自動抑制
      Description: SH-特定のコントロールの検出結果を自動抑制します
      RuleOrder: 1
      RuleStatus: ENABLED
      Criteria:
        ProductName:
          - Comparison: EQUALS
            Value: Security Hub
        ComplianceSecurityControlId:
          - Comparison: EQUALS
            Value: EC2.17
          - Comparison: EQUALS
            Value: EC2.18
        RecordState:
          - Comparison: EQUALS
            Value: ACTIVE
      Actions:
        - Type: FINDING_FIELDS_UPDATE
          FindingFieldsUpdate:
            Workflow:
              Status: SUPPRESSED
            Note:
              Text: オートメーションで自動的に抑制されました
              UpdatedBy: SecurityHub-AutomationRule

Outputs:
  AutomationRuleArn:
    Description: ARN of the created Security Hub Automation Rule
    Value: !Ref SecurityHubAutomationRule

StackSetを作成します。

StackSetのアクセス許可モデルは、自己管理型(self-managed)を選択します。

Security Hubの委任管理アカウントがメンバーアカウントの場合、サービス管理型(service-managed)を選択します。

cm-hirai-screenshot 2024-09-04 10.27.57

本テンプレートには、パラメータはありません。デフォルトのまま次に進みます。

cm-hirai-screenshot 2024-09-04 10.28.12

アカウント番号は、管理アカウントのAWSアカウントIDを指定します。

オートメーションルールを作成するリージョンは、今回は東京とバージニアリージョンにします。
cm-hirai-screenshot 2024-09-04 10.30.49

オプションはデフォルトのまま、StackSetを作成します。

cm-hirai-screenshot 2024-09-04 10.28.56

数十秒で、2つのリージョンにオートメーションルールが作成できました。

cm-hirai-screenshot 2024-09-04 10.31.29

cm-hirai-screenshot 2024-09-04 10.32.25

設定内容は以下の通りです。

cm-hirai-screenshot 2024-09-04 11.16.59

ルールの更新やリージョンの追加

作成したオートメーションルールの変更や、新たなリージョンへのオートメーション作成が必要になった場合でも、StackSetsを使用することで容易に対応できます。

オートメーションルールのテンプレートを更新し、ルールを反映させたい場合、作成済みのStackSetのアクション[StackSet の詳細を編集]から、更新したテンプレートをアップロードすることで、各リージョンのルール内容を更新できます。

cm-hirai-screenshot 2024-09-04 11.01.37

また、別リージョンにもルールを作成したい場合、作成済みのStackSetのアクション[StackSetにスタックを追加]から、追加したいリージョンを追加するだけで、ルールが作成できます。

cm-hirai-screenshot 2024-09-04 10.57.26

cm-hirai-screenshot 2024-09-04 10.57.53

最後に

今回は、CloudFormation StackSetsを使用してAWS Security Hubオートメーションを複数リージョンに効率的に作成する方法について解説しました。

CloudFormation StackSetsを使用することで、AWS Security Hubオートメーションルールの複数リージョンへの展開と管理が容易であることがわかります。

参考になれば幸いです。

参考

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html

https://dev.classmethod.jp/articles/re-introduction-2022-cloudformation-stacksets/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.