🗼

AWS Control Tower 環境下でAWS Config のリソーストラッキング設定を変更する

に公開

はじめに

AWS Control Tower を導入した環境では、複数の AWS アカウントを一元的にガバナンスし、Landing Zone の構築やガードレールの自動適用を通じて、ベストプラクティスに沿った運用が可能になります。

一方で、Control Tower によって生成・管理される一部のリソースには制約があり、カスタマイズが難しいケースも存在します。たとえば、Service Control Policies(SCP)による操作制限や、AWS Config のレコーダー設定のように Control Tower 側で自動構成される設定の変更が挙げられます。

特に AWS Config のレコーダー設定については、Control Tower が自動的に構築する ConfigRecorder がマネージドな構成であるため、デフォルトでは直接の変更ができません。

本記事にて、実例とともにご紹介します。

背景

あるとき、AWS Organizations 配下の特定のメンバーアカウントにおいて、AWS Config の料金が想定以上に高額となっていることが判明しました。

調査の結果、当該アカウントでは AWS Config によって記録される「ConfigurationItemsRecorded(構成アイテム記録数)」の数値が、他のアカウントと比べて極端に多くなっており、それが課金の主因となっていました。

この現象は、Config の記録対象リソースにおいて頻繁に状態変化が発生していたことが影響しています(例:ECS のタスクの繰り返し起動・停止など)。これにより、Config による変更記録のトラフィックと課金が増大していたと考えられます。

課題

不要な記録を削減するには、AWS Config の レコーダー設定(記録対象リソースや記録頻度)を調整する必要があります。

しかし、AWS Control Tower を導入している環境では、Config レコーダーは Control Tower によって自動的に生成・管理されるため、直接の変更ができません。

このような環境下でも、安全かつ意図的に記録設定を調整できる手段を探す必要がありました。

解決方法

下記のリポジトリに展開されているCloudFormationテンプレート(template.yml)を活用します。
https://github.com/aws-samples/aws-control-tower-config-customization

このテンプレートを使うことで、Control Tower 管理下でも以下のようなパラメータを指定し、Config の記録対象や記録頻度を柔軟にカスタマイズできます。

このテンプレートでは、下記のパラメータが定義されています。

パラメータ名 説明
ConfigRecorderExcludedResourceTypes コンマ区切りで、記録対象から除外する AWS リソースタイプを指定
ConfigRecorderDailyResourceTypes 日次記録に変更するリソースタイプのリスト
ConfigRecorderDefaultRecordingFrequency Continuous または Daily を指定
ExcludedAccounts 本設定を適用「しない」アカウントIDを指定
CloudFormationVersion デプロイ更新時のバージョン番号。初回は 1 を指定すれば OK

検証:テンプレートの適用と設定反映の確認

CloudFormation テンプレートを用いて、Control Tower 管理アカウントのホームリージョンにスタックを作成し、特定リソースを除外+記録頻度を日次に変更する検証を行いました。

デプロイ手順

  • 管理アカウントにて CloudFormation コンソールからテンプレートをアップロード
  • スタック名は aws-config-recording-modify と命名

今回設定したパラメータの値は下記の通りです。

  • ConfigRecorderExcludedResourceTypes

    • AWS::EC2::NetworkInterface,AWS::EC2::SecurityGroup,AWS::EC2::Subnet,AWS::EC2::VPC
  • ConfigRecorderDefaultRecordingFrequency

    • DAILY
  • ExcludedAccounts

    • <本設定を適用させたいAWSアカウント以外の全てのアカウントID>

結果の確認

スタックの作成は 2〜3 分程度で完了しました。

対象のメンバーアカウントにて AWS Config の設定を確認したところ、意図した通りのパラメータで記録対象・記録頻度が反映されていることが確認できました。

まとめ

  • AWS Control Tower 管理下では、一部リソース(例:AWS Config)は自動生成・管理されるため、直接設定変更するには制約がある。
  • 特定アカウントの構成記録が過剰となっている場合、不要なリソースの記録除外や頻度の調整が有効。
  • GitHub 上の CloudFormation テンプレートを活用することで、Control Tower による管理を保ちつつ、柔軟な設定変更が可能。
  • 今回の検証を通じて、意図通りの設定反映が確認でき、今後の Config コスト最適化に向けた一手段として有効な手段の1つとなる

本記事と同様のパターンでお悩みの方の参考になれば幸いです。

GENDA

Discussion