Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

ストリーミング構成 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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

実装のポイント 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

Slide 11

Slide 11 text

Summary DO WHAT MATTERS 11 • GitHub監査ログの重要性 • セキュリティ強化やコンプライアンス対 応にはログの活用が不可欠です! • 取得方法の選択 • 実運用や要件(リアルタイム性、データ 量)に合わせて方式(ストリーミング/ API)を検討! • Azureとの連携 • Event HubsやBlob Storageを活用する ことで、可視化・分析基盤との統合が可 能!

Slide 12

Slide 12 text

THANK YOU DO WHAT MATTERS Yutaka.Osada [email protected] https://github.com/yutaka-art 12