GitHub ログの種類や取得方法について

Git
この記事は約5分で読めます。
記事内に広告が含まれています。

GitHubでは大きく次のログがあります。

  • 監査ログ
  • リポジトリログ

本記事では、これらログの概要、取得方法などを書いていきます。

※なお、現時点で(2023年5月)同時には取得出来ません。

以下、目次となります。

監査ログ

監査ログは、監査に係わるログということなので、全部のイベントが記録されるわけではありません。例えば、GitHubの場合、リポジトリの設定変更は監査対象ですが、リポジトリのコンテンツに対する変更は対象外です。

企業の監査ログについて - GitHub Enterprise Cloud Docs
デバッグと内部および外部のコンプライアンスをサポートするために、GitHub Enterprise Cloud には、監査済みユーザー、Organization、リポジトリ イベントのログが用意されています。

※Git単体の世界は対象外ということです。

監査ログの例

  • 認証ログ
    → プライバシーの関係でログインイベントは取得出来ません。Organizationへの参加等は取得可能です。
  • ユーザーアクティビティログ
    → ユーザーがGitHub上で実行したアクション、たとえばリポジトリの作成や削除、プルリクエストの作成やマージ、チームの作成や削除などを記録します。
  • 組織アクティビティログ
    → GitHub組織内で実行されたアクション、たとえば組織メンバーの追加や削除、組織の設定変更などを記録します。

※ところで、EnterpriseやOrganizationでは追加のオプション設定で利用者の「IPアドレス」を取得することも可能です。ただしIPアドレスの収集は利用者の許可をもらうべきだったり、法務部に確認すべきとの記載があります。

IPアドレスの取得。

監査ログの確認方法

ブラウザ上及びAPI経由で確認可能です。

■ 個人単位の「監査ログ」

個人のsettings→Security logから確認出来ます。

■ Organization単位の「監査ログ」

OrganizationのSettings→Logs→Audit logから確認出来ます。

■ Enterprise単位の「監査ログ」

EnterpriseのSettings→Audit logから確認出来ます。

Export Git EventsはCloneやFetch等の最低限のイベントが含まれます。

■「監査ログのAPI」

プラン情報によるとEnterpriseに限り、利用可能とのことです。

公式サイトの手順書を載せておきます。

エンタープライズの監査ログ API を使う - GitHub Enterprise Cloud Docs
REST API を使って、エンタープライズ イベントをプログラムで取得できます。

■ 補足

  • Enterpriseの監査ログはS3やBLOB等に出力可能ですが、今回は割愛します。
  • 監査ログのうちGitイベント(Pullなど)は最大7日間の保持。

リポジトリログ

リポジトリログの例

  • コミットログ
    → リポジトリにコミットされたすべての変更履歴を記録します。
  • プッシュログ
    → リポジトリへの変更がプッシュされた際のアクティビティを記録します。
  • プルリクエストログ
    → プルリクエストの作成やマージ、コメントなどを記録します。
  • イシューログ
    → イシューの作成、コメント、クローズなどを記録します。
  • ブランチ/タグ操作ログ
    → ブランチやタグの作成、削除、リネームなどを記録します。

リポジトリログの確認方法

一部はブラウザ上で確認可能ですが、細かい内容はAPI経由となります。

■ ブラウザ上で確認

例えば、リポジトリの「Insights」タブからは最低限のイベント情報を確認可能です。

リポジトリのコミットログはコミット履歴から確認出来ますが、リポジトリ全体のイベントを時系列で確認するためにはAPIを使います。

■ APIを利用したイベントログの確認例

例えば、APIのURLは次の通り。

# 個人リポジトリ
 https://api.github.com/repos/{owner}/{repo}/events

# Organization単位
 https://api.github.com/orgs/{organization}/events

# Organizationの指定リポジトリ
 https://api.github.com/orgs/{organization}/{repo}/events

{owner}や{organization}は実際の値に置き換えてアクセスするとJSON形式でデータが返ってきます。デフォルトは30件のため、「per_page」「page」等のクエリで調整しましょう。

なお、publicなデータはブラウザ上のURLアクセスで取得可能ですが、privateな場合はパーソナルアクセストークンを発行してcurl等でアクセスします。

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>"\
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/{owner}/{repo}/events

→ アクセス出来ない場合は「”message”: “Not Found”」で返ってきます。

公式サイトのURLも載せておきます。

REST API endpoints for events - GitHub Docs
Use the REST API to interact with GitHub events.

(補足) 保存期限

ログの保存期間には期限があります。

監査ログはデフォルトで180日(Organization粒度の場合)、イベントログは不明です(調査中)。

→ いずれにしても、定期的な吐き出しは必要です。

まとめ

本記事ではGitHubの「監査ログ」「イベントログ」に関して、ログの概要や取得方法をご紹介しました。

  • ブラウザで確認可能なログもある。
  • APIを利用すれば漏れなく確認出来る。

企業ユースでは、色々なログを求められるケースもあるため、しっかり確認して取得しましょう。

最後までお読みいただきありがとうございます。

コメント

Top
タイトルとURLをコピーしました