(4)以下の画像のように選択を行い、以下のテンプレートファイルをアップロードします。

Resources:
  ConfigRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - "config.amazonaws.com"
            Action:
              - "sts:AssumeRole"
      Path: /
      ManagedPolicyArns:
        - "arn:aws:iam::aws:policy/service-role/AWS_ConfigRole"
  ConfigPolicies: 
    Type: "AWS::IAM::Policy"
    Properties: 
      PolicyName: "ConfigPolicies"
      PolicyDocument: 
        Version: "2012-10-17"
        Statement: 
          - Effect: "Allow"
            Action: 
              - "s3:PutObject"
              - "s3:PutObjectAcl"
            Resource:
              - arn:aws:s3:::<Configイベント保管用のS3バケット>/*
          - Effect: "Allow"
            Action:
              - s3:GetBucketAcl
            Resource:
              - arn:aws:s3:::<Configイベント保管用のS3バケット>
      Roles: 
        - Ref: "ConfigRole"
  
  ConfigRecorder: 
    Type: AWS::Config::ConfigurationRecorder
    DependsOn:
      - ConfigPolicies
    Properties: 
      Name: "任意の名前"
      RoleARN: !GetAtt ConfigRole.Arn
  
  ConfigDeliveryChannel:
    Type: AWS::Config::DeliveryChannel
    Properties:
      Name: "任意の名前"
      S3BucketName: <Configイベント保管用のS3バケット>

※ 上記のテンプレートでは、Configのサービスロールではなく、IAMロールを作成し、そのIAMロールにてS3バケットへの書き込みを行うようにしています。これは公式ドキュメントに記載されているとおり、PrincipalOrgID条件を利用するには、自作したIAMロールでの動作させる必要があるためです。

AWS Config 同じ組織から多くのアカウントを設定して設定アイテムを単一の Amazon S3 バケットに配信する予定があるのであれば、サービスにリンクされたロールではなく IAM ロールを使用してなどの条件キーを使うことをお勧めします。そうすれば AWS Organizations のような AWS:PrincipalOrgID 条件キーが使えます。

※ また、上記のテンプレートでは、グローバルリソースの記録が有効化していないため、必要に応じてIncludeGlobalResourceTypesの追加を検討してください。

(5)ステップ2はデフォルト値のまま進めます

(6)デプロイターゲットとして、Config有効化対象のメンバーアカウントを絞りたい場合は、「OUへのデプロイ」を選択します。本手順では、全メンバーアカウントへ有効化することを想定し、「組織へのデプロイ」を選択します。

(7)リージョンの指定で有効化したいリージョンを選択し、StackSetsを実行します。

(8)オペレーションのステータスがSUCCEEDEDになれば、完了です。

セキュリティアカウントの設定(2)

最後にセキュリティアカウントで集約設定を行います。

Configの設定

(1)ソースアカウントの選択で「組織を追加する」を選択します。

(2)「ロールを作成する」を選択し、組織アグリゲーター用のIAMロールは自動作成します。リージョンはConfigの有効化を行ったすべてのリージョンを選択しておきます。

(3)アグリゲーターが作成されたら集約設定は完了です。集約されてくるまで30分程度時間を要します。

課題となりやすいポイント

(1)KMSやS3の設定時に説明しましたが、現状のキーポリシーやバケットポリシーの仕様上は、厳密にアクセス制御を行うことができません。そのため、本稿で紹介した通り、サービスプリンシパル(Configからのアクセス)かPrincipalOrgID条件のいずれかを選択する必要があります。公式ドキュメントには記載はあるのですが、実際に設定しようとすると、ハマりがちのポイントとなります。

(2)本稿執筆時点では、ConfigとOrganizations連携をしても、Configの一括有効化の仕組みがないため、実際に作業するにあたって、メンバーアカウントのConfigの有効化をどのように行うかは意外と忘れがちなポイントです。本稿で紹介したCloudFormationを利用した方法などを参考にいただければと思います。

まとめ

今回は、Configの組織アグリゲーター作成ステップやそれを実現するうえで課題となりやすいポイントについても紹介しました。前回に紹介したCloudTrailと比べて、複数のAWSアカウントにまたがった操作が多いため、混乱される方も多いでしょう。本稿がお役に立てば幸いです。

次回は、AWS Security HubのOrganizations連携について紹介します。