メモ
Webhook は、特定のユース ケースの監査ログまたは API ポーリングの代替策として適している場合があります。 Webhook は、リポジトリ、Organization、または Enterprise で特定のイベントが発生したときに GitHub がサーバーに通知する方法です。 Enterprise、Organization、またはリポジトリで特定のイベントが発生したときに学習してログを記録するだけの場合、API や監査ログの検索と比較して、Webhook がより効率的である可能性があります。 「Webhook ドキュメント」をご覧ください。
監査ログのストリーミングについて
ストリーミングを使用して監査ログ データのコピーを保持することで、知的財産権を保護し、会社のコンプライアンスを維持できます。 監査ログでは、設定とアクセスの変更、ユーザー メンバーシップ、アプリのアクセス許可などのイベントが詳細に表示されます。 「企業向け監査ログイベント」、「Organization の監査ログ イベント」、「セキュリティ ログのイベント」をご覧ください。
監査ログ データのストリーミングには、次の利点があります。
- データの探索。 大量のデータに対してクエリを実行するために、推奨されるツールを使用して、ストリーミングされたイベントを調べます。 このストリームには、エンタープライズ アカウント全体の監査イベントと Git イベントの両方が含まれています。
- データ保有。 エクスポートされた監査ログと Git イベント データを必要な期間だけ保持します。
ストリームはいつでも設定、 、または削除できます。 ストリームは、ストリームが有効になった時点以降のアクティビティについて、企業内のすべての組織の監査イベントと Git イベント データをエクスポートします。
ストリーミングされたすべての監査ログは、圧縮された JSON ファイルとして送信されます。 ファイル名の形式は YYYY/MM/HH/MM/<uuid>.json.gz です。
メモ
GitHub では、少なくとも 1 回の配信方法が使用されます。 特定のネットワークまたはシステムの問題により、一部のイベントが重複する可能性があります。
監査ログ ストリーミングを有効にすると、 お使いの GitHub Enterprise Server インスタンスのパフォーマンスに小さな影響を与える可能性があります。 このパフォーマンスへの影響を軽減するためにリソースを増やす方法については、「CPUあるいはメモリリソースの増加」をご覧ください。
監査ログ ストリームの正常性のチェック
24 時間ごとに、正常性チェックが各ストリームに実行されます。 ストリームが正しく設定されていない場合、エンタープライズ所有者に電子メールが送信されます。 監査ログ イベントがストリームから削除されないようにするには、誤って構成されたストリームを 6 日以内に修正することが必要です。
ストリーミング構成の修正は、「監査ログのストリーミングの設定」の手順に従って行います。
監査ログのストリーミングの設定
監査ログ ストリームを設定するには、プロバイダーの指示に従います。
Amazon S3 へのストリーミングの設定
メモ
S3 へのストリーミングが機能するためには、アプライアンスから Amazon リージョン us-east-1 にアクセスできる必要があります。 S3 バケットは他の AWS リージョンに配置できます。
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 Enterprise Server の右上隅にあるプロフィール画像をクリックしてから、[Enterprise settings] をクリックします。
-
ページの左側にある 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](エンドポイントのチェック) をクリックします。
-
エンドポイントを正常に確認したら、 [保存] をクリックします。
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](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)を参照してください。
ストリームを構成するには、SAS トークンの URL が必要です。
Microsoft Azure portalから:
-
[ホーム] ページで、 [ストレージ アカウント] をクリックします。
-
[名前] で、使用するストレージ アカウントの名前をクリックします。
-
[データ ストレージ] で、 [コンテナー] をクリックします。
-
使用するコンテナーの名前をクリックします。
-
左側のサイドバーの [設定] で、 [共有アクセス トークン] をクリックします。
-
**[アクセス許可]** ドロップダウン メニューを選択し、`Create` と `Write` を選択して他のすべてのオプションの選択を解除します。 -
シークレット ローテーション ポリシーに準拠する有効期限を設定します。
-
**[SAS トークンおよび URL を生成]** をクリックします。 -
表示される BLOB SAS URL フィールドの値をコピーします。 この URL は、 GitHubで使用します。
GitHubから: -
GitHub Enterprise Server の右上隅にあるプロフィール画像をクリックしてから、[Enterprise settings] をクリックします。
-
ページの左側にある 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 Enterprise Server の右上隅にあるプロフィール画像をクリックしてから、[Enterprise settings] をクリックします。
-
ページの左側にある 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 Enterprise Server の右上隅にあるプロフィール画像をクリックしてから、[Enterprise settings] をクリックします。
- ページの左側にある Enterprise アカウント サイドバーで、[ Settings] をクリックします。
- [Settings] の [Audit log] をクリックします。
- [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
-
**[ストリームの構成]** ドロップダウンを選び、**[Datadog]** をクリックします。 -
**[トークン]** フィールドで、先ほどコピーしたトークンを貼り付けます。 -
**[サイト]** ドロップダウンを選び、Datadog サイトをクリックします。 ご利用のサイトを特定するには、その Datadog の URL を Datadog Docs にある [Datadog サイト](https://docs.datadoghq.com/getting_started/site/) 内のテーブルと比較します。 -
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 Enterprise Server の右上隅にあるプロフィール画像をクリックしてから、[Enterprise settings] をクリックします。
-
ページの左側にある 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 Enterprise Server の右上隅にあるプロフィール画像をクリックしてから、[Enterprise settings] をクリックします。
-
ページの左側にある 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 Enterprise Server の右上隅にあるプロフィール画像をクリックしてから、[Enterprise settings] をクリックします。
- ページの左側にある Enterprise アカウント サイドバーで、[ Settings] をクリックします。
- [Settings] の [Audit log] をクリックします。
- [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。
- [危険なゾーン] の [ストリームの削除] をクリックします。
- 確認メッセージが表示されます。 [Delete stream] をクリックして確定します。