メモ
Webhook は、特定のユース ケースの監査ログまたは API ポーリングの代替策として適している場合があります。 Webhook は、リポジトリ、Organization、または Enterprise で特定のイベントが発生したときに GitHub がサーバーに通知する方法です。 Enterprise、Organization、またはリポジトリで特定のイベントが発生したときに学習してログを記録するだけの場合、API や監査ログの検索と比較して、Webhook がより効率的である可能性があります。 「Webhook ドキュメント」をご覧ください。
監査ログのストリーミングについて
ストリーミングを使用して監査ログ データのコピーを保持することで、知的財産権を保護し、会社のコンプライアンスを維持できます。 監査ログでは、設定とアクセスの変更、ユーザー メンバーシップ、アプリのアクセス許可などのイベントが詳細に表示されます。 「企業向け監査ログイベント」、「Organization の監査ログ イベント」、「セキュリティ ログのイベント」をご覧ください。
監査ログ データのストリーミングには、次の利点があります。
- データの探索。 大量のデータに対してクエリを実行するために、推奨されるツールを使用して、ストリーミングされたイベントを調べます。 このストリームには、エンタープライズ アカウント全体の監査イベントと Git イベントの両方が含まれています。
- データの継続性。 ストリームを一時停止する場合、バッファーが 7 日間保持されるため、最初の 1 週間はデータが失われません。 ストリームが 7 日間より長く一時停止し続けた場合、現在の時刻の 1 週間前の時点から再開します。 3 週間以上一時停止した場合、ストリームはデータを保持せず、現在のタイムスタンプから新たに開始されます。
- データ保有。 エクスポートされた監査ログと Git イベント データを必要な期間だけ保持します。
ストリームはいつでも設定、、一時停止、 、または削除できます。 ストリームは、ストリームが有効になった時点以降のアクティビティについて、企業内のすべての組織の監査イベントと Git イベント データをエクスポートします。
ストリーミングされたすべての監査ログは、圧縮された JSON ファイルとして送信されます。 ファイル名の形式は YYYY/MM/HH/MM/<uuid>.json.gz です。
メモ
GitHub では、少なくとも 1 回の配信方法が使用されます。 特定のネットワークまたはシステムの問題により、一部のイベントが重複する可能性があります。
監査ログ ストリームの正常性のチェック
24 時間ごとに、正常性チェックが各ストリームに実行されます。 ストリームが正しく設定されていない場合、エンタープライズ所有者に電子メールが送信されます。 監査ログ イベントがストリームから削除されないようにするには、誤って構成されたストリームを 6 日以内に修正することが必要です。
ストリーミング構成の修正は、「監査ログのストリーミングの設定」の手順に従って行います。
監査ログのストリーミングの設定
監査ログ ストリームを設定するには、プロバイダーの指示に従います。
メモ
ストリーミング エンドポイントへの接続に使用 GitHub IP アドレス範囲の一覧を取得するには、REST API を使用します。
metaのGitHub.com エンドポイントには、IP アドレスの一覧を含むhooks キーが含まれています。 「メタデータ用 REST API エンドポイント」を参照してください。
複数のエンドポイントへのストリーミング
メモ
この機能は現在 パブリック プレビュー であり、変更される可能性があります。
監査ログを複数のエンドポイントにストリーミングできます。 たとえば、監査ログを同じ種類の 2 つのエンドポイントにストリーミングしたり、2 つの異なるプロバイダーにストリーミングしたりできます。 複数のストリームの設定は、各プロバイダーの指示に従って行ってください。
Amazon S3 へのストリーミングの設定
アクセス キーを使用して S3 へのストリーミングを設定したり、OpenID Connect (OIDC) を使用して GitHubに有効期間の長いシークレットを格納しないようにしたりできます。
- アクセス キーを使用して S3 へのストリーミングを設定する
- OpenID Connect を使用して S3 へのストリーミングを設定する
- OpenID Connect を使用して S3 へのストリーミングを無効にする
- AWS CloudTrail Lake との統合
アクセス キーを使用して S3 へのストリーミングを設定する
GitHubから監査ログ ストリーミングを設定するには、次のものが必要です。
- AWS アクセス キー ID
- AWS 秘密鍵
アクセス キー ID と秘密鍵の作成またはアクセスについては、AWS ドキュメントの「Understanding and getting your AWS credentials」 (AWS 資格情報の理解と取得) を参照してください。
AWS から:
-
バケットを作成し、バケットへのパブリック アクセスをブロックします。 AWS ドキュメントの「Amazon S3 バケットの作成、設定、操作」をご覧ください。
-
GitHub によるバケットへの書き込みを許可するポリシーを作成します。 次の JSON をコピーし、
EXAMPLE-BUCKETをバケットの名前に置き換えます。 GitHub では、この JSON のアクセス許可のみが必要になります。{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/*" } ] }AWS ドキュメントの「IAM ポリシーの作成」をご覧ください。
GitHub から:
-
企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
-
ページの上部にある [ Settings] をクリックします。
-
[Settings] の [Audit log] をクリックします。
-
[Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
-
[ストリームの構成] ドロップダウン メニューを選び、 [Amazon S3] をクリックします。
-
[認証] で、[ アクセス キー] をクリックします。
-
ストリームの設定を構成します。
- [リージョン] でバケットのリージョンを選択します。 たとえば、「
us-east-1」のように入力します。 - [バケット] に、ストリーミング先のバケットの名前を入力します。 たとえば、「
auditlog-streaming-test」のように入力します。 - [アクセス キー ID] に、アクセス キーの ID を入力します。 たとえば、「
ABCAIOSFODNN7EXAMPLE1」のように入力します。 - [シークレット キー] に、シークレット キーを入力します。 たとえば、「
aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY」のように入力します。
- [リージョン] でバケットのリージョンを選択します。 たとえば、「
-
GitHub で Amazon S3 エンドポイントに接続して書き込めることを確認するには、 [Check endpoint](エンドポイントのチェック) をクリックします。
-
エンドポイントを正常に確認したら、 [保存] をクリックします。
OpenID Connect を使用して S3 へのストリーミングを設定する
メモ
データ所在地付き GitHub Enterprise Cloudの OpenID Connect を使用した S3 への監査ログ ストリーミングは現在使用できません。 「GitHub Enterprise Cloud とデータ所在地の機能の概要」を参照してください。
AWS から:
- OIDC プロバイダーを IAM に追加します。 AWS ドキュメントの「OpenID Connect (OIDC) ID プロバイダーの作成」をご覧ください。
- プロバイダーの URL には、
https://oidc-configuration.audit-log.githubusercontent.comを使います。 - [対象者] には、
sts.amazonaws.comを使います。
-
バケットを作成し、バケットへのパブリック アクセスをブロックします。 AWS ドキュメントの「Amazon S3 バケットの作成、設定、操作」をご覧ください。
-
GitHub によるバケットへの書き込みを許可するポリシーを作成します。 次の JSON をコピーし、
EXAMPLE-BUCKETをバケットの名前に置き換えます。 GitHub では、この JSON のアクセス許可のみが必要になります。{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/*" } ] }AWS ドキュメントの「IAM ポリシーの作成」をご覧ください。
-
GitHub IdP のロールと信頼ポリシーを構成します。 AWS ドキュメントの「ウェブ ID または OpenID Connect フェデレーション用のロールを作成する (コンソール)」をご覧ください。
-
先に作成したアクセス許可ポリシーを追加して、バケットへの書き込みを許可します。
-
信頼関係を編集して、
subフィールドを検証条件に追加し、ENTERPRISEを自分の Enterprise の名前に置き換えます。メモ
ENTERPRISEの値は大文字と小文字を区別します。 Enterprise 名に大文字が含まれている場合は、信頼ポリシーでも同じ大文字を使ってください。"Condition": { "StringEquals": { "oidc-configuration.audit-log.githubusercontent.com:aud": "sts.amazonaws.com", "oidc-configuration.audit-log.githubusercontent.com:sub": "https://github.com/ENTERPRISE" } } -
作成されたロールの Amazon Resource Name (ARN) を記録しておきます。
-
GitHubから:
-
企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
-
ページの上部にある [ Settings] をクリックします。
-
[Settings] の [Audit log] をクリックします。
-
[Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
-
[ストリームの構成] ドロップダウン メニューを選び、 [Amazon S3] をクリックします。
-
[認証] の [OpenID Connect] をクリックします。
-
ストリームの設定を構成します。
- [リージョン] でバケットのリージョンを選択します。 たとえば、
us-east-1;自動検出のオプションも使用できます。 - [バケット] に、ストリーミング先のバケットの名前を入力します。 たとえば、「
auditlog-streaming-test」のように入力します。 - [ARN ロール] に、前に記録した ARN ロールを入力します。 たとえば、「
arn:aws::iam::1234567890:role/github-audit-log-streaming-role」のように入力します。
- [リージョン] でバケットのリージョンを選択します。 たとえば、
-
GitHub で Amazon S3 エンドポイントに接続して書き込めることを確認するには、 [Check endpoint](エンドポイントのチェック) をクリックします。
-
エンドポイントを正常に確認したら、 [保存] をクリックします。
OpenID Connect を使用して S3 へのストリーミングを無効にする
OIDC を使用して S3 へのストリーミングを無効にするには、ストリーミングを設定するときに AWS で作成した GitHub OIDC プロバイダーを削除します。 AWS ドキュメントの「OpenID Connect (OIDC) ID プロバイダーの作成」をご覧ください。
OIDC のセキュリティの脆弱性のためにストリーミングを無効にした場合は、プロバイダーを削除した後、脆弱性が解決されるまでアクセス キーを使用してストリーミングを設定します。 「アクセス キーを使用して S3 へのストリーミングを設定する」をご覧ください。
AWS CloudTrail Lake との統合
S3 へのストリーミングと AWS CloudTrail Lake を統合することで、監査ログを統合できます。
リポジトリの AWS CloudTrail ドキュメント または aws-samples/aws-cloudtrail-lake-github-audit-log を参照してください。
Azure Blob Storageへのストリーミングの設定
メモ
Azure Government内の BLOB ストレージへの監査ログ ストリーミングはサポートされていません。
GitHub でストリームを設定する前に、まずストレージ アカウントとコンテナーをMicrosoft Azureに作成します。 Microsoft ドキュメントの「introduction to Azure Blob Storageを参照してください。
ストリームを構成するには、SAS トークンの URL が必要です。
Microsoft Azure portalから:
- [ホーム] ページで、 [ストレージ アカウント] をクリックします。
- [名前] で、使用するストレージ アカウントの名前をクリックします。
- [データ ストレージ] で、 [コンテナー] をクリックします。
- 使用するコンテナーの名前をクリックします。
- 左側のサイドバーの [設定] で、 [共有アクセス トークン] をクリックします。
- [アクセス許可] ドロップダウン メニューを選択し、
CreateとWriteを選択して他のすべてのオプションの選択を解除します。 - シークレット ローテーション ポリシーに準拠する有効期限を設定します。
- [SAS トークンおよび URL を生成] をクリックします。
- 表示される BLOB SAS URL フィールドの値をコピーします。 この URL は、 GitHubで使用します。
GitHubから:
- 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
- ページの上部にある [ Settings] をクリックします。
- [Settings] の [Audit log] をクリックします。
- [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
- [構成ストリーム ドロップダウン メニューを選択し、Azure Blob Storage をクリックします。
- 構成ページで、Azureにコピーした BLOB SAS URL を入力します。 [Container] フィールドは、その URL に基づいて自動入力されます。
- エンドポイントの確認 をクリックして、GitHub がAzure Blob Storage エンドポイントに接続して書き込むことができることを確認します。
- エンドポイントを正常に確認したら、 [保存] をクリックします。
Azure Event Hubsへのストリーミングの設定
メモ
Azure Governmentの Event Hubs インスタンスはサポートされていません。
GitHubでストリームを設定する前に、次のものが必要です。
- Microsoft Azureのイベント ハブ名前空間
- 名前空間内のイベント ハブ インスタンス (Microsoft ドキュメントの「Quickstart: Azure ポータルを使用してイベント ハブを作成するを参照してください)
Microsoft Azure portalから:
- ページの上部にある検索ボックスを使用して、"Event Hubs" を検索します。
- [Event Hubs] を選択します。 イベント ハブの名前が一覧表示されます。
- ストリーミング先のイベント ハブの名前をメモします。 イベント ハブをクリックします。
- 左側のメニューで、 [共有アクセス ポリシー] を選びます。
- ポリシーの一覧から共有アクセス ポリシーを選ぶか、新しいポリシーを作成します。
- 接続文字列を Connection string-primary key フィールドからコピーします。
GitHubから:
- 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
- ページの上部にある [ Settings] をクリックします。
- [Settings] の [Audit log] をクリックします。
- [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
- Configure stream ドロップダウンを選択し、Azure Event Hubs をクリックします。
- 構成ページで、次の項目を入力します:
- Azure Event Hubs インスタンスの名前。
- 接続文字列。
- [エンドポイントの確認 をクリックして、GitHub が Azure Events Hub エンドポイントに接続して書き込むことができることを確認します。
- エンドポイントを正常に確認したら、 [保存] をクリックします。
Datadog へのストリーミングの設定
Datadog へのストリーミングを設定するには、Datadog でクライアント トークンまたは API キーを作成し、認証にトークンを使用して GitHub で監査ログ ストリーミングを構成します。 Datadog でバケットやその他のストレージ コンテナーを作成する必要はありません。
Datadog へのストリーミングを設定した後は、「github.audit.streaming」でフィルター処理することで自分の監査ログ データを確認できます。 「ログの管理」を参照してください。
- まだ Datadog アカウントがない場合は、それを作成します。
- Datadog で、クライアント トークンまたは API キーを生成して、 [キーのコピー] をクリックします。 Datadog Docs の API キーとアプリケーション キー を参照してください。
- 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
- ページの上部にある [ Settings] をクリックします。
- [Settings] の [Audit log] をクリックします。
- [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
- [ストリームの構成] ドロップダウンを選び、[Datadog] をクリックします。
- [トークン] フィールドで、先ほどコピーしたトークンを貼り付けます。
- [サイト] ドロップダウンを選び、Datadog サイトをクリックします。 ご利用のサイトを特定するには、その Datadog の URL を Datadog Docs にある Datadog サイト 内のテーブルと比較します。
- GitHubが Datadog エンドポイントに接続して書き込むことができることを確認するには、[エンドポイントの確認] をクリックします。
- エンドポイントを正常に確認したら、 [保存] をクリックします。
- 数分後、Datadog の [ログ] タブに監査ログ データが表示されていることを確認します。 表示されない場合は、トークンとサイトが GitHubで正しいことを確認します。
Google Cloud Storage へのストリーミングの設定
Google Cloud Storage へのストリーミングを設定するには、適切な資格情報とアクセス許可を使用して Google Cloud でサービス アカウントを作成し、認証にサービス アカウントの資格情報を使用して GitHub で監査ログ ストリーミングを構成します。
-
Google Cloud のサービス アカウントを作成します。 アカウントのアクセス制御または IAM ロールを設定する必要はありません。 Google Cloud ドキュメントの「サービス アカウントの作成と管理」を参照してください。
-
サービス アカウントの JSON キーを作成し、キーを安全に格納します。 Google Cloud ドキュメントの「サービス アカウント キーの作成と管理」を参照してください。
-
まだ作成していない場合は、バケットを作成します。 Google Cloud ドキュメントの「ストレージ バケットの作成」を参照してください。
-
バケットのストレージ オブジェクト作成者のロールをサービス アカウントに付与します。 Google Cloud ドキュメントの「クラウド IAM 権限を使用する」を参照してください。
-
企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
-
ページの上部にある [ Settings] をクリックします。
-
[Settings] の [Audit log] をクリックします。
-
[Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
-
[ストリームの構成] ドロップダウンを選び、[Google Cloud Storage] をクリックします。
-
[Bucket] で、Google Cloud Storage バケットの名前を入力します。
-
[JSON Credentials] で、サービス アカウントの JSON キーのファイルの内容全体を貼り付けます。
-
GitHubが Google Cloud Storage バケットに接続して書き込むことができることを確認するには、[エンドポイントの確認] をクリックします。
-
エンドポイントを正常に確認したら、 [保存] をクリックします。
Splunk へのストリーミングの設定
監査ログを Splunk の HTTP Event Collector (HEC) エンドポイントにストリーミングするには、エンドポイントが HTTPS 接続を受け入れるように構成されていることを確認します。 Splunk ドキュメントの「Splunk Web で HTTP Event Collector を設定および作成する」を参照してください。
メモ
GitHub は、 <Domain>:port/services/collectorを介して HEC エンドポイントを検証します。 エンドポイント (OpenTelemetry 経由の Splunk HEC Receiver など) をセルフホストする場合は、この目的地で到達できることを確認します。
-
企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
-
ページの上部にある [ Settings] をクリックします。
-
[Settings] の [Audit log] をクリックします。
-
[Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
-
[ストリームの構成] ドロップダウンを選び、[Splunk] をクリックします。
-
構成ページで、次の項目を入力します:
-
ストリーミング先のアプリケーションがホストされているドメイン。
Splunk Cloud を使っている場合、
Domainはhttp-inputs-<host>である必要があります。ここで、hostは、Splunk Cloud で使うドメインです。 たとえば、「http-inputs-mycompany.splunkcloud.com」のように入力します。無料試用版の Splunk Cloud を使っている場合、
Domainはinputs.<host>である必要があります。ここで、hostは、Splunk Cloud で使うドメインです。 たとえば、「inputs.mycompany.splunkcloud.com」のように入力します。 -
アプリケーションでデータを受け入れるポート。
Splunk Cloud を使用している場合は、
Portを443にする必要があります。無料試用版の Splunk Cloud を使っている場合、
Portを8088にしてください。 -
サード パーティのアプリケーションに認証するためにGitHubで使用できるトークン。
-
-
[Enable SSL verification] チェック ボックスはオンのままにします。
監査ログは常に暗号化されたデータとしてストリーミングされますが、このオプションを選択すると、イベントの配信時に Splunk インスタンスの SSL 証明書GitHubを検証します。 SSL 検証は、イベントが URL エンドポイントに安全に配信されることを保証するために役立ちます。 検証はオプションですが、SSL 検証は有効のままにすることをお勧めします。
-
[ エンドポイントの確認 ] をクリックして、 GitHub が Splunk エンドポイントに接続して書き込むことができることを確認します。
-
エンドポイントを正常に確認したら、 [保存] をクリックします。
監査ログのストリーミングの一時停止
ストリーミングを一時停止して、監査ログ データを失うことなく、受信側のアプリケーションでメンテナンスを実行します。 監査ログは、 GitHub に最大 7 日間保存され、ストリームの一時停止を解除するとエクスポートされます。
Datadog は過去 18 時間までのログのみを受け入れます。 Datadog エンドポイントへのストリームを 18 時間以上一時停止した場合、ストリーミングを再開した後に Datadog で受け入れられないログが失われるリスクがあります。
- 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
- ページの上部にある [ Settings] をクリックします。
- [Settings] の [Audit log] をクリックします。
- [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
- 構成したストリームの右側にある [ストリームの一時停止] をクリックします。
- 確認メッセージが表示されます。 [Pause stream] をクリックして確定します。
ストリーミングを再開するには、[ストリームを再開する] をクリックします。
監査ログストリームの削除
- 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
- ページの上部にある [ Settings] をクリックします。
- [Settings] の [Audit log] をクリックします。
- [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
- [危険なゾーン] の [ストリームの削除] をクリックします。
- 確認メッセージが表示されます。 [Delete stream] をクリックして確定します。
API 要求の監査ログ ストリーミングの有効化
メモ
この機能を有効にした後、すべての API 要求が監査ログ ストリームに含まれるわけではありません。 API 要求のストリーミングは、セキュリティ関連のエンドポイントに限られます。
- 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
- ページの上部にある [ Settings] をクリックします。
- [Settings] の [Audit log] をクリックします。
- [監査ログ] の [設定] をクリックします。
- [API 要求] で、 [API 要求イベントを有効にする] を選びます。
- [保存] をクリックします。