AWS Config カスタムルール - AWS Config

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Config カスタムルール

AWS Config カスタムルールは、最初から作成するルールです。AWS Config カスタムルールを作成するには、Lambda 関数 (AWS Lambdaデベロッパーガイド) を使用する方法と、ポリシーをコード化する言語である Guard (Guard GitHub リポジトリ) を使用する方法の 2 つがあります。

Lambda で作成された AWS Config カスタムルールは AWS Config カスタム Lambda ルールと呼ばれ、Guard で作成された AWS Config カスタムルールは AWS Config カスタムポリシールールと呼ばれます。

AWS Config カスタムポリシールール

Guard を使用して記述されたルールは、AWS Config コンソールまたは AWS Config ルール API を使用して作成できます。AWS Configカスタムポリシールールを使用すると、Lambda 関数を開発してカスタムルールを管理するために Java または Python を使用することなく、AWS Config カスタムルールを作成できます。カスタムポリシールールは、設定の変更によって開始されます。詳細については、「Guard GitHub Repository」を参照してください。

AWS Config カスタム Lambda ルール

カスタム Lambda ルールでは、Java または Python を使用して AWS Config カスタムルール用に Lambda 関数を作成するオプションが提供されます。Lambda 関数は、AWS Lambda にアップロードするカスタムコードです。イベントソースから発行されたイベントに応じて、この関数が呼び出されます。Lambda 関数を AWS Config ルールに関連付けると、このルールが開始されたときに AWS Config がこの関数を呼び出します。呼び出された Lambda 関数は、AWS Config から送信された設定情報を評価し、評価結果を返します。Lambda 関数の詳細については、[AWS Lambda デベロッパーガイド]の [関数とイベントソース] を参照してください。

重要

不必要な AWS Config カスタム Lambda ルール評価の回避

AWS Config カスタム Lambda ルールを作成する場合、削除されたリソースの評価を処理するロジックを追加することを強く推奨します。

評価結果が NOT_APPLICABLE としてマークされている場合、削除およびクリーンアップの対象としてマークされます。NOT_APPLICABLE としてマークされていない場合は、ルールが削除されるまで評価結果が変更されないため、ルールの削除時に ResourceCompliance の設定項目 (CI) の作成が予想以上に急増する可能性あります。

NOT_APPLICABLE に削除されたリソースを返す AWS Config カスタム Lambda ルールの設定方法については、「Managing deleted resources with AWS Config custom lambda rules」を参照してください。

注意: AWS Config カスタムポリシールールは、デフォルトでこの動作を処理します。

注記

高頻度の Lambda 関数の呼び出し

AWS Config カスタム Lambda ルールでは、そのルールが 1 つ以上のリソースタイプの対象範囲になっていない場合、高頻度で Lambda 関数が呼び出される可能性があります。アカウントに関連するアクティビティの増加を回避するには、カスタム Lambda ルールの対象範囲内のリソースを提供してください。リソースタイプが選択されていない場合、そのルールによってアカウント内のすべてのリソースの Lambda 関数を呼び出します。

トリガータイプ

アカウントにルールを追加すると、AWS Config はリソースをルールの条件と比較します。この初期評価後は、評価がトリガーされるたびに AWS Config で評価が実行されます。評価のトリガーは、ルールの一部として定義されます。以下のタイプを含めることができます。

設定変更

AWS Config は、ルールのスコープと一致するリソースがあり、そのリソースの設定に変更があったときに、ルールに対して評価を実行します。AWS Config設定項目の変更通知を送信後に、評価が実行されます。

どのリソースで評価を開始するかは、ルールのスコープで定義します。スコープには以下を含めることができます。

  • 1 つ以上のリソースタイプ

  • リソースタイプとリソース ID の組み合わせ

  • タグキーとタグ値の組み合わせ

  • 記録対象リソースの作成、更新、または削除時

AWS Config は、ルールのスコープに該当するリソースで変更を検出すると、評価を実行します。スコープを使用して評価を開始するリソースを定義できます。

定期的

AWS Config では、指定した間隔 (24 時間ごとなど) で、ルールの評価を実行します。

ハイブリッド

一部のルールでは、設定変更と定期的なトリガーの両方があります。これらのルールでは、AWS Config によって、設定変更の検出時と、ユーザー指定の間隔でリソースを評価できます。

評価モード

AWS Config ルールには、2 種類の評価モードがあります。

プロアクティブ

プロアクティブ評価は、デプロイ前のリソースを評価するために使用します。これにより、AWS リソースを定義するために使用した一連のリソースプロパティが、リージョンのアカウントにあるプロアクティブなルールセットに照らして、COMPLIANT または NON_COMPLIANT であるかを評価できます。

詳細については、「評価モード」を参照してください。プロアクティブ評価をサポートするマネージドルールのリストについては、「評価モード別の AWS Config マネージドルールのリスト」を参照してください。

注記

プロアクティブルールは、NON_COMPLIANT のフラグが付けられたリソースを修正したり、これらのリソースのデプロイを妨げたりしません。

検出

検出評価は、デプロイ済みのリソースを評価するために使用します。これにより、既存のリソース構成の設定を評価できます。

AWS Config カスタム Lambda ルールにより削除されたリソースを管理する

削除されたリソースをレポートするルールは、不必要なルール評価を避けるために、NOT_APPLICABLE の評価結果を返す必要があります。

リソースを削除すると、AWS Config は configurationItemStatusconfigurationItemResourceDeleted を作成します。このメタデータを使用して、ルールによって削除されたリソースについてレポートされているかを確認できます。設定アイテムの詳細については、「概念 | 設定項目」を参照してください。

以下のコードスニペットを使用して、削除されたリソースをチェックし、削除されたリソースを NOT_APPLICABLE にレポートする AWS Config カスタム Lambda ルールの評価結果を設定します。

Custom Lambda Rules (Node.js)
// Check whether the resource has been deleted. If the resource was deleted, then the evaluation returns not applicable. function isApplicable(configurationItem, event) { checkDefined(configurationItem, 'configurationItem'); checkDefined(event, 'event'); const status = configurationItem.configurationItemStatus; const eventLeftScope = event.eventLeftScope; return (status === 'OK' || status === 'ResourceDiscovered') && eventLeftScope === false; }
Custom Lambda Rules (Python)
# Check whether the resource has been deleted. If the resource was deleted, then the evaluation returns not applicable. def is_applicable(configurationItem, event): try: check_defined(configurationItem, 'configurationItem') check_defined(event, 'event') except: return True status = configurationItem['configurationItemStatus'] eventLeftScope = event['eventLeftScope'] if status == 'ResourceDeleted': print("Resource Deleted, setting Compliance Status to NOT_APPLICABLE.") return (status == 'OK' or status == 'ResourceDiscovered') and not eventLeftScope
注記

AWS Config マネージドルールおよび AWS Config カスタムポリシールールでは、デフォルトでこの動作を処理します。

AWS Config 開発キット (RDK) および AWS Config 開発キットライブラリ (RDKlib) を使用して Python で AWS Config カスタム Lambda ルールを作成した場合、インポートされた Evaluator クラスによって、この動作をチェックします。RDK および RDKLib でルールを記述する方法については、「RDK および RDKLib でルールを記述する」を参照してください。