🐶

CloudTrail 初級編

2024/03/12に公開

1. サービス概要

CloudTrailはAWSアカウントでのアクティビティに対してイベント履歴を記録するサービスです。

コンプライアンス管理

APIコールを追跡する

  • 誰がいつどのサービスを操作したのか記録を残し、誤操作に対する検証や不正なアクティビティやアクセスを検知することができます。
  • コンソール画面上でログをフィルタリング検索することができます。
  • 管理イベントはデフォルトで90日間のアクティビティを蓄積します。
    • 90日間以上の記録を保存する場合は証跡機能を有効にしてS3上に蓄積します。

用語の説明

アクティビティとは

リソースやリソース上に対して実行される参照/作成/変更/削除などの操作のことです。

イベント履歴とは

AWSのリソースを操作した際に発生する管理イベントと、AWSのリソース上で実行される操作を記録するデータイベントがあります。

データイベントを記録する場合はデフォルトでは有効化されていないので別途料金を支払って有効化する必要があります。

証跡とは

監査などの目的でCloudTrailログを長期間保存するための設定です。

Organizationsの管理アカウントはメンバーアカウントのログを管理用のS3バケットに集約することができます。

S3のログはAthenaテーブルを作成することでSQLクエリが可能になります。こちらはサマリを作成したり、データ検索などの用途に使用します。

サポートされるサービス

プレビュー段階のサービス、一般公開されていないサービス、公開API がないサービスはサポートされていません。また、下記のサービスとイベントもサポートされていません。

  • AWS Import/Export
  • Amazon VPC エンドポイントのポリシー固有のイベント

詳しくは、こちらのドキュメントをご参照ください。

仕様と料金

管理イベント

管理イベントでは、AWS アカウントのリソースで実行される管理オペレーションについての情報が得られます。これらのイベントは、コントロールプレーンオペレーションとも呼ばれます。

https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/cloudtrail-concepts.html#cloudtrail-concepts-management-events

直近90日間の履歴表示、検索、ダウンロードは無料です。

証跡を使用してイベントデータのコピーをS3へ配信する場合、100,000イベント / 2.00USDの追加料金が発生します。

データイベント

データイベントでは、リソース上またはリソース内で実行されたリソースオペレーションについての情報が得られます。これらのイベントは、データプレーンオペレーションとも呼ばれます。データイベントは、多くの場合、高ボリュームのアクティビティです。

https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/cloudtrail-concepts.html#cloudtrail-concepts-data-events

S3やLambdaなどのAPIログを記録します。
配信されたデータには100,000イベント / 0.10USDの料金が発生します。

2. 使い方

CloudTrailを有効化する

管理イベントはデフォルトで有効化されているため特に設定は必要ありませんが、データイベントは手動で証跡を設定する必要があります。

イベントの読み方

コンソール上ではJSON形式のデータとして参照することができます。

以下はユーザがAWSアカウントに対してSSOセッションを実行した際にCloudTrailに記録されたAPIコールの例です。

{
    "eventVersion": "1.09",
    "userIdentity": { // 操作側 アイデンティの詳細
        "type": "IAMUser",  // 操作者のタイプ
        "principalId": "AIDA5FTZA6NT7ZOZRLFKQ", //認証情報を取得するために使用されたエンティティの内部ID
        "arn": "arn:aws:iam::xxxxxxxxxxxx:user/satom", // 操作者のARN
        "accountId": "xxxxxxxxxxxx", // どのアカウントに対して
        "accessKeyId": "ASIA5FTZA6NT3SZMVF56", // どのアクセスキーを使用して
        "userName": "satom",
        "sessionContext": {
            "attributes": {
                "creationDate": "2024-03-04T00:38:02Z",
                "mfaAuthenticated": "true"
            }
        }
    },
    "eventTime": "2024-03-04T00:52:06Z", // いつ
    "eventSource": "sso.amazonaws.com", // どのサービスに対して
    "eventName": "UpdateSsoConfiguration", // どのような操作を
    "awsRegion": "ap-northeast-1", // どのリージョンに対して
    "sourceIPAddress": "xxx.xxx.xxx.xxx", // どのIPアドレスから
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", // どの端末から
    "requestParameters": { // リクエストのパラメータ
        "ssoConfiguration": { // SSOの設定
            "mfaMode": "ALWAYS_ON",
            "noMfaSignInBehavior": "ALLOWED_WITH_ENROLLMENT",
            "allowedMfaTypes": [
                "TOTP",
                "WEBAUTHN"
            ]
        },
        "configurationType": "APP_AUTHENTICATION_CONFIGURATION",
        "instanceArn": "arn:aws:sso:::instance/ssoins-77587f71f0489894"
    },
    "responseElements": null, // レスポンスの要素
    "requestID": "b0caaa87-32b3-4462-b87f-091c8c6b393f", // リクエストに対する一意のID
    "eventID": "5b1211af-3ca9-4357-b988-3888e8518c9e", //イベントに対する一意のID
    "readOnly": false, //読み取り属性であるかどうか
    "eventType": "AwsApiCall", // レコードを生成したイベントのタイプ
    "managementEvent": true,
    "recipientAccountId": "xxxxxxxxxxxx", // イベントを受信したアカウント
    "eventCategory": "Management", // イベントのカテゴリ
    "tlsDetails": { // クライアントのTLSバージョン
        "tlsVersion": "TLSv1.3",
        "cipherSuite": "TLS_AES_128_GCM_SHA256",
        "clientProvidedHostHeader": "sso.ap-northeast-1.amazonaws.com"
    },
    "sessionCredentialFromConsole": "true" // セッションがマネジメントコンソールから発生したか
}

前半は操作者の属性や操作内容、後半は生成されたレコードの属性が記録されています。

全ての属性を理解する必要はありませんが、アクティビティを分析してアカウントに対する操作を追跡、監視に利用できます。

また、APIコールのメタデータを参照できるので動作確認やデバッグ用途としても使用することができます。

イベントのクエリ

CloudTrailの証跡としてイベントログを配信したりスナップショットとしてS3に保存すると、Athenaテーブルを作成してSQLでクエリが可能になります。

一度Athenaテーブルを作成すると、その後はテーブルを再利用することでクエリ実行が可能です。

CloudTrail Lakeとは

  • 蓄積したログをAthenaテーブルを作成することなくクエリ検索ができる機能です。
  • イベントデータは最大7年間保持することができ、複数のリージョン、アカウント、Organization内に集約できます。
  • クエリ結果をS3に保存することができます。

イベント監視

CloudWatchのようにログを可視化して閲覧することができます。

CloudTrail Insight

  • CloudTrailのログを監視するツールで、異常なアクティビティを検出して可視化します。

ログ保持期間の設定

基本的に、S3に記録された証跡はなにも操作をしない限り半永久的に保管されます。

ログの出力量が多い場合、保持期間を設けることでS3の料金を抑えることができます。

S3にはライフサイクルルールを作成する機能がありますので、不要なログが蓄積されないようにログ保持期間を設定するとよいかもしれません。

3.まとめ

今回はCloudTrailの機能についてまとめました。
CloudTrailは監査ログを残すためには欠かせない機能です。
特別な設定はほとんど必要ありませんので、自分がどのような操作をしているか、リソースにどんな変更がされているか気軽にチェックしてみてください。

Discussion