AWS Config Aggregator を委任してマルチアカウント&マルチリージョンの評価を集約する

記事タイトルとURLをコピーする

CI部 佐竹です。
本日は、AWS Organizations に統合された AWS Config をメンバーアカウントに委任し、AWS Config Aggregator(アグリゲーター)を活用したデータ集約の設定方法について記載します。

はじめに

AWS Config における「アグリゲーター」とは、各アカウントの Config Rules による評価の結果をまとめて表示することが可能となる機能です。

アカウントは Organization (組織)内に全て存在する場合は組織単位でアグリゲーターが有効にできます。また、組織に存在していなくとも、VPC Peering のようにアグリゲーターの設定を承諾することで、特定のアカウントの情報を集約することも可能です。

今回は、AWS Organizations を活用しているシーンにおいての AWS Config アグリゲーターの設定について記載します。

委任する背景について

f:id:swx-satake:20210819180215p:plain

前提として、Organizations における統合機能の役割は Management Account が担います。そして最大 3 つのメンバーアカウントにその役割をサービス単位で委任 (delegate) できます。

何故、委任したいのでしょうか?

端的にいうと、Management Account にはログインさせたくないため、ようは役割の分離です。

今回の例では、監査用のアカウント(777788889999)に対して Config アグリゲーターを委任します。こうすることで、監査メンバーは全アカウントをまたいだ Config Rules の評価を監査用アカウントから閲覧できることになるため、Management Account にログインする必要がなくなります。

マルチアカウントの運用では、このようにうまく委任を使って特定の AWS アカウントにセキュリティに関する表示をまとめていくことになります。

実際の設定

Config に関する設定は、現在マネジメントコンソールに実装されていない機能になりますため、CLI 等で対応を行う必要があります。実行には CloudShell を活用するのがおすすめです。

Management Account での委任の実施

以下のコマンドを Management Account の CloudShell から実行します。

aws organizations enable-aws-service-access --service-principal=config.amazonaws.com

これにより、信頼されたアクセスが有効化され「Organizations で統合された AWS Config が利用可能」となります。合わせて、以下の設定で Organizations で有効化されたサービスをリスト表示できます。

aws organizations list-aws-service-access-for-organization

マネジメントコンソールの場合は、「Organizations のサービス一覧」から表示が Access enabled になっていることを確認してください。

f:id:swx-satake:20210819182036p:plain

Management Account での管理者アカウントの委任

Management Account の CloudShell で継続してコマンドを実行します。77778889999 は適切な委任先となるアカウントIDに変更してください。

aws organizations register-delegated-administrator --service-principal config.amazonaws.com --account-id 77778889999

正常にコマンドが実行された場合に特に返り値はありません。正しく実行された後、以下のコマンドで確認が可能です。

aws organizations list-delegated-administrators --service-principal=config.amazonaws.com

返り値は以下のようになります。

{
    "DelegatedAdministrators": [
        {
            "Id": "777788889999",
            "Arn": "arn:aws:organizations::123456789012:account/o-13579abcde/777788889999",
            "Email": "AuditAccount@serverworks.co.jp",
            "Name": "AuditAccount",
            "Status": "ACTIVE",
            "JoinedMethod": "CREATED",
            "JoinedTimestamp": "2021-07-21T04:22:06.531000+00:00",
            "DelegationEnabledDate": "2021-08-19T01:54:24.865000+00:00"
        }
    ]
}

値が正しく返っていれば成功です。

なお、この設定はマネジメントコンソールから確認ができないため、CLI で確認ください。

これらの CLI 実行により、委任されたアカウントで Config Aggregator の組織を跨いだ集約設定が可能となりました。

委任されたアカウントで Config Aggregator を設定する

ここからは委任されたアカウント 77778889999 のマネジメントコンソールから設定します。

Config のコンソールを開き、Aggregators を選択します。

f:id:swx-satake:20210820111611p:plain

「Create aggregator」を押下して設定を進めます。

f:id:swx-satake:20210820111941p:plain

