Google SecOpsにGitHubの監査ログを取り込む

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

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

はじめに

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 経由でログデータを取得

設定の流れ

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

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

順序 設定項目 設定箇所
1 サービスアカウントの設定 Google Cloud
2 Cloud Storage バケットの設定 Google Cloud
3 IAM Policy の設定 Google Cloud
4 監査ログストリーミングの設定 GitHub
5 データフィードの設定 Google SecOps
6 動作確認 Google SecOps

Google Cloud の設定

サービスアカウント

GitHub の監査ログを Cloud Storage にエクスポートする際に必要となるサービスアカウント(今回の例ではgithub-to-secops-demo)を作成します。

その際 JSON キーが必要となるため、キーもあわせて作成します。なお、キー情報は漏洩することがないよう、厳重に管理してください。

手順は以下を参照してください。

もし発行時に「サービス アカウント キーの作成が無効になっています」というエラーメッセージが表示された場合、以下の記事を参照してください。

blog.g-gen.co.jp

Cloud Storage バケット

GitHub の監査ログを格納するための Cloud Storage バケット(今回の例ではgithub-to-secops-demo)を作成します。

手順は以下を参照してください。

IAM Policy

作成したバケットに対し、以下の IAM Policy を設定します。No.2 および No.3 は Google SecOps のサービスアカウント(今回の例ではproject-880039012961)で、後述するフィード作成画面から確認できます。

# サービスアカウント IAM ロール 目的
1 github-to-secops-demo Storage オブジェクト作成者(roles/storage.objectCreator Cloud Storage へのログ連携
2 project-880039012961 Storage オブジェクト閲覧者(roles/storage.objectViewer Google SecOps へのログ連携
3 project-880039012961 Storage バケット閲覧者(roles/storage.bucketViewer 同上

なお公式ドキュメントでは、Google SecOps サービスアカウントに対しては Storage オブジェクト作成者ロールのみを付与する旨の記載がありますが、Storage バケット閲覧者ロール(に含まれる storage.buckets.get 権限)がないとフィード設定時にエラーが発生します。

GitHub の設定

監査ログのストリーミング

GitHub の監査ログストリーミングとは、組織やエンタープライズの操作履歴(リポジトリの作成、メンバーの追加、権限の変更など)を、リアルタイムかつ自動的に外部のクラウドストレージや SIEM サービスへ連携する機能です。

Cloud Storage バケットを転送先とした設定については以下を参照してください。

なお、本設定は Workload Identity 連携(キーレス認証)に対応していないため、先程の手順で作成したサービスアカウントの JSON キーを使用します。

Google SecOps の設定

データフィード

GitHub の監査ログが格納された Cloud Storage バケットの URI、Google SecOps サービスアカウント情報をデータフィードを設定し、ログの取り込みを行います。

なお、Google SecOps のサービスアカウント情報は、この設定画面から確認可能です。

なお、先の手順でも説明した通り、Google SecOps のサービスアカウントがログ格納先バケットに対する storage.buckets.get 権限を持ち合わせていないと、以下のようなエラーとなります。

Generic::failed_precondition: feed creation failed: generic::failed_precondition: Failed to obtain the location of the GCS bucket github-to-secops-demo Additional details: project-880039012961@storage-transfer-service.iam.gserviceaccount.com does not have storage.buckets.get access to the Google Cloud Storage bucket. Permission 'storage.buckets.get' denied on resource '//storage.googleapis.com/projects/_/buckets/github-to-secops-demo' (or it may not exist). Remediate access with this Troubleshooter URL or share it with your administrator

動作確認

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

ログの取り込み自体は、データフィードによって正常に取り込まれていることがわかります。

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

metadata.log_type = "GITHUB"

また今回は、ログ取り込み後、SIEM の Detection Rules によって検知されたアラートも確認できました。アラートやケースの検知、Playbook による対処の自動化(SOAR)については別の記事で解説予定です。

応用

以下の記事では、SecOps の Playbooks 機能を使い、GitHub の Private リポジトリが意図せず Public リポジトリに変更された際に Private リポジトリに変更するという実践的なシナリオを紹介しています。

blog.g-gen.co.jp

武井 祐介 (記事一覧)

クラウドソリューション部。

Google Cloud Partner Top Engineer 2026 選出。