カスタム Lambda ルール (一般的な例) - AWS Config

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

カスタム Lambda ルール (一般的な例)

カスタム Lambda ルールを作成する手順は以下のとおりです。カスタム Lambda ルールを作成するには、まずルールの評価ロジックを含む AWS Lambda 関数を作成します。次に、この関数と作成するカスタム Lambda ルールを AWS Configで関連付けます。

重要

Lambda 関数を呼び出すアクセス AWS Config 許可を付与する際のセキュリティのベストプラクティスとして、Lambda のリソースベースのポリシーで sourceARNおよび/または sourceAccountId 呼び出しリクエストでアクセスを制限することを強くお勧めします。詳細については、「AWS Lambda リソースベースのポリシーにおけるセキュリティのベストプラクティス」を参照してください。

カスタム Config ルール用の AWS Lambda 関数の作成

Lambda 関数は、 にアップロードするカスタムコードであり AWS Lambda、イベントソースによって発行されるイベントによって呼び出されます。Lambda 関数が Config ルールに関連付けられている場合、ルールのトリガーが発生すると、 はその関数を AWS Config 呼び出します。呼び出された Lambda 関数は、 AWS Configから送信された設定情報を評価し、評価結果を返します。Lambda 関数の詳細については、[AWS Lambda デベロッパーガイド]の [関数とイベントソース] を参照してください。

でサポートされているプログラミング言語を使用して AWS Lambda 、カスタム Lambda ルールの Lambda 関数を作成できます。このタスクを簡単にするために、 AWS Lambda 設計図をカスタマイズしたり、 AWS Config ルール GitHubリポジトリからサンプル関数を再利用したりできます。

AWS Lambda の設計図

AWS Lambda コンソールには、独自の評価ロジックを追加することでカスタマイズできるサンプル関数またはブループリント が用意されています。以下の設計図のいずれかを選択して関数を作成できます。

  • config-rule-change-triggered – AWS リソース設定が変更されるとトリガーされます。

  • config-rule-periodic – 選択した頻度でトリガーされます (24 時間ごとなど)。

AWS Config ルール GitHub リポジトリ

カスタム Lambda ルールのサンプル関数のパブリックリポジトリは GitHub、ウェブベースのコードホスティングおよび共有サービスである で利用できます。サンプル関数は AWS コミュニティによって開発され、提供されています。サンプルを使用する場合は、そのコードを新しい AWS Lambda 関数にコピーできます。リポジトリを参照するには、https://github.com/awslabs/aws-config-rules/ にアクセスしてください。

カスタムルール用の関数を作成するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/lambda/ で AWS Lambda コンソールを開きます。

  2. AWS Management Console メニューで、リージョンセレクタが AWS Config ルールをサポートするリージョンに設定されていることを確認します。サポートされているリージョンのリストについては、AWS Config の「Amazon Web Services 全般のリファレンスのリージョンとエンドポイント」を参照してください。

  3. [Create a Lambda function] (Lambda 関数の作成) を選択します。

  4. 「設計図を使用する」ページで、 AWS Config ルールの設計図関数の 1 つを開始点として選択するか、スキップ を選択して設計図なしで続行できます。

  5. [トリガーを設定する] ページで、[次に進む] を選択します。

  6. [[Basic information]](基本的な情報) ページで、名前と説明を入力します。

  7. ランタイムで、関数を記述したプログラミング言語を選択します。

  8. コード エントリ タイプで、使用するエントリタイプを選択します。設計図を使用している場合は、事前設定されたコードをそのまま使用します。

  9. 選択したコードエントリタイプに応じた方法に従ってコードを指定します。設計図を使用している場合は、関数コードがコードエディタに表示されます。このコードをカスタマイズして独自の評価ロジックを追加できます。コードは、関数を呼び出すときに AWS Config が提供するイベントデータを評価できます。

    • config-rule-change-triggered ブループリントに基づく関数、または設定変更によってトリガーされる関数の場合、イベントデータは、変更された AWS リソースの設定項目またはオーバーサイズの設定項目オブジェクトです。

    • config-rule-periodic ブループリントに基づく関数、または選択した頻度でトリガーされた関数の場合、イベントデータは、評価がトリガーされた日時に関する情報を含む JSON オブジェクトです。

    • どちらのタイプの関数でも、 は JSON 形式のルールパラメータを AWS Config 渡します。どのルールパラメータを渡すかは、 AWS Configでカスタム Lambda ルールを作成するときに定義できます。

    • 関数を呼び出すときに が AWS Config 発行するイベントの例については、「」を参照してくださいAWS Config ルールのイベントの例

  10. [Execution role] (実行ロール) ドロップダウンリストで、[Create new role from AWS Policy templates] (ポリシーテンプレートから新しいロールを作成) を選択します。

  11. Role name に名前を入力します。

  12. [ポリシーテンプレート] で、[AWS Config ルールのアクセス許可] を選択します。

  13. 詳細を確認し、[Create function] (関数の作成) をクリックします。

