AWS ConfigのアラートをSNSで通知する

概要

AWS Configのアラートを、SNSを介してユーザに通知する方法を示します。

AWS ConfigはEventBridgeにアラートを通知するので、EventBridgeがSNSを起動するように、EventBridgeを設定します。

すると、AWS ConfigのアラートがEventBridge 、SNSを介してSNSの登録メールアドレスに送信されます。

AWS Configの概要

AWS Config は、AWS アカウントにある AWS リソースの設定詳細ビューを提供します。これには、リソース間の関係と設定の履歴が含まれるため、時間の経過と共に設定と関係がどのように変わるかを確認できます。

SNSの作成

SNSの作成方法は省略します。

EventBridgeの設定

EventBridgeがSNSを起動するように、EventBridgeを設定します。

イベントパターンの内容

{
  "source": ["aws.config"],
  "detail-type": ["Config Rules Compliance Change"],
  "detail": {
    "messageType": ["ComplianceChangeNotification"],
    "newEvaluationResult": {
      "complianceType": ["NON_COMPLIANT"]
    }
  }
}

[次へ]をクリックします

入力トランスフォーマの設定

作成されたルールのターゲットを編集します

ターゲットの追加設定をクリックし、

[ターゲット入力を設定]に[入力トランスフォーマ]を選択し、

[入力トランスフォーマを設定]をクリックします。

入力トランスフォーマの入力パスと入力テンプレートを以下のように設定します。

入力テンプレートの各行の両端を”で囲ってください。

[確認]を押して保存してください。

入力トランスフォーマの入力パスの内容

{
  "awsAccountId": "$.detail.awsAccountId",
  "awsRegion": "$.detail.awsRegion",
  "compliance": "$.detail.newEvaluationResult.complianceType",
  "resourceId": "$.detail.resourceId",
  "resourceType": "$.detail.resourceType",
  "rule": "$.detail.configRuleName",
  "time": "$.detail.newEvaluationResult.resultRecordedTime"
}

入力トランスフォーマのテンプレートの内容

"アカウント1234-1234-1234のAWS Configにてルールの確認をお願いいたします。"
"AWSアカウント : <awsAccountId>"
"発生時刻 : <time>"
"ルール名 : <rule>"
"リソースタイプ : <resourceType>"
"リソースID : <resourceId>"


"上記リソースが <compliance> 判定となりました。"
"詳細は以下URLよりご確認ください。"
"https://console.aws.amazon.com/config/home?region=<awsRegion>#/timeline/<resourceType>/<resourceId>/configuration"

入力トランスフォーマの設定の確認

サンプルイベントとして

AWS ConfigのConfig Rules Compliance Changeを選ぶと以下のように表示されます。

サンプルイベントの内容

{
  "version": "0",
  "id": "74a450e0-9050-bf0d-1160-e7dbb3e3e763",
  "detail-type": "Config Rules Compliance Change",
  "source": "aws.config",
  "account": "123456789012",
  "time": "2022-03-15T17:33:28Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "resourceId": "fs-0dcc4daeb657adbd5",
    "awsRegion": "us-east-1",
    "awsAccountId": "123456789012",
    "configRuleName": "efs-resources-protected-by-backup-plan",
    "recordVersion": "1.0",
    "configRuleARN": "arn:aws:config:us-east-1:123456789012:config-rule/config-rule-touwmd",
    "messageType": "ComplianceChangeNotification",
    "newEvaluationResult": {
      "evaluationResultIdentifier": {
        "evaluationResultQualifier": {
          "configRuleName": "efs-resources-protected-by-backup-plan",
          "resourceType": "AWS::EFS::FileSystem",
          "resourceId": "fs-0dcc4daeb657adbd5"
        },
        "orderingTimestamp": "2022-03-15T17:32:48.988Z"
      },
      "complianceType": "NON_COMPLIANT",
      "resultRecordedTime": "2022-03-15T17:33:27.770Z",
      "configRuleInvokedTime": "2022-03-15T17:33:25.449Z",
      "annotation": "Resource is not protected by any Backup Plan."
    },
    "notificationCreationTime": "2022-03-15T17:33:28.758Z",
    "resourceType": "AWS::EFS::FileSystem"
  }
}

サンプルイベントの表示内容を参考にして入力パスに好みのパラメータを追記することができます。

サンプル出力の確認

入力トランスフォーマの下部の[出力を生成]をクリックすると、テンプレートに応じた出力例が表示されます。

これを参考にテンプレートを編集してください。

EventBridge Ruleの作成完了

これでEventBridge Ruleは作成完了です。

AWS Configが異常を検知すると、AWS Config はEventBridge Ruleを起動し、EventBridge RuleはSNSを起動し、ユーザに異常通知のメールが届きます。

タイトルとURLをコピーしました