AWS Security Hub オートメーションルールをCloudFormation StackSetsで複数リージョンに作成してみる
はじめに
本記事では、CloudFormation StackSetsを使用してAWS Security Hubオートメーションルールを複数リージョンに効率的に作成する方法について解説します。
以前、AWS Security Hub オートメーションルールを使用して特定のコントロールを自動抑制する方法についてブログを執筆しました。
複数リージョンでオートメーションルールを作成する必要がある場合、手動では、作成の作業自体や、作成後のルール更新も各リージョンで個別に行う必要があり、非常に手間がかかります。
そこで今回は、コードによる管理が可能で、複数リージョンへの展開が容易なCloudFormation StackSetsを使用して、オートメーションルールを複数リージョンに作成する方法をご紹介します。
前提条件
- Security Hubの管理権限が管理アカウントに委任済み
- ただし、ベストプラクティスとしては、別のアカウントを委任先として指定することが推奨されます。
StackSetsで必要なリソース作成
オートメーションルールの管理は、Security Hubの委任管理アカウントでのみ可能です。
本記事では、Security Hubの委任管理アカウントを管理アカウントと同一としています。そのため、StackSetsで利用する以下の2つのIAMロールを管理アカウントで作成する必要があります。
これらのIAMロールが既に作成済みの場合は、この章をスキップしてください。
- AWSCloudFormationStackSetAdministrationRole
- AWSCloudFormationStackSetExecutionRole
上記の2つのテンプレートをダウンロードし、それぞれスタックを作成します。
AWSCloudFormationStackSetExecutionRole.ymlのテンプレートのパラメータのうち、AdministratorAccountId
には、管理アカウントのAWSアカウントIDを入力します。
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)を選択します。
本テンプレートには、パラメータはありません。デフォルトのまま次に進みます。
アカウント番号は、管理アカウントのAWSアカウントIDを指定します。
オートメーションルールを作成するリージョンは、今回は東京とバージニアリージョンにします。
オプションはデフォルトのまま、StackSetを作成します。
数十秒で、2つのリージョンにオートメーションルールが作成できました。
設定内容は以下の通りです。
ルールの更新やリージョンの追加
作成したオートメーションルールの変更や、新たなリージョンへのオートメーション作成が必要になった場合でも、StackSetsを使用することで容易に対応できます。
オートメーションルールのテンプレートを更新し、ルールを反映させたい場合、作成済みのStackSetのアクション[StackSet の詳細を編集]から、更新したテンプレートをアップロードすることで、各リージョンのルール内容を更新できます。
また、別リージョンにもルールを作成したい場合、作成済みのStackSetのアクション[StackSetにスタックを追加]から、追加したいリージョンを追加するだけで、ルールが作成できます。
最後に
今回は、CloudFormation StackSetsを使用してAWS Security Hubオートメーションを複数リージョンに効率的に作成する方法について解説しました。
CloudFormation StackSetsを使用することで、AWS Security Hubオートメーションルールの複数リージョンへの展開と管理が容易であることがわかります。
参考になれば幸いです。
参考