Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20250225_GitHub監査ログ×クラウド分析で実現するエンタープライズセキュリティ強化

yutakaosada
February 25, 2025

 20250225_GitHub監査ログ×クラウド分析で実現するエンタープライズセキュリティ強化

GitHub監査ログの取得方式(ストリーミングやREST API)と、Azure Event Hubs・Functionsでのリアルタイム分析を軸に、エンタープライズ向けセキュリティ強化策を解説します。

■アジェンダ
・GitHubの監査ログとは
・GitHubの監査ログを取得する方式
・GitHub Rest APIとは
・ストリーミング構成(Azure EventHubs)
・Azureソリューションアーキテクチャ例
・実装のポイント
・まとめ

yutakaosada

February 25, 2025
Tweet

More Decks by yutakaosada

Other Decks in Technology

Transcript

  1. Agenda • GitHubの監査ログとは • GitHubの監査ログを取得する方式 • GitHub Rest APIとは •

    ストリーミング構成(Azure EventHubs) • Azureソリューションアーキテクチャ例 • 実装のポイント • まとめ DO WHAT MATTERS 2
  2. Yutaka Osada (長田 豊) • DevOps Engineer @Avanade Japan •

    業務 • Azureコンポーネントを活用したサー ビス構築 • 技術検証、パフォーマンスチューニン グを得意とし、T-SQLが好き。 • 技術スタック • C#, .NET, Azure(PaaS), Azure DevOps, GitHub • Please follow me DO WHAT MATTERS 3 https://github.com/yutaka-art
  3. GitHubの監査ログとは 監査ログで確認できる情報の概要 • 実行された操作の種類 • リポジトリの新規作成・削除 • Pull RequestやIssueの操作 •

    操作の詳細情報 • 操作者(ユーザ名、IPアドレスなど) • 実施日時 • 対象となるリポジトリやファイル名 • etc 約400カラムほどの情報有り DO WHAT MATTERS 4 企業利用における監査ログの重要性 • セキュリティ強化 • 不審な操作の早期検知 • インシデント発生時の迅速な原因追跡 • コンプライアンス対応 • 規制要件や社内監査の証跡として活用 • 担当者・責任の明確化 https://docs.github.com/ja/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise
  4. GitHubの監査ログを取得する方式 DO WHAT MATTERS 5 取得方式 概要 メリット デメリット Web

    UI GitHubの管理画面(Audit Logページ)で監査ログを 直接参照 - 専門知識がなくてもすぐ に確認可能 - 手軽に検索・フィルタで きる - 手動操作が必要 - 大量のログを定期的・継 続的に取得するには不向 き GitHub Enterprise Settingsによるストリーミ ング GitHub Enterprise上でス トリーミングの設定を行 い、外部サービス(例: Azure Event Hubsなど) へログを送信 - リアルタイムに大量のロ グを取得可能 - ログを外部で一元管理し、 分析ツールや可視化サー ビスと連携しやすい - 初期設定のハードルがや や高い - 外部サービスの利用コス トや管理が必要 REST API GitHubが提供するAPI経 由でプログラムから監査 ログを取得(組織 / エン タープライズ単位でのエ ンドポイントあり) - 自動化やスクリプト化が 容易 - 必要な期間・範囲のログ だけ取得できる - APIの利用制限(レート リミット)に注意が必要 - 大量データ取得時はペー ジネーションの扱い等、 実装工夫が必要
  5. GitHub REST APIとは (1/2) DO WHAT MATTERS 6 基本的な構成と利用方法 •

    公式APIを通じ、GitHub上の多様なリソース操作が 可能 • 認証方法 • Personal Access Token (PAT) • 有効期限が設定可能(自動失効) • 定期的なローテーションが必要(運用コス ト増) • GitHub Apps Installation Token • JWTを用いたトークン取得 • セキュアかつ一度設定すればトークンロー テーション不要 Personal Access Token (PAT) sequence https://docs.github.com/ja/rest/about-the-rest-api/about-the-rest-api?apiVersion=2022-11-28
  6. GitHub REST APIとは (2/2) DO WHAT MATTERS 7 監査ログ取得以外の活用例 •

    GETリクエストによる各種情報取得 • 例)組織のメンバーリスト、Pull Request/Issueの状態など • POSTリクエストでの設定変更・作成 • 例)Enterprise/Organizationレベルのパラメー タ設定をIaCとして管理 • 自動化スクリプトやCI/CDの一部に組み込むこ とで、構成管理の効率化・一貫性向上が可能 Installation Token (GitHub Apps) sequence https://docs.github.com/ja/rest/about-the-rest-api/about-the-rest-api?apiVersion=2022-11-28
  7. ストリーミング構成 DO WHAT MATTERS 8 GitHub 監査ログストリーミングとの親和性 • GitHub Enterprise

    でのみ利用可能 • Organization 単位ではストリーミング設定不可 • 選択可能な出力先(2025.02.25時点) • Amazon S3 / Azure Blob Storage / Azure Event Hubs / Datadog / Google Cloud Storage / Splunk • 今回はEvent Hubsを選択 • Azure Event Hubs を選択する理由 • 単純な履歴管理だけなら Blob Storage で 十分 • 可視化や一部イベント通知など、拡張性が 必要な場合は Event Hubs が最適 Enterprise>Settings>Auditlog https://docs.github.com/ja/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise
  8. Solution Architecture DO WHAT MATTERS 9 Azure Resource Group GitHub

    Event Hubs Functions Cosmos DB Enterpriseデータ受信 [Event Hub Trigger]Enterpriseデータ登録 [Timer Trigger]Organizationデータ登録 Organizationデータ Enterpriseデータ Key Vault Log Analytics Application Insights Enterprise 認 証 ・ 認 可 Enterprise監査ログ Organization Organization監査ログ GitHub Apps Installation Token Personal Environment Personal Access Token(PAT) Repository GitHub Container Registry Near realtime GitHubに対して何らかの操作を実行 Monitor アラート通知 監査ログ入力 Storage account
  9. 実装のポイント DO WHAT MATTERS 10 • Enterpriseログ収集処理 • Functions EventHub

    Triggerで実装 • バインディング式(Binding Expressions)形式で実装する場合、環境変数や application settingsのみ利用可(※Key Vaultより取得した値を設定できないので注意) • Organizationログ収集処理 • Functions Timer Triggerで実装 • Cronの設定値は環境変数より取得 • GitHub Rest APIのRate Limitに注意 (PAT:1h/5,000件, GitHub Apps:1h/15,000件) • レスポンスの Headersに何件リクエスト可能か確認可能 • Logic AppsなどからのCallを想定し、Durable Functionsでタイムアウトを回避 • データ収集以降処理をモジュール分割 Azure Container AppsのDaprを使うなら、 Cosmos DBへデータ登録する際のシリアライ ズに注意・・・ [GitHub Docs - Rate Limit] https://docs.github.com/ja/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28
  10. Summary DO WHAT MATTERS 11 • GitHub監査ログの重要性 • セキュリティ強化やコンプライアンス対 応にはログの活用が不可欠です!

    • 取得方法の選択 • 実運用や要件(リアルタイム性、データ 量)に合わせて方式(ストリーミング/ API)を検討! • Azureとの連携 • Event HubsやBlob Storageを活用する ことで、可視化・分析基盤との統合が可 能!