ログアーカイブアカウントの設定

Configの有効化前に、Configに記録されたイベントを保管するためのS3バケットを用意する必要があるので、ログアーカイブアカウントにてその設定を行います。

S3のバケットポリシーもKMSのキーポリシーと同様に、aws:PrincipalOrgIDの条件とサービスプリンシパル(Principalがconfig.amazonaws.com)を両方指定したアクセス制限ができません。そのため、アクセス制限方式として前手順で紹介したサービスプリンシパルでのアクセス制限かaws:PrincipalOrgID条件を選択いただく必要があります。

以下の手順では、後者のアクセス制限方式を選択した場合を紹介します。

(1)以下のバケットポリシーを持つS3バケットを作成します。

{
 "Version": "2012-10-17",
 "Statement": [
     {
         "Sid": "AWSConfigBucketPermissionsCheck",
         "Effect": "Allow",
         "Principal": "*",
         "Action": "s3:GetBucketAcl",
         "Resource": "arn:aws:s3:::<Configイベント保管用のS3バケット>",
         "Condition": {
             "StringEquals": {
                 "aws:PrincipalOrgID": "自組織のID"
             }
         }
     },
     {
         "Sid": "AWSConfigBucketExistenceCheck",
         "Effect": "Allow",
         "Principal": "*",
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::<Configイベント保管用のS3バケット>",
         "Condition": {
             "StringEquals": {
                 "aws:PrincipalOrgID": "自組織のID"
             }
         }
     },
     {
         "Sid": "AWSConfigBucketDelivery",
         "Effect": "Allow",
         "Principal": "*",
         "Action": "s3:PutObject",
         "Resource": "arn:aws:s3:::<Configイベント保管用のS3バケット>/AWSLogs/*/Config/*",
         "Condition": {
             "StringEquals": {
                 "aws:PrincipalOrgID": "自組織のID",
                 "s3:x-amz-acl": "bucket-owner-full-control"
             }
         }
     }
 ]
}

メンバーアカウントの設定

Configの情報を集約するためには、事前のメンバーアカウントでConfigを有効化しておく必要があります。Configはリージョンサービスであるため、利用するすべてのリージョンでの有効化も必須です。

対象のアカウント数が少なければ、手動での対応でかまいませんが、数が多くなれば、何らかの自動化の仕組みが推奨されます。本稿では、CloudFormation StackSetsを利用してConfigを有効化する方法を紹介します。

(1)CloudFormation StackSetsはデフォルトでは管理アカウントのみでしか操作ができませんので、必要に応じて委任管理者アカウントの設定を行います。公式ドキュメントの手順に従い、実施してください。

(2)CloudFormationのサービスを開き、左ペインでStackSetsを選択します。

(3)サービスマネージドを選択し、「StackSetsの作成」ボタンをクリックします。