SECURITY NOTE — 031

Google Workspace のログエクスプローラとBigQuery連携で実現する「ゼロトラスト環境の行動可視化」

Google Workspaceでは、ユーザーや管理者の様々な操作ログが記録されています。これらのログを効率的に活用することで、ゼロトラストセキュリティモデルにおける「継続的な監視」を実現し、組織内の行動可視化と異常検知に役立てられます。

この記事を読んだほうが良い人

  • 100名規模の企業でGoogle Workspaceを運用している情シス担当者
  • ゼロトラストセキュリティの導入・推進を検討している方
  • Google Workspace環境でのユーザー行動監視や異常検知に課題を感じている方
  • 膨大なログデータの効果的な分析手法を探している方

ゼロトラスト環境におけるGoogle Workspaceログの重要性

ゼロトラストセキュリティは「決して信頼せず、常に検証する (Never Trust, Always Verify)」を原則とします。従来の境界型セキュリティとは異なり、社内外のあらゆるアクセスを信頼せず、常に認証・認可・監視を行います。この「継続的な監視」を実現する上で、Google Workspaceが生成するログデータは非常に重要な役割を担います。

Google Workspaceのログには、誰が、いつ、どこから、どのようなデバイスで、どのようなリソース(ファイル、メール、設定など)にアクセスし、どのような操作を行ったかという詳細な情報が含まれています。これらのログを分析することで、以下のようなゼロトラストの原則を実践できます。

  • ユーザーとデバイスの検証: ログイン元IPアドレス、デバイス情報などから、正当なアクセスかどうかを検証します。
  • 最小特権の原則: ユーザーのアクセス権限を逸脱した操作や、通常とは異なるリソースへのアクセスを検知します。
  • 継続的な監視: 常にユーザー行動を監視し、異常なパターンや不審なアクティビティを早期に発見します。

加えて、社内へのAI活用が進むにつれて、Gemini for Workspaceに加えてDifyやn8nのようなAIワークフロー基盤を導入する企業も増えてきました。これらはGoogle Drive、Gmail、スプレッドシート、Slackなどに対してOAuthで連携し、ユーザーの代わりにファイル取得やメール送信、Bot応答などを実行します。ゼロトラスト運用では「誰がログインしたか」だけでなく「どの外部アプリが、どの権限で、誰の代わりに、何をしたか」も監査対象として追跡できる状態が前提になります。

しかし、これらのログは日々膨大な量が生成されるため、効率的な収集、保存、分析の仕組みが不可欠です。

Google Workspaceのログエクスプローラで何ができるか

Google Workspaceの管理者であれば、管理コンソールから監査レポートやレポート機能を利用できます。また、Google Cloudのコンソールにある「ログエクスプローラ」では、Google Workspaceを含む様々なGoogle Cloudサービスのログを統合的に確認できます。

ログエクスプローラでは、以下の操作が可能です。

  • リアルタイムでのログ表示: 最新のログイベントをほぼリアルタイムで確認できます。
  • 基本的なフィルタリング: ユーザー名、サービス名、イベントタイプ、期間などでログを絞り込めます。
  • 簡単なクエリ: 特定の条件に合致するログを検索できます。
  • ログの詳細確認: 各ログエントリのJSON形式の詳細情報を確認し、発生したイベントの全容を把握できます。

しかし、ログエクスプローラにはいくつかの限界があります。

  • データ保持期間: Cloud Loggingのデフォルトのログ保持期間は、長期的な分析やコンプライアンス要件には不十分な場合があります。
  • 複雑な分析: 複数のログタイプを横断した高度な相関分析や、機械学習を用いた異常検知には向いていません。
  • コスト: ログの取り込み量が増えると費用が発生する可能性があります。

これらの限界を克服し、より高度なログ分析を実現するために、BigQueryとの連携が有効です。

BigQuery連携で実現する高度なログ分析

BigQueryは、Google Cloudが提供するフルマネージドなペタバイト規模のデータウェアハウスです。Google WorkspaceのログをBigQueryにエクスポートすることで、ログエクスプローラの限界を補い、ゼロトラスト環境の監視能力を飛躍的に向上させられます。

BigQueryへのログエクスポート設定の概要

