📑
【初心者向け】AWS CloudTrailの管理イベントをKMSで暗号化されたCoudWatch Logsへ送信
はじめに
本ページは個人の勉強で使用することを目的に作成しておりますが、記載の誤り等が含まれる場合がございます。
最新の情報についてはAWS公式ドキュメントをご参照ください。
やること
- AWS CloudTrailの管理イベントをCloudWatch Logs(KMS CMK暗号化) へ送信する。
- 複数リージョンの
ConsoleLogin
イベントが配信される事を確認する。
前提条件
- CloudTrailの管理イベントの証跡を作成済みであること。
- KMSカスタマーマネージドキーを作成済みであること。
1. KMSキーポリシーの修正
- KMSカスタマーマネージドキーのキーポリシーに以下のステートメントを追加します。
{
"Effect": "Allow",
"Principal": {
"Service": "logs.region.amazonaws.com"
},
"Action": [
"kms:Encrypt*",
"kms:Decrypt*",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:Describe*"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"kms:EncryptionContext:aws:logs:arn": "${ロググループ名}"
}
}
}
参考:https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html
2. CloudTrail用のIAMロールの作成
- CloudTrailコンソールのナビゲーションペインからダッシュボードをクリックします。
- 作成済みの証跡の管理画面に移動し、CloudWatch Logsの編集をクリックします。
- CloudWatch Logs - オプションの設定画面で以下の設定値を入力し、変更の保存をクリックします。
- CloudWatch Logs:
有効
- ロググループ:
新規
- ロググループ名:
/aws/cloudtrail/management-event
- IAMロール:
新規
- ロール名:
mori-role-cloudtrail-management-event
- 以下のIAMロールが自動生成されます。
- ロール名:
mori-role-cloudtrail-management-event
ロールの信頼ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- ポリシー名:
Cloudtrail-CW-access-policy-mori-cloudtrail-management-event-77992e95-c167-4d1c-a9a1-86d337ad3060
※自動生成されたポリシー名
許可ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailCreateLogStream2014110",
"Effect": "Allow",
"Action": [
"logs:CreateLogStream"
],
"Resource": [
"${ログストリーム名}*"
]
},
{
"Sid": "AWSCloudTrailPutLogEvents20141101",
"Effect": "Allow",
"Action": [
"logs:PutLogEvents"
],
"Resource": [
"${ログストリーム名}*"
]
}
]
}
ポリシーについて
- ログストリーム名は以下の形式になります。
${アカウントID}_CloudTrail_${証跡を作成したリージョン名}
3. 複数リージョンのCloudTrailログが配信される事を確認する
- AWSアカウントからサインアウトし、以下のURLからサインインします。
https://${アカウントエイリアス}.signin.aws.amazon.com/console?region=ap-northeast-1
※ap-northeast-1:東京リージョン
- AWSアカウントからサインアウトし、以下のURLからサインインする。
https://${アカウントエイリアス}.signin.aws.amazon.com/console?region=ap-northeast-3
※ap-northeast-3:大阪リージョン
- CloudWatchロググループ
/aws/cloudtrail/management-event
のログストリームタブからすべてのログストリームを検索をクリックします。
- ログイベント画面の入力欄に下記を入力し、Enterキーをクリックします。
{ $.eventName = "ConsoleLogin" }
- 東京リージョン・大阪リージョンのサインインイベントがJSONで出力されています。
東京リージョン(ap-northeast-1)のサインインイベント
大阪リージョン(ap-northeast-3)のサインインイベント
おわりに
-
ConsoleLogin
など、複数リージョンにわたるイベントを検索するのに有効です。ただし高コストなので 「リアルタイムでイベントを検知したい」 などの要件が無い場合はやめておいた方がよいかも知れません。
- 次回はCloudTrailのログをDataFirehoseでS3に配信する方法を記事にしたいと思います。
参考
- CloudTrailログをCloudWatch Logsへ配信
- CloudWatch のロググループとログストリームの命名
- CloudWatch Logsの検索フィルターパターン
Discussion