Tech Sketch Bucket of Technical Chips by TIS Inc.

AWS CloudTrailを使ったログの取得

Pocket

先日の6/30に、AWSの東京リージョンでもAWS CloudTrailが利用できるようになりました。
これにより、東京リージョンを利用している場合でもAWSの操作記録を残すことが可能になります。
これを機に、AWS CloudTrailとはどのようなサービスなのか遅まきながら改めて整理してみました。

CloudTrailとは

AWSの公式サイト では、CloudTrailは以下のように説明されています。

AWS CloudTrail は、アカウントの AWS API の呼び出しを記録し、ログファイルを送信するウェブサービスです。記録される情報には、API 呼び出し元の ID、API 呼び出し元のソース IP アドレス、リクエストのパラメータ、および AWS サービスから返された応答の要素が含まれます。

上記からわかるように、CloudTrailはAWSへの操作に関するログを記録してS3に格納してくれるサービスです。CloudTrailは2013年11月に既に一部のリージョンでサービスが開始されていましたが、先日ようやく東京リージョンでも利用できるようになりました。

CloudTrailが登場する以前には、AWS自体の操作記録をユーザが取得することは出来ませんでした。そのため内部監査の都合上、操作記録が残せないという点からAWSの利用を躊躇していた方もいるかもしれません。また既に利用している方の中には、いつの間にか誰が作ったのかわからないインスタンスやAMIが増えてきたという経験がある方もいるでしょう。
CloudTrailを利用することで、Management ConsoleやCLI, APIを経由して行われた対応するサービスへの操作ログを残すことができるようになります。2014年7月の時点で、CloudTrailは以下の20のサービスに対応しています。主要なサービスには大体対応しているので困ることは少ないでしょう。

  • Amazon Elastic Compute Cloud (Amazon EC2)
  • Amazon Elastic Block Store (Amazon EBS)
  • Amazon Elastic MapReduce (Amazon EMR)
  • Amazon Kinesis
  • Autoscaling
  • Elastic Load Balancing (ELB)
  • Amazon Redshift
  • Amazon Relational Database Service (Amazon RDS)
  • Amazon Virtual Private Cloud (Amazon VPC)
  • Amazon Simple Workflow
  • AWS CloudFormation
  • Amazon CloudFront
  • AWS CloudTrail
  • Amazon CloudWatch
  • AWS Direct Connect
  • AWS Elastic Beanstalk
  • AWS Identity and Access Management (AWS IAM)
  • AWS OpsWorks
  • AWS Security Token Service (AWS STS)
  • AWS Simple Queue Service (AWS SQS)

CloudTrailの利用自体には料金はかかりませんが、ログをS3に保存するためのS3の利用料金は発生します。どの程度頻繁に操作を行っているかにもよると思いますが、 公式サイト によると大体月3ドル未満になるようです。

基本的な使い方

CloudTrailの利用を開始するまでのステップは簡単です。以下の操作を実施すれば利用を開始できます。

1. Management Consoleから設定したいリージョンに切り替えてCloudTrailのサービスを選択し、「Get Started」を選択

cloudtrail_01.png

2. ログを格納するS3のバケットを新規作成 (もしくは既存のS3バケットを選択)

cloudtrail_02.png

3. 設定完了

cloudtrail_03.png

設定が完了すると、先ほど指定したS3バケットにログが保存されるようになります。その他にもAdvanced SettingsからSNS Notificationの設定をすれば、ログファイルが更新されたときに指定したSNSのトピックに通知を行うことも出来ます。
CloudTrailの設定はリージョンごとに個別になっているので、全てのリージョンのログを取得したい場合は全てのリージョンで同様の設定を行う必要があります。複数のリージョンのログを一つにまとめることや、複数のアカウントのログを一つにまとめることも出来るようです。

ログの確認方法

ログは取得するだけでなく、どう活用するかが重要です。CloudTrailで出力されるログはJSONで記述されているので機械的な処理にかけるには便利ですが、人が見てそれほど可読性が高いものではありません。そのため一般的には何らかのログ分析用のツールでログを取得して分析することになると思われます。
しかし個人のアカウントだったりちょっとした検証用のアカウントだと、そこまで用意するのは大変です。簡単な確認程度であれば、jqコマンドを使って整形してみても良いでしょう。

CloudTrailのログは以下のようなフォーマットで記録されています。

普段からこれら全ての情報を確認したいわけではないので、ここから必要な情報だけを抽出する必要があります。
例えば特定の日付の操作記録を確認したい場合は、以下の様なスクリプトがあると便利でしょう。

このスクリプトではs3cmdで最新のログを取得してきた上で特定の日付のログに対し、jqコマンドでDescribe, List, Getが含まれるイベントを取り除き、eventTime, awsRegion, userName, requestParametersの情報だけを出力しています。これを実行すると以下のように出力されます。

普段めったに操作が行われず、ログの量がそこまで多くないアカウントであれば、この出力内容を日次でメールで送っておくだけでも不審な操作の検知に役立つでしょう。

まとめ

CloudTrailを使うとAWSに対して行った操作のログをS3上に残しておくことができます。これまでAWSでは操作ログが取得できず、誰がいつ何の操作を行ったのか後から追うことは困難でしたが、CloudTrailを利用することで操作ログを監査などに活用できるようになります。これにより、エンタープライズシステムを稼動させる環境としてのAWSの魅力がさらに高まったと言えるでしょう。

エンジニア採用中!私たちと一緒に働いてみませんか?