Check! GitHub の監査ログを知る
Prologue
こんにちは、 @dz_ こと、大平かづみです。
何かと気になる、監査ログ。
GitHub で扱える監査ログの種類、閲覧と検索方法、外部連携などをまとめました。
GitHub の監査ログ 概要
- Organization において、監査ログ(audit log)を閲覧、検索、エクスポートすることができる
- Enterprise (Cloud, Server) でのみ利用可能な機能もある
- ユーザーアカウントには、 audit log はなく、security log がある
Organization での監査
Organization の管理者は、Organization のメンバーによる操作(アクション)を閲覧、検索、エクスポートすることができます。
- 監視ログの保存期限は、過去 90 日以内
- アクセスできるのはオーナー権限のみ
- 検索では、下記のような条件で検索できる
- 「操作」「リポジトリ」「ユーザー」「操作」「時間」「場所」
検索条件や、アクションカテゴリなどの詳細については、下記のドキュメントをご参照ください。
Organization: Audit log
Enterprise レベルでの監査
GitHub Enterprise (GitHub Enterprise Cloud および GitHub Enterprise Server) では、Enterprise レベルで配下の Origanization やリポジトリを横断して、監査ログを閲覧、検索することができます。
- Enterprise にわたるユーザの監査 - GitHub Docs
- 監査ログ - GitHub Docs
- Audit log を検索する - GitHub Docs
- 監査されたアクション - GitHub Docs
GitHub Enterprise Cloud (GHEC): 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 カテゴリアクション
-
git
カテゴリアクションのログのみ、保持期間は 7日間 -
clone
,fetch
,push
-
※ おそらく、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): Site admin での Audit log
push logs
リポジトリごとの Git 操作に関する監査ログは、 Push log から閲覧することができます。
GHES: Organization 配下のリポジトリの Push Log
GHES: ユーザー配下のリポジトリの Push Log
SSHキーの監査
ユーザーが利用する SSHキー に対して監査を行うことができます。なお、監査を開始すると現在利用している 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: アクティビティ ダッシュボード
サーバーインスタンスの監視
監査ログとは別に、サーバーインスタンスの CPU やメモリなどのログを監視したい場合は、下記をご参照ください。
Epilogue
いったん整理がついたので公開…!
Organization, GitHub Enterprise Cloud, GitHub Enterprise Server それぞれにおける対応を整理するのは、なかなか大変ですね😇
Discussion