AWSはCloudTrail Lakeのリリースを発表した。CloudTrailログを保存および分析するフルマネージドデータレイクである。CloudTrail Lakeは、リージョンとアカウント間でログを集約できる。レイクでは、SQL構文を使ってログを照会できる。
CloudTrail Lakeは、複数のリージョンと複数のアカウントからのログを集約するための単一ロケーションを提供する。必要に応じて、複数のレイクを作成して、リージョンごとにログを分離できる。マルチアカウントのサポートは、同一のAWS組織のアカウントでのみ受けられる。これにより、CloudTrailイベント履歴にあるクエリ機能が改善される。イベント履歴が単一のアカウント内の単一のリージョンからのみプルできるためである。また、イベント履歴内の複数の属性をクエリすることはできない。
ログは不変に保存され、デフォルトの保存期間は7年である。保存期間は、7日から7年の間で調整可能である。現在、管理イベントとデータイベントの両方に関するデータを収集することができる。管理イベントには、セキュリティの構成、デバイスの登録、ルーティングデータのルールの構成、ログの設定など、すべてのコントロールプレーンの操作が含まれている。データイベントはデフォルトでは、CloudTrailsに含まれず、バケットとオブジェクトでのS3 APIアクティビティ、Lambda関数実行アクティビティ、DynamoDBオブジェクトレベルAPIアクティビティなどのデータプレーン操作をカバーしている。
レイク内に保存されると、標準のSQL構文を使ってログを照会できる。データレイクは不変であるため、SELECT
クエリのみが許可される。このサービスには、テンプレートとして使用できる多数のサンプルクエリが含まれている。たとえば、特定のIAMキーに対して記録されたすべてのAPIアクティビティを表示するには、次のサンプルクエリを使用できる。
SELECT eventTime, eventName, userIdentity.principalId
FROM $EDS_ID
WHERE userIdentity.accessKeyId like 'AKIAXZUQIC6XEVCJJFM7'
イベントデータストアIDは、クエリ内のテーブル名として使用されることに注意してください。他にも、特定の時間が経過した後のセキュリティグループの変更を表示するサンプルクエリがある。
SELECT eventname, useridentity.username, sourceIPAddress, eventtime, element_at(requestParameters, 'groupId') as SecurityGroup, element_at(requestParameters, 'ipPermissions') as ipPermissions
FROM $EDS_ID
WHERE (element_at(requestParameters, 'groupId') like '%sg-%')
and eventtime > '2017-11-01T00:00:00Z'
order by eventtime asc;
クエリエディタには、クエリできるすべての使用可能なイベントプロパティが一覧表示される。コンソール内で、今後のアクセスのためにクエリを保存できる。最近のクエリのログも閲覧できる。
このリリースには、CloudTrail Lakeを作成、クエリ、操作するための多数のCLIコマンドも含まれている。たとえば、コマンドaws cloudtrail list-event-data-stores
で、特定のアカウント内のすべてのイベントデータストアを表示できる。クエリは、CLIからaws cloudtrail start-query
を使って開始することもできる。クエリのステータスはdescribe-query
で取得でき、実行が成功した場合は、get-query-results
から結果を取得できる。
CloudTrail Lakeは、AWSのほとんどのリージョンで利用可能である。CloudTrailコンソール、SDK、AWS CLIで有効化できる。CLoudTrail Lake利用の詳細については、ドキュメントを参照してください。