でのカスタムルールの作成 AWS Config

AWS Config を使用してカスタム Lambda ルールを作成し、そのルールを Lambda 関数に関連付けます。

カスタムルールを作成するには
  1. https://console.aws.amazon.com/config/ で AWS Config コンソールを開きます。

  2. AWS Management Console メニューで、リージョンセレクタが、カスタム Lambda ルールの AWS Lambda 関数を作成したリージョンと同じリージョンに設定されていることを確認します。

  3. [Rules] (ルール) ページで、[Add rule] (ルールの追加) を選択します。

  4. [Specify rule type] (ルールタイプの指定) ページで [Create custom rule] (カスタムルールの作成) をクリックします。

  5. [Configure rule] (ルールの設定) ページで、名前と説明を入力します。

  6. AWS Lambda [function ARN] (関数の ARN) で、 AWS Lambda から関数に割り当てられた ARN を指定します。

    注記

    このステップで指定する ARN に $LATEST 修飾子を含めることはできません。バージョン修飾子なしで、または 以外の修飾子を使用して ARN を指定できます$LATEST。 AWS Lambda は関数のバージョニングをサポートし、各バージョンには修飾子を持つ ARN が割り当てられます。 は最新バージョン$LATESTの修飾子 AWS Lambda を使用します。

  7. [Trigger type] (トリガータイプ) で、以下のどちらかまたは両方を選択します。

    • 設定の変更 — 設定の変更を検出すると、Lambda 関数を AWS Config 呼び出します。

    • 定期的 – 選択した頻度で Lambda 関数を AWS Config 呼び出します (24 時間ごとなど)。

  8. ルールのトリガータイプに設定変更 が含まれている場合は、 が Lambda 関数を AWS Config 呼び出す変更の範囲に次のいずれかのオプションを指定します。

    • すべての変更 — によって記録されたリソース AWS Config が作成、変更、または削除された場合。

    • [Resources] (リソース) – 指定したリソースタイプや、リソースタイプおよび修飾子と一致するリソースが作成、変更、または削除された場合。

    • [Tags] (タグ) – 指定したタグと一致するリソースが作成、変更、または削除された場合。

  9. ルールのトリガータイプに定期的な が含まれている場合は、 が Lambda 関数を AWS Config 呼び出す頻度を指定します。

  10. パラメータセクションで、 AWS Lambda 関数が評価するルールパラメータと目的の値を指定します。

  11. [Next] (次へ) を選択します。[Review and create] (確認と作成) ページで、ルールに関する詳細を確認し、[Add rule function] (ルール関数の追加) をクリックします。新しいルールが [Rules] (ルール) ページに表示されます。

    が AWS Lambda 関数から評価結果 AWS Config を受け取るまで、コンプライアンスには評価中と表示されます。ルールと関数が正常に動作している場合は、結果の概要が数分後に表示されます。結果は、更新ボタンを使用して更新できます。

    ルールまたは関数が正常に動作していない場合は、[Compliance] (コンプライアンス) に以下のいずれかが表示されます。

    • 結果は報告されず、リソースがルールに照らして AWS Config 評価されました。ルールがスコープ内の AWS リソースに適用されなかったか、指定したリソースが削除されたか、または評価結果が削除されました。評価結果を取得するには、ルールを更新するか、スコープを変更するか、または [Re-evaluate] (再評価) を選択します。

      このメッセージは、ルールから評価結果が報告されなかった場合にも表示される場合があります。

    • 範囲内にリソースがないため、記録された AWS リソースをこのルールに照らして評価 AWS Config することはできません。これは、どのリソースもルールの範囲内にないためです。 AWS Config で記録するリソースは、[Settings] (設定) ページで選択できます。

    • [Evaluations failed] (評価が失敗しました) - 問題の原因を判断するには、ルール名を選択して詳細ページを開き、エラーメッセージを確認します。

