Amazon Web Services ブログ
AWS CloudTrail を使用した AWS Config 設定レコーダーのコストと使用量の見積もり
AWS Config は、AWS アカウント内の AWS リソースの設定変更を追跡するサービスです。AWS Config は、記録しているリソースタイプの変更を検出するたびに、設定レコーダー を使用して設定項目を作成します。たとえば、AWS Config が Amazon S3 バケットを記録している場合、AWS Config はバケットが作成、更新、または削除されるたびに設定項目を作成します。AWS Config の料金 の一部は、アカウントに記録されている 設定項目 の数に基づいています。ただし、設定項目はワークロードの動作に依存するため、設定項目の数を推定することは難しい場合があります。
この記事では、AWS Config が有効になっている場合に、AWS CloudTrail を使用して設定項目の数の推定値を把握する方法を説明します。AWS CloudTrail は、AWS インフラストラクチャ全体のアカウントアクティビティを監視および記録するサービスです。これらの記録されたイベントは、AWS Config で記録される可能性のある設定項目の推定値を判断するのに役立ちます。AWS Config ルールまたは AWS Config コンフォーマンスパックを利用している場合は、追加の料金がかかります。料金の例については、AWS Config の料金ページ をご覧ください。
ステップ1:AWS CloudTrail でクエリ
前提条件
このブログのサンプル CloudTrail クエリでは、次の設定オプションのいずれかが必要です。
- CloudTrail イベントを受信するための CloudTrail Lake イベントデータストア のセットアップ
- CloudTrail ログをクエリするための Amazon Athena のセットアップ (注: 後述のサンプルクエリを実行するためには Athena テーブル作成時に「managementEvent」カラムを追加する必要があります)
以降のオプションは、環境に設定されているオプションを選択してください。
オプション 1:AWS CloudTrail Lake でクエリを実行
次の CloudTrail Lake のサンプルクエリは、特定の期間内で記録された、AWS サービスに対するAPIイベントの合計を返します。クエリの「eventSource」セクションを変更することで、検索する AWS サービスを追加または削除できます。検索される API イベントは、リソースの状態が変わる可能性のあるイベントです。サンプルクエリでは、「AWS::Config::ResourceCompliance」のように、AWS Config で記録はされるが検索できないリソースタイプがいくつかあります。このクエリから、AWS Config レコーダーがオンになっている場合に記録できる設定項目の数を調べることができます。AWS Pricing Calculator を使用すると、AWS Config の見積もりを作成できます。このクエリを実行すると追加料金が発生することに注意してください。更新された料金については、CloudTrail の料金 ページを確認してください。
- CloudTrail コンソールに移動します。
- 左側のナビゲーションメニューで、「Lake」の下の「クエリ」を選択します。
- 「エディター」を選択します。
- 以下のクエリをコピーして、エディターウィンドウに貼り付けます。(注: 「$EDS_ID」 は「イベントデータストアID」に置き換える必要があります。また、検索したいイベントソースを追加することもできます。)
SELECT
recipientAccountId, awsRegion, eventSource, count(*) as TotalPossibleCI
FROM
$EDS_ID
Where
(eventSource like 'eks%'
or eventSource like 'ec2%'
or eventSource like 'vpc%'
or eventSource like 'ecs%'
or eventSource like 'iam%'
or eventSource like 'autoscaling%'
or eventSource like 's3%'
or eventSource like 'rds%'
or eventSource like 'backup%'
or eventSource like 'athena%'
or eventSource like 'cloudtrail%'
or eventSource like 'cloudfront%'
or eventSource like 'cloudformation%'
or eventSource like 'code%'
or eventSource like 'ecr%'
or eventSource like 'lambda%'
or eventSource like 'efs%'
)
and readOnly=False
and managementEvent=True
and eventTime > '2023-04-01 00:00:00'
AND eventTime < '2023-05-01 00:00:00'
group
by recipientAccountId, awsRegion, eventSource Order by recipientAccountId desc, TotalPossibleCI desc
- 次に、検索期間を検索したい日付と時刻に置き換えます。指定した日付と時刻のみを検索することで、クエリ内でスキャンされるデータ量を減らせます。「EventTime > 」の後の日付文字列は、検索期間の最も早いイベントのタイムスタンプです。「EventTime < 」の後の日付文字列は、検索期間の最も新しいイベントのタイムスタンプです。
- 「実行」をクリックすると、「クエリ結果」に結果が表示されます。TotalPossibleCI 列の値は 1 か月以内に記録された設定項目の合計数で、AWS Config のコストを見積もる際に使用できます。
- クエリを保存しておくと、次回以降、再びクエリを実行することができます。
- 「クエリ名」に「Estimate Amount of AWS Config Configuration Items」と入力します。
- 「説明」に「Estimate of Amount of AWS Config Configuration Items」と入力します。
- 「クエリを保存」をクリックします。
オプション 2:Amazon Athena の AWS CloudTrail クエリ
Amazon Athena を使用するように CloudTrail の証跡を設定している場合、同様のクエリを実行します。以下の Athena クエリのサンプルを使用すると、AWS Config を有効にした場合に作成される可能性のある設定項目の数を推測できます。上記の CloudTrail Lake クエリと同様に、クエリの 「eventSource」 セクションを変更することで、オプションでクエリに AWS サービスを追加または削除できます。 AWS Pricing Calculator を使用することで、クエリ結果のAWS Config レコーダーをオンにした場合に記録される可能性のある設定項目の数から AWS Config のコストを見積もることができます。なお、このクエリを実行すると、追加の料金が発生するので注意してください。追加の料金については、Athenaの料金ページ をご覧ください。
(注: 「${tableName}」 を CloudTrail の Athena テーブル名に置き換え、「eventTime」 フィールドをクエリ対象の日付範囲に合わせて調整する必要があります。また、確認したい「eventSource」を追加することもできます。)
SELECT
recipientAccountId, awsRegion, eventSource, count(*) as TotalPossibleCI
FROM
${tableName}
WHERE
(eventSource like 'eks%'
or eventSource like 'ec2%'
or eventSource like 'vpc%'
or eventSource like 'ecs%'
or eventSource like 'iam%'
or eventSource like 'autoscaling%'
or eventSource like 's3%'
or eventSource like 'rds%'
or eventSource like 'backup%'
or eventSource like 'athena%'
or eventSource like 'cloudtrail%'
or eventSource like 'cloudfront%'
or eventSource like 'cloudformation%'
or eventSource like 'code%'
or eventSource like 'ecr%'
or eventSource like 'lambda%'
or eventSource like 'efs%'
)
AND readonly = 'false'
AND managementEvent = 'true'
AND eventTime > '2023-04-01 00:00:00'
AND eventTime < '2023-05-01 00:00:00'
GROUP BY recipientAccountId, awsRegion, eventSource
ORDER BY recipientAccountId desc, TotalPossibleCI desc;
ステップ 2:AWS Pricing Calculator で見積もりを作成
AWS Pricing Calculator を使用することで、AWS Config レコーダーがオンになっている場合に記録される可能性のある設定項目の数から、毎月のAWS Config のコストを見積もることができます。記録された設定項目は AWS Config の料金の一部に過ぎないことに注意してください。アカウントで実行される AWS Config ルール や コンフォーマンスパックの評価の数も、見積もる必要があります。
- AWS Pricing Calculator ページに移動し、「見積もりを作成」を選択します。
- 「サービスの選択」の下の「サービスを検索」検索ボックスで「AWS Config」を検索し、「AWS Config」 の「設定」を選択します。
- 「AWS Config の設定」セクションに説明を入力し、料金見積もりを作成したいリージョンを選択します。
- 「記録された設定項目」セクションの「記録された設定項目の数」に、以前に CloudTrail で実行したクエリの「TotalPossibleCI」の合計値を入力します。
- これにより、1ヶ月間で記録された設定項目の合計数に対する AWS Config のコストを見積もることができます。
クリーンアップ
CloudTrail Lake に保存されているクエリを削除したい場合は、次の手順を実行してください。
- CloudTrail コンソール に移動します。
- 左側のナビゲーションメニューで、「Lake」の下の「クエリ」を選択します。
- 「保存したクエリ」を選択します。
- 「Estimate Amount of AWS Config Configuration Items」を選択します。
- 「削除」をクリックします。
結論
この記事では、CloudTrail Lake を使用して、AWS Config の設定項目を作成する可能性のある API 関連イベントの数を集計する方法を説明しました。CloudTrail Lake は、さらに別のクエリを使用することで、アカウント内で記録されたアクティビティについてより深い洞察を得ることができます。CloudTrail Lake の詳細については、ブログ記事 AWS CloudTrail Lake の発表 – 監査とセキュリティのためのマネージドデータレイク を参照してください。
著者について
翻訳はテクニカルアカウントマネージャーの日平が担当しました。原文は こちら です。