CloudFormation StackSets CLI で AWS Config Rules を追加する

2020年9月16日

概要

やりたいこと

AWS Config Rules を全リージョンに追加したい。 CloudFormation StackSets を利用する。

AWS Config は事前に有効化しておく。

AWS 公式から Config Rules の CloudFormation テンプレートのサンプルが公開されているのでこちらを参考にする。

AWS Config Rules

AWS Config Rules は AWSリソースの設定が決められた基準を満たしているか確認する。
基準と違えばアラートを発泡する。

CloudFormation のドキュメント。

CloudFormation

単一リージョンにデプロイ

Config Rules を単一リージョン(東京)にのみデプロイする。

  • 2 要素認証を設定していない IAM User を検知
  • 24 時間に 1 回の頻度でチェック
AWSTemplateFormatVersion: 2010-09-09
Description: Enables an AWS Config rule to check whether the root user of your AWS account requires multi-factor authentication for console sign-in.

Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Label:
          default: Configuration
        Parameters:
          - Frequency
    ParameterLabels:
      Frequency:
        default: Frequency

Parameters:

  Frequency:
    Type: String
    Default: 24hours
    Description: Maximum rule execution frequency.
    AllowedValues:
      - 1hour
      - 3hours
      - 6hours
      - 12hours
      - 24hours

Mappings:
  Settings:
    FrequencyMap:
      1hour   : One_Hour
      3hours  : Three_Hours
      6hours  : Six_Hours
      12hours : Twelve_Hours
      24hours : TwentyFour_Hours

Resources:
  CheckForRootMFA:
    Type: AWS::Config::ConfigRule
    Properties:
      Description: Checks whether the root user of your AWS account requires multi-factor authentication for console sign-in.
      MaximumExecutionFrequency: !FindInMap
          - Settings
          - FrequencyMap
          - !Ref Frequency
      Source:
        Owner: AWS
        SourceIdentifier: ROOT_ACCOUNT_MFA_ENABLED

デプロイ。

aws cloudformation deploy --stack-name config-rules --template-file config_rules.yaml

コンソール上からルールが追加されていることを確認。

次の作業のため、削除しておく。

aws cloudformation delete-stack –stack-name config-rules

StackSets で全リージョンにデプロイ

デプロイするコードは同じなので省略。

CloudForamtion StackSets の作成。

aws cloudformation create-stack-set --stack-set-name configrules-stackset --template-body file://config_rules.yaml --administration-role-arn arn:aws:iam::111111111111:role/AWSCloudFormationStackSetAdministrationRole --execution-role-name AWSCloudFormationStackSetExecutionRole

全リージョンへデプロイ。

aws cloudformation create-stack-instances --stack-set-name configrules-stackset --accounts '["11112222333"]' --regions '["ap-northeast-1","ap-northeast-2", "ap-south-1", "ap-southeast-1", "ap-southeast-2", "ca-central-1", "eu-central-1", "eu-west-1", "eu-west-2", "eu-west-3", "sa-east-1", "us-east-1", "us-east-2", "us-west-1", "us-west-2"]' --operation-preferences FailureToleranceCount=0,MaxConcurrentCount=1

全リージョンが CURRENT になっていることを確認。

全リージョンの Config Rules にルールが追加されていること。

参考

AWS CloudFormation StackSets サンプルテンプレート