まずは「Allow data replication」ですが、これはアグリゲーターを使うのに必須のオプションなのでチェックを入れます。

f:id:swx-satake:20210820131900p:plain

「Aggregator name」は適宜設定してください。スペースが含められない点に注意ください。

f:id:swx-satake:20210820124415p:plain

「Select source accounts」では、初期は特定のアカウントを指定して集約する設定になっています。今回は組織ベースで集約したいため、「Add my organization」を選択します。

「Choose IAM role」では、「Create a role」を選択して IAM Role を自動作成するのに任せたほうが楽です。名称は ConfigAggregatorRole など適当な名前を設定ください。

作成される ConfigAggregatorRole は、AWSConfigRoleForOrganizations という AWS Managed Policy が付与された IAM Role になります。権限は以下の通りですので、念のためご認識ください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "organizations:ListAccounts",
                "organizations:DescribeOrganization",
                "organizations:ListAWSServiceAccessForOrganization",
                "organizations:ListDelegatedAdministrators"
            ],
            "Resource": "*"
        }
    ]
}

f:id:swx-satake:20210820141735p:plain

また ConfigAggregatorRole の Trusted entities は Config が選択されます。

最後にリージョンを指定します。

f:id:swx-satake:20210820141356p:plain

今回は、現在のリージョンを全て選択します。

f:id:swx-satake:20210820132003p:plain

その後、「Include future AWS regions」にチェックを入れます。これを入れておけば、今後リージョンが新しく追加された場合でも自動的に集約してくれます。

最後に、画面右下の「Create aggregator」を押下して設定は完了です。

ただし、アグリゲーターを作成したあと数時間待たないと情報が連携されませんので、設定完了後は一晩くらい寝かせておくと良いでしょう。

f:id:swx-satake:20210820143036p:plain

正常に集約された場合は、上画像の通り全てのアカウントの状況がアグリゲーターに集約された状態で閲覧できます。

トラブルシューティング

トラブルシューティングの例をご紹介します。アグリゲーターの設定完了後に、以下のメッセージが表示される場合があります。

f:id:swx-satake:20210820142050p:plain

このメッセージが出る場合、正しくアグリゲーターがデータ集約できていないことを示しています。「View details」を押下して原因を特定します。

f:id:swx-satake:20210820142207p:plain

今回は以下のエラーでした。

Unable to fetch AWS Organizations details due to an invalid IAM role or your AWS account has been deregistered from the delegated administrator. Include a valid IAM role in the configuration aggregator or AWS Organizations management account must register this account as a delegated administrator.

原因は、AWS Organizations の SCP で Organizations の ListAccounts 等を禁止していたために発生していました。この制御を外すことで上記の問題は解決できました。同様の問題が発生する場合は、SCP 含め IAM Role の権限周りを確認ください。

以下の公式ドキュメントにもトラブルシューティングについて記載がありますので、うまく設定が完了しない場合は合わせてご確認ください。

docs.aws.amazon.com

本設定に関して参考になる記事

以下は AWS 公式の記事です。合わせて参考ください。

Set up an organization-wide aggregator in AWS Config using a delegated administrator account

aws.amazon.com

Multi-Account Multi-Region Data Aggregation

docs.aws.amazon.com

Why am I getting errors setting up an AWS Organizations member account as a delegated administrator for AWS Config rules?

aws.amazon.com

まとめ

本日は、AWS Organizations に統合された AWS Config をメンバーアカウントに委任した後、AWS Config アグリゲーターを活用したデータ集約の設定方法について記載しました。

最初、委任等が API でしか設定できない点が少々わかりにくいですが、設定自体は簡単にできます。

AWS Config Rules の状況を組織(Organization)でまとめて閲覧されたい方にお勧めの機能です。委任はマストではありませんが、セキュリティ系のサービスを切り出したアカウントで運用されるのがベターです。これらの設計に関しては、以下のブログを合わせてご参考ください。

blog.serverworks.co.jp

ではまたお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023 Japan AWS Top Engineers/2020-2023 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。