Google Workspaceのログは、Google Cloudの「Cloud Logging」サービスを通じてBigQueryにエクスポートできます。設定は以下の手順で行います。

  1. Google Cloudプロジェクトの準備: ログを保存するBigQueryデータセットを作成するGoogle Cloudプロジェクトを用意します。
  2. ログルーターでのシンク作成: Google Cloudコンソールの「Logging」>「ログルーター」に移動し、新しい「シンク」を作成します。
  3. 宛先の指定: 宛先として「BigQueryデータセット」を選択し、ログをエクスポートしたいデータセットを指定します。
  4. フィルタの指定: エクスポートしたいログの種類をフィルタで指定します。Google Workspaceの監査ログは主に以下のlog_idまたはserviceNameで識別されます。
    • log_id="cloudaudit.googleapis.com/activity" (管理者アクティビティ監査ログ、システムイベント監査ログなど)
    • log_id="cloudaudit.googleapis.com/data_access" (データアクセス監査ログ)
    • protoPayload.serviceName="login.googleapis.com" (ログイン関連)
    • protoPayload.serviceName="drive.googleapis.com" (Googleドライブ関連)
    • protoPayload.serviceName="admin.googleapis.com" (管理コンソール関連)

この設定により、Google Workspaceで発生する様々なログがリアルタイムに近い形でBigQueryに自動的にストリーミングされます。

BigQuery連携のメリット

  • 長期保存とコスト効率: BigQueryは大量データを低コストで長期保存できます。コンプライアンス要件への対応や、過去のログとの比較分析が容易になります。
  • 強力なクエリ機能: 標準SQLをベースとしたクエリ言語で、複雑な条件でのデータ抽出、集計、結合が可能です。
  • 高度な分析: BigQuery MLを利用して機械学習モデルを構築し、異常検知や将来予測を行うことも可能です。
  • BIツールとの連携: Looker StudioやTableauなどのBIツールと連携し、ログデータを視覚的にダッシュボード化できます。

BigQueryを活用した異常検知と行動可視化のユースケース

BigQueryにエクスポートされたGoogle Workspaceのログデータは、テーブルとして格納されます。これらのテーブルに対してSQLクエリを実行することで、ゼロトラスト環境下での具体的なユーザー行動を可視化し、潜在的な脅威を検知できます。

  • ユーザーごとの異なるログイン元IPアドレスの確認
  • 機密ファイルへの不審なアクセスパターン(大量ダウンロード検知)
  • 管理者関連の変更イベント監視

これらのユースケースに対応するBigQueryクエリ例を次に示します。

BigQueryクエリ例

以下のクエリ例では、BigQueryにエクスポートされたGoogle Workspaceの監査ログテーブルを使用します。テーブル名はyour-gcp-project-id.your_bigquery_dataset.cloudaudit_googleapis_com_activity_*your-gcp-project-id.your_bigquery_dataset.cloudaudit_googleapis_com_data_access_*のように、プロジェクトIDとデータセット名、そしてログの種類と日付サフィックス (* はワイルドカードで複数日を対象にできます) を適宜置き換えてください。

クエリ例1: 1日の中で複数のIPアドレスからログインしているユーザーの検知

SELECT
  FORMAT_DATE('%Y-%m-%d', DATE(timestamp)) AS login_date,
  protoPayload.authenticationInfo.principalEmail AS user_email,
  ARRAY_AGG(DISTINCT protoPayload.requestMetadata.callerIp IGNORE NULLS) AS distinct_login_ips,
  COUNT(DISTINCT protoPayload.requestMetadata.callerIp IGNORE NULLS) AS num_distinct_ips
FROM
  `your-gcp-project-id.your_bigquery_dataset.cloudaudit_googleapis_com_activity_*` AS t
WHERE
  protoPayload.serviceName = 'login.googleapis.com'
  AND _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)) AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
GROUP BY
  login_date, user_email
HAVING
  num_distinct_ips > 1 -- 1日の中で複数のIPアドレスからログインしているユーザーを抽出
ORDER BY
  login_date DESC, num_distinct_ips DESC
;

解説: このクエリは、過去7日間のログインログから、1日の中で2つ以上の異なるIPアドレスからログインしたユーザーを特定します。これにより、異常なログイン元を素早く発見できます。

クエリ例2: ドライブからの大量ダウンロード/エクスポートを検知

