Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンス用にセキュリティグループを設定しています。Amazon EventBridge と Amazon Simple Notification Service (Amazon SNS) を使用して、セキュリティグループに対する変更をモニタリングするにはどうすればよいですか?
簡単な説明
セキュリティグループを変更するための API コールが行われたときにトリガーする EventBridge ルールを作成します。その後、ルールに一致するイベントについての Amazon SNS 通知を設定します。
解決方法
Amazon SNS トピックを作成してサブスクライブする
1. Amazon SNS コンソールを開きます。
2. SNS ダッシュボードで、[Topics] (トピック)、[Create Topic] (トピックの作成) の順に選択します。
3. トピックの名前 (例: my-topic) を入力します。
4. [トピックの作成] を選択します。
5. トピックの Amazon リソースネーム (ARN) を書き留めます (例: arn:aws:sns:us-east-1:123123123123:my-topic)。
6. [サブスクリプションの作成] を選択します。
7. [Topic ARN] (トピック ARN) で、ステップ 5 で書き留めておいた ARN を入力します。
8. [Protocol] (プロトコル) で、[Email] (E メール) を選択します。
9. [Endpoint] (エンドポイント) で、通知を受け取る E メールアドレスを入力し、[Create subscription] (サブスクリプションの作成) を選択します。
サブスクリプションを確認する E メールが届きます。サブスクリプションを確認すると、SNS トピックがトリガーされたときに該当のメールアドレス宛てに通知が送信されます。
EventBridge コンソールを使用して、イベントに対してトリガーする EventBridge ルールを作成する
1. [EventBridge コンソール] を開きます。
2. [Create rule] (ルールを作成) を選択します。
3. ルールの [Name] (名前) を入力します。必要に応じて [Description] (説明) を入力できます。
4. [Define pattern] (パターン定義) で、[Event pattern] (イベントパターン) を選択します。
5. [Pre-defined pattern by service] (サービスごとの事前定義パターン) を選択します。
6. [Service provider] (サービスプロバイダー) で、[AWS] を選択します。
7. [Service name] (サービス名) で、[EC2] を選択します。
8. [Event Type] (イベントタイプ) で、[AWS API Call via CloudTrail] (CloudTrail 経由での AWS API コール) を選択します。
9. [Specific Operation] (特定のオペレーション) を選択し、次の API コールをテキストボックスに 1 つずつコピーして貼り付けます。追加するたびに [Add] (追加) を選択します。これらの API コールは、セキュリティグループルールを追加または削除するために使用されます。
AuthorizeSecurityGroupIngress
AuthorizeSecurityGroupEgress
RevokeSecurityGroupIngress
RevokeSecurityGroupEgress
これらの設定から、次のイベントパターンが作成されます。
{
"source": [
"aws.ec2"
],
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"ec2.amazonaws.com"
],
"eventName": [
"AuthorizeSecurityGroupIngress",
"AuthorizeSecurityGroupEgress",
"RevokeSecurityGroupIngress",
"RevokeSecurityGroupEgress"
]
}
}
10. [Select targets] (ターゲットを選択) で、[Target] (ターゲット) ドロップダウンリストから [SNS topic] (SNS トピック) を選択します。
11. [Topic] (トピック) で、以前に作成したトピックを入力します。
注: デフォルトでは、[Configure input] (インプットの設定) で [Matched event] (一致したイベント) が選択されています。[Matched event] (一致したイベント) は、イベントの JSON 出力全体を SNS トピックに渡します。JSON 出力全体を渡さない場合は、[Input transformer] (インプットトランスフォーマー) を選択してイベント情報をフィルタリングします。JSON 出力全体をターゲットに送信するのではなく、インプットトランスフォーマーを使用して、イベントからテキストをカスタマイズして読みやすいメッセージを作成します。たとえば、[パスの入力] に次の key-value ペアを使用できます。
{"name":"$.detail.requestParameters.groupId","source":"$.detail.eventName","time":"$.time","value":"$.detail"}
[Input Template] (テンプレートの入力) で、メッセージに表示するテキストと変数を入力します。
"A <source> API call was made against the security group <name> on <time> with the below details"
" <value> "
インプットトランスフォーマーのオプションの使用に関する詳細については、チュートリアル: EventBridge がイベントターゲットに渡すものを Input Transformer を使用してカスタマイズするを参照してください。
12. [Create] (作成) を選択します。
関連情報
チュートリアル: AWS CloudTrail API コールに対する Amazon EventBridge ルールの作成