Skip to main content

エンタープライズの監査ログ API を使う

REST API を使って、エンタープライズ イベントをプログラムで取得できます。

この機能を使用できるユーザー

Enterprise owners can use the audit log API.

Audit log API を使用する

監査ログは、REST API を使って操作できます。これらの API を介して read:audit_log スコープを使って、監査ログにアクセスできます。

API 応答のタイムスタンプと日付フィールドは UTC エポック ミリ秒単位で計測されます。

知的財産が確実にセキュアに保たれるようにし、エンタープライズのコンプライアンスを維持するために、監査ログ REST API を使って監査ログのデータのコピーを保持し、モニタリングできます: - 組織またはリポジトリの設定へのアクセス

  • アクセス許可の変更
  • 組織、リポジトリ、またはチームの追加または削除されたユーザー
  • 管理者に昇格されるユーザー
  • GitHub App のアクセス許可の変更
  • API 要求 (有効にする必要があります)

監査ログには、Enterprise に影響するアクティビティによってトリガーされるイベントの一覧が表示されます (現在の月内および過去 6 か月間まで)。 監査ログには、Git イベントが 7 日間保持されます。

既定では、過去 3 か月のイベントのみが表示されます。 古いイベントを表示するには、created パラメーターを使って日付範囲を指定します。 詳しくは、「検索構文を理解する」を参照してください。

各監査ログ API エンドポイントのレート制限は、ユーザーと IP アドレスの特定の組み合わせに対して 1 時間あたり 1,750 クエリです。 レート制限を回避するために、監査ログ API に対してクエリを実行する統合では、1 時間あたり最大 1,750 クエリの頻度でクエリを実行する必要があります。 さらに、統合がレート制限エラー (通常は 403 または 429 応答) を受け取った場合は、API に対して別の要求を行う前に待機する必要があります。 詳しくは、「REST API のリソース」と「REST API を使用するためのベスト プラクティス」をご覧ください。

監査ログ REST API の詳細については、「GitHub Enterprise の管理」と「組織」を参照してください。

例 1: 特定の日付を対象としたエンタープライズ内のすべてのイベント (ページ分割あり)

カーソル ベースの改ページ位置の自動修正を使用できます。 改ページ位置の自動修正について詳しくは、「REST API 内での改ページ位置の自動修正の使用」をご覧ください。

次のクエリは、avocado-corp エンタープライズで 2022 年 1 月 1 日に作成された監査ログ イベントを検索し、ページネーションを使用して 1 ページあたり最大 100 件の項目で最初のページを返します。 改ページ位置の自動修正について詳しくは、「REST API 内での改ページ位置の自動修正の使用」をご覧ください。 --include フラグを指定すると、応答と共にヘッダーが返されます。

curl --include -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=created:2022-01-01&per_page=100"

結果が 100 を超える場合、link ヘッダーには、次のページ、1 ページ目、前のページの結果をフェッチするための URL が含まれます。

link: <https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=MS42NjQzODMzNTk5MjdlKzEyfDloQzBxdURzaFdVbVlLWjkxRU9mNXc%3D&before=>; rel="next",
<https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=&before=>; rel="first",
<https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=&before=MS42Njc4NDA2MjM4MzNlKzEyfExqeG5sUElvNEZMbG1XZHA5akdKTVE%3D>; rel="prev"

対応するページネーション リンクを次の要求にコピーします。 次に例を示します。

curl -I -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=MS42Njc4NDA2MjM5NDFlKzEyfHRYa3AwSkxUd2xyRjA5bWxfOS1RbFE%3D&before="

例 2: 特定の日付とアクターを対象としたエンタープライズにおける pull request のイベント

createdactor のように複数の検索語句を指定するには、整形された URL の中で + 記号または ASCII 文字コード %20 で区切ります。

次のクエリは、イベントが avocado-corp エンタープライズで 2022 年 1 月 1 日以降に発生し、アクションが octocat ユーザーによって実行された pull request の監査ログ イベントを検索します。

curl -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=action:pull_request+created:>=2022-01-01+actor:octocat"