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

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

AWS Config カスタムルール

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

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

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

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

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 としてマークされていない場合は、ルールが削除されるまで評価結果が変更されないため、ルールの削除時に AWS::Config::ResourceCompliance の設定項目 (CI) の作成が予想以上に急増する可能性あります。

削除されたリソースを返すように AWS Config カスタム Lambda ルールを設定する方法については、AWS Config 「カスタム Lambda ルールによる削除されたリソースの管理NOT_APPLICABLE」を参照してください。

推奨事項: カスタム Lambda ルールの対象となるリソースを提供する

AWS Config ルールが 1 つ以上のリソースタイプにスコープされていない場合、カスタム Lambda ルールは多数の Lambda 関数呼び出しを引き起こす可能性があります。アカウントに関連するアクティビティの増加を避けるため、カスタム Lambda ルールの範囲内にリソースを提供することを強くお勧めします。リソースタイプが選択されていない場合、そのルールによってアカウント内のすべてのリソースの Lambda 関数を呼び出します。

推奨事項: ルールを削除する前にリソースコンプライアンスの記録を停止する

アカウントのルールを削除する前に、AWS::Config::ResourceComplianceリソースタイプの記録を停止することを強くお勧めします。ルールを削除するAWS::Config::ResourceComplianceと、 の CIs が作成され、 AWS Config 設定レコーダーのコストに影響する可能性があります。多数のリソースタイプを評価するルールを削除すると、記録された CIs の数が増加する可能性があります。

ベストプラクティス:

  1. 録画を停止する AWS::Config::ResourceCompliance

  2. ルールを削除する (複数可)

  3. の録音を有効にする AWS::Config::ResourceCompliance

トリガータイプ

アカウントにルールを追加すると、 はリソースをルールの条件 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 の評価結果を返す必要があります。

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

次のコードスニペットを含めて、削除されたリソースをチェックし、 AWS Config カスタム Lambda ルールの評価結果を、削除されたリソースについてレポートNOT_APPLICABLEする場合は に設定します。

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 カスタムポリシールールは、デフォルトでこの動作を処理します。

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