🔍

Check! GitHub の監査ログを知る

2021/07/07に公開

Prologue

こんにちは、 @dz_ こと、大平かづみです。

何かと気になる、監査ログ。

GitHub で扱える監査ログの種類、閲覧と検索方法、外部連携などをまとめました。

GitHub の監査ログ 概要

  • Organization において、監査ログ(audit log)を閲覧、検索、エクスポートすることができる
  • Enterprise (Cloud, Server) でのみ利用可能な機能もある
  • ユーザーアカウントには、 audit log はなく、security log がある

Organization での監査

Organization の管理者は、Organization のメンバーによる操作(アクション)を閲覧、検索、エクスポートすることができます。

  • 監視ログの保存期限は、過去 90 日以内
  • アクセスできるのはオーナー権限のみ
  • 検索では、下記のような条件で検索できる
    • 「操作」「リポジトリ」「ユーザー」「操作」「時間」「場所」

検索条件や、アクションカテゴリなどの詳細については、下記のドキュメントをご参照ください。

Organization: Audit log
Organization: Audit log

Enterprise レベルでの監査

GitHub Enterprise (GitHub Enterprise Cloud および GitHub Enterprise Server) では、Enterprise レベルで配下の Origanization やリポジトリを横断して、監査ログを閲覧、検索することができます。

GitHub Enterprise Cloud (GHEC): Enterprise レベルでの Audit log
GitHub Enterprise Cloud (GHEC): Enterprise レベルでの Audit log

GitHub Enterprise Server (GHES): Enterprise レベルでの Audit log
GitHub Enterprise Server (GHES): Enterprise レベルでの Audit log

GitHub Enterprise 配下の Organization の監査

GitHub Enterprise では、前述の Organization の監査ログの機能に加え、GraphQL API を用いて Organization の監査ログを取得することができます。

GraphQL API による Organization の監査ログ取得

  • 90 日から 120 日までのデータを含めることができる
  • git カテゴリアクションのログは取得できない(後述の REST API で可能)

詳しくは下記をご参照ください。

GitHub Enterprise Cloud (GHEC) における監査

GitHub Enterprise Cloud では、前述の Enterprise レベルでの監査 に加え、REST API により Organization の監査ログを取得することができます。

REST API による Organization の監査ログ取得

REST API を利用することで、下記のカテゴリアクションのログを取得することができます。

※ おそらく、Git 操作に関する監査ログについては、GHES では push logs で取得できるが、 GHEC ではないため、REST API で提供していると考えられます。

詳しくは、下記をご参照ください。

GitHub Enterprise Server (GHES) における監査

GitHub Enterprise Server では、前述の Enterprise レベルでの監査 に加え、さらに多くの監査項目を利用できます。

※ Enterprise Server 3.1 を参考にしています。その他のバージョンに関しては、ドキュメント、実動作をご確認ください。

Site admin における監査

Site admin レベルの監視ログを閲覧、検索することができます。

例えば、下記のカテゴリアクションが記録されます。

GitHub Enterprise Server (GHES): Enterprise レベルでの Audit log
GitHub Enterprise Server (GHES): Site admin での Audit log

push logs

リポジトリごとの Git 操作に関する監査ログは、 Push log から閲覧することができます。

GHES: Organization 配下のリポジトリの Push Log
GHES: Organization 配下のリポジトリの Push Log

GHES: ユーザー配下のリポジトリの Push Log
GHES: ユーザー配下のリポジトリの Push Log

SSHキーの監査

ユーザーが利用する SSHキー に対して監査を行うことができます。なお、監査を開始すると現在利用している SSHキーはすべて無効になります。

詳細は、下記ドキュメントをご参照ください。

GHES: SSHキーの監査を有効にする
GHES: SSHキーの監査を有効にする

サーバーインスタンス内に保持される監査ログ

システムイベント

push や pull なども含むすべてのシステムイベントは、 /var/log/github/audit.log に記録されます。24時間で自動的にローテートし、7日間保持されます。

Support Bundle

すべての監査情報は、Support Bundle の github-logs ディレクトリにある audit.log ファイルに記録されます。

詳細は下記をご参照ください。

GitHub 監査ログの外部連携

Log forwardning として、外部のログ収集サービスにログを送信することができます。

syslog-ng 形式のログストリームがサポートされていれば、どのログ収集サービスも利用可能です。送信されるデータは、 Support Bundle で記録されるデータが送信されます。ドキュメント内で例として挙げられているのは以下です。

その他の監視

アクティビティ ダッシュボード

週次、月次、年次ごとにアクティビティを確認することができます。

GHES: アクティビティ ダッシュボード
GHES: アクティビティ ダッシュボード

サーバーインスタンスの監視

監査ログとは別に、サーバーインスタンスの CPU やメモリなどのログを監視したい場合は、下記をご参照ください。

Epilogue

いったん整理がついたので公開…!

Organization, GitHub Enterprise Cloud, GitHub Enterprise Server それぞれにおける対応を整理するのは、なかなか大変ですね😇

Discussion