注記

AWS Config コンソールでカスタム Lambda ルールを作成すると、適切なアクセス許可が自動的に作成されます。を使用してカスタム Lambda ルールを作成する場合は AWS CLI、 aws lambda add-permission コマンドを使用して Lambda 関数を呼び出すアクセス AWS Config 許可を付与する必要があります。詳細については、「 AWS Lambda デベロッパーガイド」の AWS Lambda 「 (Lambda 関数ポリシー) のリソースベースのポリシーの使用」を参照してください。

Lambda 関数を呼び出す AWS Config アクセス許可を付与する前に、次のセクション を参照してくださいAWS Lambda リソースベースのポリシーにおけるセキュリティのベストプラクティス

AWS Lambda リソースベースのポリシーにおけるセキュリティのベストプラクティス

セキュリティのベストプラクティスとして、Lambda 関数を呼び出すためにサービスプリンシパル名 (SPN) 全体に呼び出し許可を与えないようにするため、Lambdaリソースベースのポリシーで呼び出しリクエストにsourceARNおよび/またはsourceAccountIdを使用してアクセスを制限することを強く推奨します。

sourceARN は、Lambda 関数を呼び出す AWS Config ルールの ARN です。

sourceAccountId は、ルールを作成したユーザーのアカウント ID です。

Lambda リソースベースのポリシーでアクセスを制限すると、 AWS Lambda が想定されているユーザーとシナリオのみに代わって リソースにアクセスできるようになります。

SPN ベースの権限を追加するには、次の CLI を使用する必要があります

aws lambda add-permission --function-name rule lambda function name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com

SourceAccountId ベースのアクセス許可を追加するには

ルールが作成される前に、次の CLI を使用して、sourceAccountId リソースベースのポリシーにアクセス許可をベースを追加します。

aws lambda add-permission --function-name rule lambda function name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com --source-account your account ID

SourceArn と SourceAccountId ベースのアクセス許可の両方を追加するには

ルールを作成したら、次の CLI を使用して、リソースベースのポリシーに sourceARN ベースのアクセス許可を設定します。これにより、Lambda 関数を許可できるのは、特定のルール ARN のみです。

aws lambda add-permission --function-name rule lambda function name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com --source-account your account ID --source-arn ARN of the created config rule

その他のリソースタイプの評価

カスタム Lambda ルールを作成して、 によってまだ記録されていないリソースタイプの評価を実行できます AWS Config。これは、現在記録 AWS Config されていない追加のリソースタイプのコンプライアンスを評価する場合に便利です。カスタム Lambda ルールで評価できるその他のリソースタイプのリストについては、「AWS リソースタイプのリファレンス」を参照してください。

注記

によって記録されていないリソースタイプのカスタム Lambda を作成する場合 AWS Config、ルールには定期的なトリガータイプが必要です。設定変更のトリガータイプはサポートされていません。詳細については、「の評価モードとトリガータイプ AWS Config ルール」を参照してください。

  1. アカウントの Amazon S3 Glacier を評価する場合。Amazon S3 Glacier は現在 AWS Configのレコード対象外です。

  2. Amazon S3 Glacier ボールトがアカウント要件に準拠しているかどうかを評価する AWS Lambda 関数を作成します。

  3. という名前のカスタム Lambda ルールを作成しevaluate-glacier-vaults 、そのルールに AWS Lambda 関数を割り当てます。

  4. AWS Config は Lambda 関数を呼び出し、ルールに対して Amazon S3 Glacier ボールトを評価します。

  5. AWS Config は評価を返し、ルールのコンプライアンス結果を表示できます。

注記

AWS Config タイムラインで設定の詳細を表示し、 AWS Config コンソールで が AWS Config サポートするリソースを検索できます。すべてのリソースタイプを記録する AWS Config ように を設定した場合、新しくサポートされたリソースは自動的に記録されます。詳細については、「サポートされているリソースタイプ」を参照してください。