単一リージョンでCloudTrailの証跡を作成してみた。
こんにちは、AWS事業本部@福岡のべこみん(@beco_minn)です。
皆さん、CloudTrailコンソールで証跡の作成をしたことはありますか?
コンソール上で証跡を作成しようとすると、このようなメッセージが表示されていると思います。
コンソールで作成された証跡は、マルチリージョンの証跡です。
AWS CloudTrailでは、検出に関するベストプラクティス1として「すべてのリージョンに適用される証跡の作成」が推奨されています。
一方、現在は非推奨とはなっていますが単一リージョンにのみ適用される証跡の作成もAWS CLIを使用することで行うことが出来ます。
気になったのでAWS CLIを使用した単一リージョン適用の証跡作成方法と使用するコマンドについて調べてみました。
大事なことなのでもう一度言いますが、単一リージョンでの証跡作成は推奨されていません。
いきなりまとめ
- 単一リージョン適用の証跡は非推奨
- 単一リージョン適用の証跡作成には
create-trail
コマンドを使用する create-trail
コマンドではデフォルトで単一リージョン適用- すべてのリージョン適用にする場合は
--is-multi-region-trail
オプションをつける必要あり
- すべてのリージョン適用にする場合は
単一リージョンの証跡を作成するには?
AWS CloudTrailのユーザーガイド2にも記載がありますが、AWS CLIのcreate-trail
というコマンドを使用することでのみ単一リージョン適用の証跡を作成することが出来ます。
詳細は後述しますが、特にオプションは付けずデフォルトの状態でcreate-trail
を使用すると単一リージョン適用の証跡を作成することが出来るようです。
create-trail
コマンドについて
それではcreate-trail
コマンドについて見ていきましょう。
AWS CLI Command Reference - create-trail
create-trail
はCloudTrail APIコマンドの1つです。
証跡の名称(--name
)とログ格納先のS3バケット名称(--s3-bucket-name
)のみが必須オプションとなっています。
下表に各オプションをまとめました。
必須 | オプション | 役割 | 備考 |
---|---|---|---|
○ | --name |
作成する証跡の名前を指定 | |
○ | --s3-bucket-name |
ログファイル格納用のS3バケット名を指定 | S3バケットはコマンド実行前に作成する必要あり |
--s3-key-prefix |
キープレフィックスを指定 | ||
--sns-topic-name |
ログファイル配信の通知用に定義されたAmazon SNSトピック名を指定 | ||
--include-global-service-events |
IAM等のグルーバルサービスのイベントも取得する場合に指定 | 指定しない場合は--no-include-global-service-events (デフォルト) |
|
--is-multi-region-trail |
証跡をマルチリージョンで作成する場合に指定 | 指定しない場合は--no-is-multi-region-trail (デフォルト) |
|
--enable-log-file-validation |
ログファイルの整合性の検証を有効にする場合に指定 | 指定しない場合は--no-enable-log-file-validation (デフォルト) |
|
--cloud-watch-logs-log-group-arn |
ログを配信するロググループのARNを指定 | --cloud-watch-logs-role-arn を指定した場合にのみ必須 |
|
--cloud-watch-logs-role-arn |
CloudWatch Logsエンドポイントがロググループに書き込むために使用するIAMロールのARNを指定 | ||
--kms-key-id |
ログの暗号化に使用するKMSキーIDを指定 | 値は、"alias/"プレフィックスを付けたエイリアス名、エイリアスARN、キーARN、グローバルに一意のキーID、のいずれかを指定可能 | |
--is-organization-trail |
Organizations 組織内のすべてのAWSアカウントに証跡を作成する場合に指定 | 指定しない場合は--no-is-organization-trail (デフォルト) |
|
--tags-list |
key-valueのリスト形式で証跡のタグを指定 | ||
--cli-input-json |
--generate-cli-skeleton で生成したテンプレートファイルを指定 |
yamlの場合は--cli-input-yaml |
|
--generate-cli-skeleton |
このオプションを指定すると、コマンドは実行せずにパラメータテンプレートを生成して表示する | 値は、input (デフォルト)、 input-yaml 、output のいずれかを指定可能 |
--cli-input-json
/ --cli-input-yaml
と--generate-cli-skeleton
はAWS CLIのユーザーガイドでも紹介されており、create-trail
コマンド独自のオプションというわけではありません。3
やってみた
ということで、AWS CLIで単一リージョンの証跡を作ってみました。
お手軽にCLIコマンドを実行出来るAWS CloudShellでこのコマンドを実行してみます。
aws cloudtrail create-trail --name demo-trail --s3-bucket-name demo-trail-bucket-20220226
create-trail
はデフォルトで単一リージョンとなっているため、--no-is-multi-region-trail
オプションは付けていません。
--s3-bucket-name
で指定したバケットは事前に作成しています。
CloudTrailがアクセス出来るようにS3バケットはバケットポリシーを変更する必要があります。4
実行結果はこちらです。
[cloudshell-user@ip-10-0-38-162 ~]$ aws cloudtrail create-trail --name demo-trail --s3-bucket-name demo-trail-bucket-20220226 { "Name": "demo-trail", "S3BucketName": "demo-trail-bucket-20220226", "IncludeGlobalServiceEvents": true, "IsMultiRegionTrail": false, "TrailARN": "arn:aws:cloudtrail:ap-northeast-1:123456789012:trail/demo-trail", "LogFileValidationEnabled": false, "IsOrganizationTrail": false }
"IsMultiRegionTrail": false
となっていますね。
単一リージョンの証跡が作成出来たようです。
コンソール上から見るとこんな状態になってます。
コンソール上で証跡を作成するとそのままログ記録が開始されますが、AWS CLIで作成した場合はstart-logging
コマンドを実行しないと開始されません。
最後に
やっぱりAWS CLIのドキュメントを読むとAWSのAPIへの理解が深まって面白いですね。
本記事がどなたかのお役に立てれば幸いです。
以上、べこみんでした。