Amazon EventBridge API destinations で Microsoft Teams へ通知させる

2022.07.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、森田です。

今回の記事では、Amazon EventBridge API destinations で Microsoft Teams へ通知させる方法をご紹介します。

やりたいこと

AWS Lamnda を利用せずに通知したい内容のみを整理して通知を行います。

通知する内容の整理は、入力トランスフォーマーを利用します。また、今回のイベントのトリガーは、Security Hubの検知とします。

手順

Microsoft Teams の Webhook URL を発行

まずは、Microsoft Teams に通知させるためにWebhook URL を発行します。

手順については以下のブログをご参照ください。

 

Amazon EventBridge Rule の作成

AWSコンソールよりAmazon EventBridge Rule の作成を行います。

SecurityHub からの検知をトリガーにするため、以下のように設定します。

今回私の場合は、SecurityHub に統合した AWS Config のiam-user-unused-credentials-checkの検知をトリガーにするようにしています。

イベントパターン

{
  "detail": {
    "findings": {
      "Title": ["iam-user-unused-credentials-check"],
      "RecordState": ["ACTIVE"],
      "Workflow": {
        "Status": ["NEW"]
      }
    }
  },
  "detail-type": ["Security Hub Findings - Imported"],
  "source": ["aws.securityhub"]
}

続いて、ターゲットの指定を行います。今回は、API destinations とするため、EventBridge API の宛先を指定します。

また、API送信先は、新しい送信先を選択してTeams用に作成していきます。

名前、説明は任意の値を設定します。

API 送信先エンドポイントには、先ほど取得した Microsoft Teams の Webhook URL を指定します。

HTTPメソッドは、POSTとします。

 

接続の設定を行います。

新しい接続を作成を選択し、以下のように入力します。

また、API キーには、Content-Typeとしてapplication/jsonを指定します。

追加設定を選択し、入力トランスフォーマーを設定します。

以下のように取得したい情報のみを入力パスで抽出するようにします。

以下の入力パスですと、リソースのIDとAwsIamUserリソースのUserNameを抽出するように設定しています。

入力パス

{
  "Id": "$.detail.findings[0].Resources[0].Id",
  "UserName": "$.detail.findings[0].Resources[0].Details.AwsIamUser.UserName"
}

テンプレートでは、APIに送信するJSONを指定します。

テンプレート

{
  "text":"# クレデンシャルの利用がないユーザを検知しました\n## 検知内容\n- ユーザ名: **<UserName>** \n\n- ARN : **<Id>**"
}

あとは、次へを選択し、ルールの作成を完了させます。

SecurityHub で検知があると以下のように通知が行われるようになります。

最後に

今回は、AWS Lambda を使わず Microsoft Teams へ通知させる方法をご紹介しました。

検出時にその他処理を行う場合には、やはり AWS Lambda が必要ですが、単純な検出結果の中身を通知させるだけであれば、EventBridge API destinations で実現できます。

AWS Lambda で通知処理を行っている方は、ぜひ一度 EventBridge API destinations も検討してみてはいかがでしょうか。