新サービス『AWS CloudTrail』のユーザーガイドを読んでみた / Trail(証跡)の作成と更新

2013.11.16

シリーズ第2弾は『Trail(証跡)の作成と更新』です。ここでは実際に証跡を作ってみたいと思います。

目次

 

AWS管理コンソールを使ったCloudTrailの証跡作成方法

  • 1.管理コンソールにサインインし、リージョンが可能なサービスを一旦選択し、リージョンを対応しているもの(US East:N Virginia/US West:Oregon)に変更した上でCloudTrailを選択します。
    CloudTrail-01
    CloudTrail-04

    • 対応していないリージョン(例えば東京など)でCloudTrailを選択すると、以下のようにその旨が記載されたメッセージが表示されます。
      CloudTrail-02
  • 2.[Get Started]を押下。
    CloudTrail-05
  • 3.CloudTrailのページに遷移。[Create a new S3 Bucket?]ではYesを選ぶとバケットを作成し、Noを選ぶと既存のバケットから選択する形になります。
    CloudTrail-07
  • 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トピックの名前を指定。
    CloudTrail-06
    (SNSについては以下の内容でCloudTrail登録前に作成しました)
  • 9.[Subscribe](購読)をクリック。
  • 10.約15分以内のうちに、前述のステップ完了以降のアカウントに於けるAWS API呼び出しを表示するCloudTrailはログファイルの配信が始まります。
    CloudTrail-08

 

AWS管理コンソールを使ったCloudTrailの証跡更新方法

上記作成後、改めてサービスのTOPページに遷移してみると以下のような形で画面が表示されていました。1リージョン1Trail(証跡)という訳ですね。変更に関してはTOP画面右上の[Edit]のリンクをクリックし、遷移後の画面で適宜変更が可能となっています。[Save]ボタン押下で情報が反映されます。

CloudTrail-10

CloudTrail-09

 

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(証跡)の作成や更新等を行ってみました。とても簡単かつシンプルに確認出来ましたし、既存サービスの内容に影響を与えるものでもない(ログファイルは別の場所に生成される)ので、お使いのアカウントでも是非試してみてはいかがでしょうか。