新サービス『AWS CloudTrail』のユーザーガイドを読んでみた / Trail(証跡)の作成と更新
- Amazon Web Services ブログ: 【AWS発表】 AWS CloudTrail - AWS APIコールの記録を保存
- What is AWS CloudTrail - AWS CloudTrail
シリーズ第2弾は『Trail(証跡)の作成と更新』です。ここでは実際に証跡を作ってみたいと思います。
目次
- AWS管理コンソールを使ったCloudTrailの証跡作成方法
- AWS管理コンソールを使ったCloudTrailの証跡更新方法
- AWS CLIを使ったTrail(証跡)の作成と更新
- Trail(証跡)設定とTrail(証跡)ステータスの取得
- Trail(証跡)ログの停止と開始
- Trail(証跡)の削除
AWS管理コンソールを使ったCloudTrailの証跡作成方法
- 1.管理コンソールにサインインし、リージョンが可能なサービスを一旦選択し、リージョンを対応しているもの(US East:N Virginia/US West:Oregon)に変更した上でCloudTrailを選択します。
- 2.[Get Started]を押下。
- 3.CloudTrailのページに遷移。[Create a new S3 Bucket?]ではYesを選ぶとバケットを作成し、Noを選ぶと既存のバケットから選択する形になります。
- 4.[S3 bucket name]フィールドでは、ログファイルストレージとして指定したいバケット名を入力。バケット命名ルール等についてはWelcome to Amazon S3参照。
- 5.(オプション):もしバケットにプレフィックスを入力したい場合、IAMやAWS STSのようなグローバルサービスに入るか、Amazon SNSトピックを作成し、[詳細]をクリックします。
- 6.(オプション):フィールドLog file prefixでは、Amazon S3バケットに対するプレフィックスを入力。
- 7.(オプション):[Include global services?]では、Yes/Noを選択。IAMやAWS STS等のようなグローバルサービスからのAPI呼び出しを記録したい場合はyesを選択します。殆どの状況では、デフォルト設定:Yesを受け入れる事になるでしょう。Noを選択する、この辺シナリオに応じた内容についてはAggregating Log Files to a Single Amazon S3 Bucketを参照。なお、複数リージョンからTrail(証跡)を収集する場合は1つのTrail(証跡)だけにグローバルなサービスを含める事が良いらしいです。グローバル・サービスは全ての地域で同じイベントを生成するので、ログファイル内のグローバルイベントのエントリが重複する事を回避出来ます。
- 8.(オプション):[SNS notification for every log file delivery?](あらゆるログファイル配送に対してSNS通知を行う?)に対してYes/Noを選択。ここでYesを選択する場合、SNS Topic(new)のフィールドにAmazon SNSトピックの名前を指定。
(SNSについては以下の内容でCloudTrail登録前に作成しました) - 9.[Subscribe](購読)をクリック。
- 10.約15分以内のうちに、前述のステップ完了以降のアカウントに於けるAWS API呼び出しを表示するCloudTrailはログファイルの配信が始まります。
AWS管理コンソールを使ったCloudTrailの証跡更新方法
上記作成後、改めてサービスのTOPページに遷移してみると以下のような形で画面が表示されていました。1リージョン1Trail(証跡)という訳ですね。変更に関してはTOP画面右上の[Edit]のリンクをクリックし、遷移後の画面で適宜変更が可能となっています。[Save]ボタン押下で情報が反映されます。
AWS CLIを使ったTrail(証跡)の作成と更新
作成には、aws cloudtrail create-subscriptionコマンドを使います。
- --name:Trail(証跡)の名前
- --s3-use-bucket:既存バケット名(ログファイルストレージに既存のAmazon S3バケットを指定する場合に使う)
- --s3-new-bucket:新規バケット名(コマンド実行時に新しいAmazon S3バケットを指定する場合に使う)
- --s3-prefix:ログファイルの配信パスのプレフィックス。(※オプション)
- --sns-new-topic:ログファイル配信の通知を購読するためのAmazon SNSトピックの名前(※オプション)
以下実行例。
aws cloudtrail create-subscription \ --name=awscloudtrail-example \ --s3-new-bucket=awscloudtrail-new-bucket-example \ --s3-prefix=prefix-example \ --sns-new-topic=awscloudtrail-example-log-deliverytopic
実行結果。
CloudTrail configuration: { "trailList": [ { "S3KeyPrefix": "prefix-example", "IncludeGlobalServiceEvents": true, "Name": "awscloudtrail-example", "SnsTopicName": "awscloudtrail-example-log-deliverytopic", "S3BucketName": "awscloudtrail-new-bucket-example" } ] }
コマンド:update-subscriptionを使い新しい値を設定する事で、Trail(証跡)を更新する事が出来ます。以下例は異なるAmazon S3バケットを指定しています。もし異なる名前を設定したい場合は、Trail(証跡)を削除し、再びcreate-subscriptionを実行。
aws cloudtrail update-subscription \ --name=awscloudtrail-example \ --s3-use-bucket=awscloudtrail-new-bucket-example2 \ --s3-prefix=prefix-example
実行結果。
CloudTrail configuration: { "trailList": [ { "S3KeyPrefix": "prefix-example", "IncludeGlobalServiceEvents": true, "Name": "awscloudtrail-example", "SnsTopicName": "awscloudtrail-example-log-deliverytopic", "S3BucketName": "awscloudtrail-new-bucket-example2" } ] }
Trail(証跡)設定とTrail(証跡)ステータスの取得
Trail(証跡)設定の情報を取得するには以下コマンドを実行します。
aws cloudtrail describe-trails
実行結果。
{ "trailList": [ { "S3KeyPrefix": "prefix-example", "IncludeGlobalServiceEvents": true, "Name": "awscloudtrail-example", "SnsTopicName": "awscloudtrail-example-log-deliverytopic", "S3BucketName": "awscloudtrail-new-bucket-example2" } ] }
Trail(証跡)のステータスを取得するには以下コマンドを実行します。
aws cloudtrail get-trail-status --name awscloudtrail-example
実行結果。
{ "LatestDeliveryAttemptTime": "2013-11-12T20:18:27Z", "LatestNotificationAttemptSucceeded": "2013-11-12T20:18:27Z", "LatestDeliveryAttemptSucceeded": "2013-11-12T20:18:27Z", "IsLogging": true, "TimeLoggingStarted": "2013-11-12T20:19:30Z", "LatestNotificationAttemptTime": "2013-11-12T20:18:27Z", "TimeLoggingStopped": "2013-11-12T20:19:16Z" }
前述のJSONコードで示されるフィールドに加えて、Amazon SNSやAmazon S3にエラーがある場合は、ステータスに以下のフィールドが含まれます。
- LatestNotificationError:トピックへのサブスクリプションが失敗した場合、Amazon SNSによってこのエラーが追加される。
- LatestDeliveryError:CloudTrailがバケットにログファイルを配信出来ない場合、Amazon S3によってこのエラーが追加される。
Trail(証跡)ログの停止と開始
CloudTrailのロギングを開始、停止するには以下のコマンドを実行します。(注:バケット削除前にはstop-loggingを行うべき。でないと、CloudTrailはログファイルの配信を試み続けてしまう事になります))
aws cloudtrail start-logging --name awscloudtrail-example aws cloudtrail stop-logging --name awscloudtrail-example
Trail(証跡)の削除
Trail(証跡)を削除するには以下のコマンドを実行します。
aws cloudtrail delete-trail --name awscloudtrail-example
Trail(証跡)を削除する時は、Amazon S3のバケットまたはそれに関連付けられているAmazon SNSトピックのいずれも削除しないでください。これらの項目を削除したい場合は別途管理コンソールやAWS CLI、またはサービスAPIを使用してください。
まとめ
このエントリでは実際にTrail(証跡)の作成や更新等を行ってみました。とても簡単かつシンプルに確認出来ましたし、既存サービスの内容に影響を与えるものでもない(ログファイルは別の場所に生成される)ので、お使いのアカウントでも是非試してみてはいかがでしょうか。