見落としがちな CloudTrail 証跡設定を確認し、マルチリージョン証跡に変換してみた
こんにちは。オペレーション部のShiinaです。
はじめに
AWS 環境のセキュリティと運用の可視性を高めるうえで欠かせないのが、AWS CloudTrail による管理イベントの記録です。
すべてのリージョンで CloudTrail の管理イベントログを記録することは、セキュリティベストプラクティスとして強く推奨されています。
この点は、AWS Trusted Advisor のチェック項目「AWS CloudTrail 管理イベントのログ記録」[1]にも含まれています。
新しく AWS アカウントを作成した際に CloudTrail の証跡を設定することは多いですが、運用が進む中でその設定を見直す機会は意外と少ないですよね。
「すべてのリージョンで記録されているはず」と思っていたら、実はシングルリージョン証跡で、一部リージョンの操作が記録されていなかったというケースもあります。
今回は、CloudTrail 証跡の設定を確認し、必要に応じてシングルリージョン証跡からマルチリージョン証跡へ変換する手順をやってみました。
なぜ全リージョンでのログ記録が必要なのか
CloudTrail のログ記録を全リージョンで有効化することで、セキュリティの強化とシステムのレジリエンス向上が期待できます。
たとえば、アクセスキーの不正利用などのセキュリティインシデントが発生した際、CloudTrail のログがあれば迅速な原因究明と被害の最小化が可能になります。
攻撃者は、普段利用していないリージョンを狙って不審な操作を行うこともあるため、すべてのリージョンで管理イベントを記録しておくことが重要です。
また、障害発生時にも、全リージョンのログがあれば原因の特定がスムーズになり、結果として復旧時間の短縮につながります。
全リージョンでのログ記録はセキュリティ対策としてだけでなく、可用性や運用効率の面でも大きなメリットがあります。
CloudTrail 証跡について
90 日間を過ぎた CloudTrail イベント履歴を記録するには証跡を作成する必要があります。
証跡はマネジメントコンソールを利用して作成することができ、コンソールから作成した場合はデフォルトでマルチリージョン証跡を作成される仕様です。
一方、CloudFormation テンプレートや AWS CLI を利用して証跡を作成した場合、デフォルトではシングルリージョン証跡となります。
マルチリージョン証跡を作成するにはパラメーターによる明示的な指定が必要な点には注意が必要です。
CloudFormation
マルチリージョン証跡を作成するにはIsMultiRegionTrailパラメータ[2]でtrueの指定が必要です。
- テンプレート例
CloudTrail:
Type: AWS::CloudTrail::Trail
DependsOn:
- CloudTrailBucketPolicy
Properties:
TrailName: !Ref TrailName
S3BucketName: !Ref CloudTrailBucket
IncludeGlobalServiceEvents: true
IsLogging: true
EnableLogFileValidation: true
IsMultiRegionTrail: true
EventSelectors:
- ReadWriteType: All
IncludeManagementEvents: true
AWS CLI
マルチリージョン証跡を作成するには--is-multi-region-trailパラメータ[3]の指定が必要です。
- コマンド例
aws cloudtrail create-trail --name my-trail --s3-bucket-name amzn-s3-demo-bucket --is-multi-region-trail
マルチリージョン証跡(推奨)
- 有効になっているすべての AWS リージョンのイベントを記録します。
- 証跡は、作成したリージョンで一元管理できます。
- 新しいデフォルトリージョンが追加された場合も、自動的に記録対象となります。
- オプトインリージョンを有効化すると、そのリージョンにもマルチリージョン証跡のコピーが作成され、同様にイベントが記録されます。
シングルリージョン証跡
- 証跡を作成したリージョンのみの管理イベントを記録します。
- 他のリージョンで発生したイベントは記録されません。
- 複数のリージョンで個別に証跡を作成していた場合、新しく追加されたデフォルトリージョン、オプトインリージョンに対して証跡の作成を忘れており、イベントが記録されていないケースがあります。
やってみた
CloudTrail 証跡の設定確認
現在の証跡がシングルリージョン証跡、マルチリージョン証跡どちらになっているか確認してみます。
マネジメントコンソールから確認する
CloudTrail サービスを選択し、ナビゲーションメニューから[証跡]を選択します。
証跡一覧より証跡名を選択します。
全般的な詳細よりマルチリージョンの証跡の項目で判断できます。
- はい:マルチリージョン証跡
- いいえ:シングルリージョン証跡

AWS CLI で確認する
- コマンド例
aws cloudtrail describe-trails
- 出力例
{
"trailList": [
{
"Name": "your-trail-name",
"S3BucketName": "your-bucket-name",
"IncludeGlobalServiceEvents": true,
"IsMultiRegionTrail": false,
"HomeRegion": "ap-northeast-1",
"TrailARN": "arn:aws:cloudtrail:ap-northeast-1:XXXXXXXXXXXX:trail/your-trail-name",
"LogFileValidationEnabled": true,
"HasCustomEventSelectors": false,
"HasInsightSelectors": false,
"IsOrganizationTrail": false
}
]
}
IsMultiRegionTrailで判断できます。
false:シングルリージョン証跡true:マルチリージョン証跡
シングルリージョン証跡からマルチリージョン証跡へ変換
シングルリージョン証跡をマルチリージョン証跡に変更するには AWS CLI による操作が必要です。
マネジメントコンソールでは変更できません。
- コマンド例
aws cloudtrail update-trail --name my-trail --is-multi-region-trail
{
"Name": "your-trail-name",
"S3BucketName": "your-bucket-name",
"IncludeGlobalServiceEvents": true,
"IsMultiRegionTrail": true,
"TrailARN": "arn:aws:cloudtrail:ap-northeast-1:XXXXXXXXXXXX:trail/your-trail-name",
"LogFileValidationEnabled": true,
"IsOrganizationTrail": false
}
"IsMultiRegionTrail": trueと出力されたらマルチリージョン証跡に変換されたことを確認できます。
まとめ
すべてのリージョンで CloudTrail 管理イベントログを記録するマルチリージョン証跡の設定は、セキュリティとレジリエンスの両面で重要です。
CloudFormation や AWS CLI で証跡を作成する場合、デフォルトではシングルリージョン証跡となるため注意が必要です。
シングルリージョン証跡を利用している場合は、マルチリージョン証跡の利用が推奨されます。
本記事が参考になれば幸いです。
参考
https://docs.aws.amazon.com/ja_jp/awssupport/latest/user/security-checks.html#aws-cloudtrail-man-events-log ↩︎
https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-cloudtrail-trail.html#cfn-cloudtrail-trail-ismultiregiontrail ↩︎
https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/create-trail.html ↩︎