SELECT
  FORMAT_DATE('%Y-%m-%d', DATE(timestamp)) AS event_date,
  protoPayload.authenticationInfo.principalEmail AS user_email,
  COUNTIF(protoPayload.methodName = 'drive.files.download') AS download_count,
  COUNTIF(protoPayload.methodName = 'drive.files.export') AS export_count
FROM
  `your-gcp-project-id.your_bigquery_dataset.cloudaudit_googleapis_com_data_access_*` AS t
WHERE
  protoPayload.serviceName = 'drive.googleapis.com'
  AND (protoPayload.methodName = 'drive.files.download' OR protoPayload.methodName = 'drive.files.export')
  AND _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)) AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
GROUP BY
  event_date, user_email
HAVING
  download_count + export_count > 10 -- 1日に10回以上のダウンロード/エクスポートを閾値とする
ORDER BY
  event_date DESC, download_count + export_count DESC
;

解説: 過去7日間のGoogleドライブのデータアクセスログから、1日に10回以上ファイルをダウンロードまたはエクスポートしたユーザーを抽出します。この閾値は組織のポリシーや業務内容に合わせて調整が必要です。

クエリ例3: 管理者関連の変更イベント監視

SELECT
  timestamp,
  protoPayload.authenticationInfo.principalEmail AS admin_actor_email,
  protoPayload.methodName,
  protoPayload.resourceName, -- 変更対象のリソース(ユーザー、グループなど)
  protoPayload.metadata -- 詳細な変更内容が含まれることが多い
FROM
  `your-gcp-project-id.your_bigquery_dataset.cloudaudit_googleapis_com_activity_*`
WHERE
  protoPayload.serviceName = 'admin.googleapis.com'
  AND _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)) AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
ORDER BY
  timestamp DESC
LIMIT 200
;

解説: 過去7日間の管理コンソール操作ログから、管理者が実行したメソッドと操作対象リソースを時系列で取得します。protoPayload.methodName に権限変更や設定変更が含まれる場合は、緊急度の高いアラート対象として扱うことを検討してください。

ゼロトラスト運用の次のアクション

BigQuery連携によるログ分析は、設定すること自体がゴールではありません。以下の流れで運用に落とし込むことが重要です。

まず、BigQueryへのログエクスポートを設定し、最低1週間分のデータが蓄積されてから分析を始めます。いきなり全件分析しようとせず、「ログイン異常」「Driveの大量ダウンロード」など検知したいユースケースを1〜2個に絞って着手すると継続しやすいです。

次に、定期実行の仕組みを整えます。上記のクエリを毎回手動で実行するのではなく、BigQueryのスケジュールドクエリ機能で毎朝自動実行し、結果をGoogle スプレッドシートやLooker Studioに連携する構成が現実的です。

最後に、検知結果を受けてどうアクションするかのフローを先に決めておくことが必要です。異常を検知しても対応手順がなければ意味がありません。インシデント対応フロー(誰に連絡するか、アカウントを一時停止するかなど)を整備してから運用に入ることを勧めます。

なお、この仕組みはGoogle Workspaceを新規構築した直後や、Microsoft 365からGoogle Workspaceへ移行した直後ほど優先度を上げて整えることを勧めます。構築・移行直後はメールアドレスやファイル移行に意識が向きがちですが、「誰が、どのアプリから、どのファイルへアクセスしたか」を後追いできない状態でユーザーが業務を始めると、後からログ設計をやり直すのは容易ではありません。AIワークフローや外部SaaS連携が増えるほど、ログエクスプローラとBigQueryによる行動可視化は後回しにしづらい基盤になります。

Google WorkspaceとBigQueryの連携は、Cloud Loggingのシンク設定だけで始められます。専用のSIEM製品を導入する前段階として、まずこの構成で自組織のログを可視化してみると、想定外の操作や見落としていたリスクが見えてくることがあります。

コーポレートITのご相談はお気軽に

この記事で書いたような業務改善・自動化の設計から実装まで、DRASENASではコーポレートITの現場に寄り添った支援を行っています。 「まず相談だけ」でも大歓迎です。DRASENAS 公式サイトからお気軽にどうぞ。

CONTACT

御社の IT 部門、ここにあります。

「ITのことはあまりわからない」── そのような状態からで、まったく問題ございません。まずはお気軽にご相談ください。

一社ずつ、一から。