Google SecOpsにAWS CloudTrailログを取り込む

記事タイトルとURLをコピーする

G-gen の武井です。当記事では、Google が提供する SIEM/SOAR 製品である Google SecOps に、AWS CloudTrail ログを取り込む方法について解説します。

はじめに

Google SecOps とは

Google Security Operations(以下 Google SecOps、旧称 Chronicle)は、Google Cloud が提供する統合セキュリティ運用プラットフォームです。

SIEM、SOAR、脅威インテリジェンス、Gemini を利用した AI による運用支援を提供します。これらにより、脅威の検知・調査・対応を一元的に行えます。結果として、セキュリティ運用の効率化と高度化を実現できます。

詳細は、以下の記事をご参照ください。

blog.g-gen.co.jp

データフィードとは

Google SecOps では、AWS、Azure、その他 SaaS など、Google Cloud 以外の環境のログデータを取り込む仕組みとしてデータフィード機能があります。

SecOps UI もしくは Feed Management API を用いて、ログソース(Amazon S3、Cloud Storage、Pub/Sub、Webhook など)を指定し、各種ログを SecOps に取り込む設定を行います。

ソースタイプ 概要
ストレージ Google Cloud、AWS、Azure のクラウドストレージバケットに保存されたログデータを定期的に取得
Amazon SQS S3 バケットの通知をキュー経由で受信し、ログデータを取得(リアルタイムかつ安定的に取り込み)
ストリーミング Amazon Data Firehose、Cloud Pub/Sub、Webhook などを経由し、SIEM の HTTPS エンドポイントにログデータをストリーミングでプッシュ
サードパーティ API CrowdStrike、SentinelOne、Palo Alto など、外部 SaaS から API 経由でログデータを取得

設定の流れ

当記事では以下の構成のもと、S3 バケットに格納した CloudTrail ログを、データフィード機能を使って Google SecOps に取り込みます。

その際、Amazon SQS を用いることで、S3 バケットへのログ格納通知をキュー経由で受信し、ログデータをリアルタイムかつ安定的に取り込みます。

大まかな設定手順は、以下のとおりです。

順序 設定項目 設定箇所
1 S3 バケットの設定 AWS
2 SQS の設定 AWS
3 SQS アクセスポリシーの設定 AWS
4 S3 イベント通知の設定 AWS
5 CloudTrail の設定 AWS
6 IAM の設定 AWS
7 データフィードの設定 Google SecOps
8 動作確認 Google SecOps

AWS の設定

S3 バケット

S3 バケットは以下の手順に従い作成します。

SQS(Simple Queue Service)

今回の構成では、バケット全体を定期スキャンするのではなく、ログ生成をトリガーにリアルタイムで取り込みを行います。

そのため、以下の手順に従い標準タイプでキューを作成します。

SQS アクセスポリシー

S3 バケットから SQS キューにメッセージを送信するため、キューのアクセスポリシーを編集し、S3 サービスプリンシパルs3.amazonaws.com)に対して、キューへのメッセージ送信(SQS:SendMessage)を許可します。

また、意図しないバケットからの書き込みを防ぐため、ポリシー内の Condition 句で「特定の AWS アカウント」かつ「特定の S3 バケット」からのリクエストのみを許可するように制限を行います。

今回の例では、以下のアクセスポリシーを定義しました。

{
  "Version": "2012-10-17",
  "Id": "S3ToSQS",
  "Statement": [
    {
      "Sid": "AllowS3ToSendMessage",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "SQS:SendMessage",
      "Resource": "arn:aws:sqs:ap-northeast-1:945008193730:yutakei-secops-cloudtrail-queue",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "945008193730"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:::yutakei-secops-cloudtrail-test"
        }
      }
    }
  ]
}

S3 イベント通知

続けて、S3 バケットから SQS キューにメッセージを送信するため、S3 バケットのプロパティからイベント通知を設定します。

すべてのオブジェクト作成イベントを先ほどのキューに送信できるよう、以下の手順に従い作成します。

CloudTrail

以下の手順に従い、先ほど作成した S3 バケットを CloudTrail ログの格納先とする証跡を作成します。

今回の構成では AWS KMS や SNS を使用しないため、ログファイルの SSE-KMS 暗号化 ならびに SNS 通信の配信については有効化しません。

なお、ログとして取り込むイベントタイプや管理イベントの API アクティビティは任意です。

IAM

Google SecOps のデータフィードで CloudTrail ログを取り込むには、アクセスキーシークレットアクセスキーが必要です。

そのため、以下の公式ドキュメントに従い Google SecOps 用のマシンユーザー(AWS マネジメントコンソールへのユーザーアクセス不可)を作成してキーを発行します。

公式ドキュメントには、作成したマシンユーザーにAmazonS3FullAccessを付与する旨の記述がありますが、今回の例では S3 と SQS に関する最小権限のカスタム IAM ポリシーを以下のとおり作成して付与しました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListAllowedBuckets",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": [
                "arn:aws:s3:::yutakei-secops-cloudtrail-test"
            ]
        },
        {
            "Sid": "ReadObjectsFromAllowedBuckets",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::yutakei-secops-cloudtrail-test/*"
            ]
        },
        {
            "Sid": "ReadFromSQSForCloudTrailFeed",
            "Effect": "Allow",
            "Action": [
                "sqs:ReceiveMessage",
                "sqs:DeleteMessage",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl"
            ],
            "Resource": [
                "arn:aws:sqs:ap-northeast-1:945008193730:yutakei-secops-cloudtrail-queue"
            ]
        }
    ]
}

データフィードの設定

CloudTrail ログが格納された S3 バケットの URI、SQS キューの ARN、そしてキー情報を用いて Google SecOps との連携を行い、ログの取り込みを行います。

その他にも、ログの種別や取り込み先環境を識別するために Ingestion LabelsNamespace も設定します。

設定が適切に行われると STATUS 列の値が Active と表示されます。なお、ログが取り込めている場合でも、LAST SUCCEDED ON 列にログの最終取り込み日時(UTC)が表示されないこともあります。

動作確認

AWS はデフォルトパーサーが用意されているため、Google SecOps にログが取り込まれると自動的に UDM イベントにパースされます。

SIEM Search(UDM 検索)メニューから以下のクエリを入力して実行すると、ログが取り込まれていることを確認できました。

metadata.log_type = "AWS_CLOUDTRAIL"

選択した UDM イベントを展開すると、筆者が S3 API をコールした際の記録が残されていました。

Event Viewer を Event Fields(UDM)から Raw Log に切り替えると、パースされる前の生ログを確認することも可能です。

Data Ingestion and Health(ネイティブダッシュボードの1つ)からも、CloudTrail のログ(AWS_CLOUDTRAIL)がエラーなく取り込めていることも確認できました。

関連記事

blog.g-gen.co.jp

武井 祐介 (記事一覧)

クラウドソリューション部クラウドエンジニアリング課。

Google Cloud Partner Top Engineer 2026 選出。

趣味はロードレースやサッカー観戦、ゴルフ、筋トレ。