Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。

Enterprise の監査ログのストリーミング

監査イベントと Git イベントのデータを GitHub から外部のデータ管理システムにストリーミングできます。

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

Enterprise owners can configure audit log streaming.

監査ログのストリーミングについて

知的財産を保護し、組織のコンプライアンスを維持するために、ストリーミングを使用して監査ログ データのコピーを保持し、監視できます。* 組織またはリポジトリの設定へのアクセス

  • アクセス許可の変更
  • 組織、リポジトリ、またはチームの追加または削除されたユーザー
  • 管理者に昇格されるユーザー
  • GitHub Appの権限の変更 * Git イベント (複製、フェッチ、プッシュなど)

監査ログのストリーミングには、次の利点があります。

  • データの探索。 大量のデータに対してクエリを実行するために、推奨されるツールを使用して、ストリーミングされたイベントを調べることができます。 ストリーミングには、Enterprise アカウント全体の監査イベントと Git イベントの両方が含まれます。
  • データの継続性。 ストリーミングは、最長 7 日間、監査データを失うことなく一時停止できます。
  • データ保有。 エクスポートされた監査ログと Git イベント データを必要な期間だけ保持できます。

Enterprise 所有者は、ストリームをいつでも設定、一時停止、または削除することができます。 ストリーミングによって、Enterprise 内のすべての Organization に関する監査と Git イベント データがエクスポートされます。

メモ: すべての監査ログは JSON 形式でストリーミングされます。

監査ログのストリーミングの設定

プロバイダーの指示に従って、GitHub Enterprise Cloud での監査ログのストリーミングを設定します。

Amazon S3 へのストリーミングの設定

アクセス キーを使用して S3 へのストリーミングを設定したり、OpenID Connect (OIDC) を使用して GitHub Enterprise Cloud に有効期間の長いシークレットを格納するのを回避したりできます。

アクセス キーを使用して S3 へのストリーミングを設定する

監査ログを Amazon の S3 エンドポイントにストリーミングするには、バケットとアクセス キーが必要です。 詳しくは、AWS のドキュメント「Amazon S3 バケットの作成、設定、操作」をご覧ください。 必ず、バケットへのパブリック アクセスをブロックして監査ログ情報を保護してください。

GitHub から監査ログのストリーミングを設定するには、次のものが必要です。

  • Amazon S3 バケットの名前
  • AWS アクセス キー ID
  • AWS 秘密鍵

アクセス キー ID と秘密鍵の作成またはアクセスについては、AWS ドキュメントの「Understanding and getting your AWS credentials」 (AWS 資格情報の理解と取得) を参照してください。

  1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  2. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  3. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ 1. [ 設定] で、 [監査ログ] をクリックします。 Enterprise アカウントのサイドバー内の [監査ログ] タブ

  4. [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。 1. [Configure stream](ストリームの構成) ドロップダウンを選び、 [Amazon S3] をクリックします。

    ドロップダウン メニューから [Amazon S3] を選択する

  5. [認証] で [アクセス キー] をクリックします。

    Amazon S3 へのストリーミングに関する認証オプションのスクリーンショット

  6. ストリームの設定を構成します。

    • [バケット] に、ストリーミング先のバケットの名前を入力します。 たとえば、auditlog-streaming-test のようにします。
    • [アクセス キー ID] に、アクセス キーの ID を入力します。 たとえば、ABCAIOSFODNN7EXAMPLE1 のようにします。
    • [シークレット キー] に、シークレット キーを入力します。 たとえば、aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY のようにします。
  7. GitHub で Amazon S3 エンドポイントに接続して書き込めることを確認するには、 [Check endpoint](エンドポイントのチェック) をクリックします。

    エンドポイントをチェックする 1. エンドポイントを正常に確認したら、 [保存] をクリックします。

OpenID Connect を使用して S3 へのストリーミングを設定する

  1. AWS では、GitHub の OIDC プロバイダーを IAM に追加します。 詳しくは、AWS のドキュメント「OpenID Connect (OIDC) ID プロバイダーの作成」をご覧ください。

    • プロバイダーの URL には、https://oidc-configuration.audit-log.githubusercontent.com を使います。
    • [対象者] には、sts.amazonaws.com を使います。
  2. バケットを作成し、バケットへのパブリック アクセスをブロックします。 詳しくは、AWS のドキュメント「Amazon S3 バケットの作成、設定、操作」をご覧ください。

  3. 次の JSON をコピーし、EXAMPLE-BUCKET を自分のバケットの名前に変えるという方法で GitHub がバケットに書き込まれることを許可するポリシーを作成します。 GitHub では、この JSON のアクセス許可のみが必要になります。

    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Sid": "VisualEditor0",
             "Effect": "Allow",
             "Action": [
                "s3:PutObject"
             ],
             "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/*"
         }
       ]
    }
    

    詳しくは、AWS のドキュメント「IAM ポリシーの作成」をご覧ください。

  4. GitHub IdP のロールと信頼ポリシーを構成します。 詳しくは、AWS のドキュメント「ウェブ ID または OpenID Connect フェデレーション用のロールを作成する (コンソール)」をご覧ください。

    • 上で作成したアクセス許可ポリシーを追加して、バケットへの書き込みを許可します。
    • 信頼関係を編集して、sub フィールドを検証条件に追加し、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) を記録しておきます。
  5. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  6. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  7. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ 1. [ 設定] で、 [監査ログ] をクリックします。 Enterprise アカウントのサイドバー内の [監査ログ] タブ

  8. [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。 1. [Configure stream](ストリームの構成) ドロップダウンを選び、 [Amazon S3] をクリックします。

    ドロップダウン メニューから [Amazon S3] を選択する

  9. [認証] の [OpenID Connect] をクリックします。

    Amazon S3 へのストリーミングに関する認証オプションのスクリーンショット

  10. ストリームの設定を構成します。

    • [バケット] に、ストリーミング先のバケットの名前を入力します。 たとえば、auditlog-streaming-test のようにします。
    • [ARN ロール] に、前に記録した ARN ロールを入力します。 たとえば、arn:aws::iam::1234567890:role/github-audit-log-streaming-role のようにします。
  11. GitHub で Amazon S3 エンドポイントに接続して書き込めることを確認するには、 [Check endpoint](エンドポイントのチェック) をクリックします。

    エンドポイントをチェックする 1. エンドポイントを正常に確認したら、 [保存] をクリックします。

OpenID Connect を使用して S3 へのストリーミングを無効にする

OIDC のセキュリティ脆弱性を検出したなど、何らかの理由で OIDC を使用した S3 へのストリーミングを無効にする場合は、ストリーミングの設定時に AWS で作成した GitHub OIDC プロバイダーを削除します。 詳しくは、AWS のドキュメント「OpenID Connect (OIDC) ID プロバイダーの作成」をご覧ください。

その後は、脆弱性が解決されるまで、アクセス キーを使用してストリーミングを設定します。 詳しい情報については、「アクセス キーを使用して S3 へのストリーミングを設定する」を参照してください。

AWS CloudTrail Lake との統合

監査ログの S3 ストリーミングを AWS CloudTrail Lake と統合することで、GitHub Enterprise Cloud からの監査ログは AWS アクティビティ ログと連結できます。 詳しくは、AWS CloudTrail ドキュメントか、aws-samples/aws-cloudtrail-lake-github-audit-log リポジトリの「GitHub 監査ログと CloudTrail オープン監査の統合」をご覧ください。

Azure Blob Storage へのストリーミングの設定

GitHub でのストリーミングを設定する前に、まず、Microsoft Azure でストレージ アカウントとコンテナーを作成しておく必要があります。 詳細については、Microsoft のドキュメント「Azure Blob Storage の概要」を参照してください。

GitHub でストリーミングを構成するには、SAS トークンの URL が必要です。

Microsoft Azure portal で次の操作を行います。

  1. [ホーム] ページで、 [ストレージ アカウント] をクリックします。

  2. 使用するストレージ アカウントの名前をクリックし、 [コンテナー] をクリックします。

    Azure の [コンテナー] リンク

  3. 使用するコンテナーの名前をクリックします。

  4. [共有アクセス トークン] をクリックします。

    Azure の [共有アクセス トークン] リンク

  5. [アクセス許可] ドロップダウン メニューで、CreateWrite のみを許可するようにアクセス許可を変更します。

    [アクセス許可] ドロップダウン メニュー

  6. シークレット ローテーション ポリシーに準拠する有効期限を設定します。

  7. [SAS トークンおよび URL を生成] をクリックします。

  8. 表示される BLOB SAS URL フィールドの値をコピーします。 この URL を GitHub で使用します。

GitHub で次の操作を行います。1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  1. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  2. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ 1. [ 設定] で、 [監査ログ] をクリックします。 Enterprise アカウントのサイドバー内の [監査ログ] タブ

  3. [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。

  4. [Configure stream] をクリックし、 [Azure Blob Storage] を選択します。

    ドロップダウン メニューから [Azure Blob Storage] を選択する

  5. 構成ページで、Azure でコピーした BLOB SAS URL を入力します。 [Container] フィールドは、その URL に基づいて自動入力されます。

    ストリーミングの設定を入力する

  6. [Check endpoint] をクリックして、GitHub で Azure Blob Storage エンドポイントに接続して書き込むことができることを確認します。

    エンドポイントをチェックする

  7. エンドポイントを正常に確認したら、 [保存] をクリックします。

Azure Event Hubs へのストリーミングの設定

GitHub でのストリーミングを設定する前に、まず、Microsoft Azure でイベント ハブ名前空間が必要です。 次に、その名前空間内にイベント ハブ インスタンスを作成する必要があります。 ストリーミングを設定するときに、このイベント ハブ インスタンスの詳細が必要になります。 詳細については、Microsoft のドキュメント「クイック スタート:Azure portal を使用したイベント ハブの作成」を参照してください。

イベント ハブに関する 2 つの情報 (インスタント名と接続文字列) が必要です。

Microsoft Azure portal で次の操作を行います。

  1. 「Event Hubs」を検索します。

    Azure portal の検索ボックス

  2. [Event Hubs] を選択します。 イベント ハブの名前が一覧表示されます。

    イベント ハブの一覧

  3. ストリーミング先のイベント ハブの名前をメモします。

  4. 必要なイベント ハブをクリックします。 次に、左側のメニューで、 [共有アクセスポリシー] を選択します。

  5. ポリシーの一覧で共有アクセス ポリシーを選択するか、新しいポリシーを作成します。

    共有アクセス ポリシーの一覧

  6. [接続文字列 – 主キー] フィールドの右側にあるボタンをクリックして、接続文字列をコピーします。

    イベント ハブの接続文字列

GitHub で次の操作を行います。1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  1. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  2. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ 1. [ 設定] で、 [監査ログ] をクリックします。 Enterprise アカウントのサイドバー内の [監査ログ] タブ

  3. [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。

  4. [Configure stream] をクリックし、 [Azure Event Hubs] を選択します。

    ドロップダウン メニューから [Azure Events Hubs] を選択する

  5. 構成ページで、次の項目を入力します。

    • Azure Event Hubs インスタンスの名前。
    • 接続文字列。

    ストリーミングの設定を入力する

  6. [Check endpoint] をクリックして、GitHub で Azure Events Hubs エンドポイントに接続して書き込むことができることを確認します。

    エンドポイントをチェックする

  7. エンドポイントを正常に確認したら、 [保存] をクリックします。

Datadog へのストリーミングの設定

Datadog へのストリーミングを設定するには、Datadog でクライアント トークンまたは API キーを作成し、次に認証用のトークンを使用して GitHub Enterprise Cloud で監査ログ ストリーミングを構成する必要があります。 Datadog でバケットやその他のストレージ コンテナーを作成する必要はありません。

Datadog へのストリーミングを設定した後は、"github.audit.streaming" でフィルター処理することで自分の監査ログ データを確認できます。 詳しくは、「ログ管理」を参照してください。

  1. まだ Datadog アカウントがない場合は、それを作成します。

  2. Datadog で、クライアント トークンまたは API キーを生成して、 [キーのコピー] をクリックします。 詳しくは、Datadog Docs の「API キーとアプリケーション キー」を参照してください。 1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  3. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  4. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ 1. [ 設定] で、 [監査ログ] をクリックします。 Enterprise アカウントのサイドバー内の [監査ログ] タブ

  5. [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。

  6. [ストリームの構成] ドロップダウンを選び、 [Datadog] をクリックします。

    [Datadog] が強調表示された [ストリームの構成] ドロップダウン メニューのスクリーンショット

  7. [トークン] の下に、先ほどコピーしたトークンを貼り付けます。

    [トークン] フィールドのスクリーンショット

  8. [サイト] ドロップダウン メニューを選び、Datadog サイトをクリックします。 ご利用の Datadog サイトを特定するには、その Datadog の URL を Datadog Docs にある Datadog サイト 内のテーブルと比較します。

    [サイト] ドロップダウン メニューのスクリーンショット

  9. GitHub で Datadog エンドポイントに接続して書き込みができることを確認するには、 [エンドポイントのチェック] をクリックします。

    エンドポイントをチェックする 1. エンドポイントを正常に確認したら、 [保存] をクリックします。

  10. 数分後、Datadog の [ログ] タブに監査ログ データが表示されていることを確認します。 監査ログ データが表示されない場合は、トークンとサイトが正しいことを GitHub で確認します。

Google Cloud Storage へのストリーミングの設定

Google Cloud Storage へのストリーミングを設定するには、適切な資格情報とアクセス許可を使用して、Google Cloud にサービス アカウントを作成し、そのサービス アカウントの資格情報を認証に使用して GitHub Enterprise Cloud での監査ログのストリーミングを構成します。

  1. Google Cloud のサービス アカウントを作成します。 サービス アカウントのアクセス制御または IAM ロールを設定する必要はありません。 詳細については、Google Cloud のドキュメント「サービス アカウントの作成と管理」を参照してください。

  2. サービス アカウントの JSON キーを作成し、キーを安全に格納します。 詳細については、Google Cloud のドキュメント「サービス アカウント キーの作成と管理」を参照してください。

  3. バケットをまだ作成していない場合は、作成します。 詳細については、Google Cloud のドキュメント「ストレージ バケットの作成」を参照してください。

  4. バケットのストレージ オブジェクト作成者のロールをサービス アカウントに付与します。 詳細については、Google Cloud のドキュメント「クラウド IAM 権限を使用する」を参照してください。

  5. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  6. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  7. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ 1. [ 設定] で、 [監査ログ] をクリックします。 Enterprise アカウントのサイドバー内の [監査ログ] タブ

  8. [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。

  9. [Configure stream] ドロップダウン メニューを選択し、 [Google Cloud Storage] をクリックします。

    [Configure stream] ドロップダウン メニューのスクリーンショット

  10. [Bucket] で、Google Cloud Storage バケットの名前を入力します。

    [Bucket] テキスト フィールドのスクリーンショット

  11. [JSON Credentials] で、サービス アカウントの JSON キーのファイルの内容全体を貼り付けます。

    [JSON Credentials] テキスト フィールドのスクリーンショット

  12. GitHub で Google Cloud Storage バケットに接続して書き込めることを確認するには、 [Check endpoint] をクリックします。

    [Check endpoint] ボタンのスクリーンショット

  13. エンドポイントを正常に確認したら、 [保存] をクリックします。

Splunk へのストリーミングの設定

監査ログを Splunk の HTTP Event Collector (HEC) エンドポイントにストリーミングするには、エンドポイントが HTTPS 接続を受け入れるように構成されていることを確認する必要があります。 詳細については、Splunk のドキュメント「Set up and use HTTP Event Collector in Splunk Web」 (Splunk Web で HTTP Event Collector を設定および作成する) を参照してください。

  1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  2. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  3. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ 1. [ 設定] で、 [監査ログ] をクリックします。 Enterprise アカウントのサイドバー内の [監査ログ] タブ

  4. [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。

  5. [Configure stream] をクリックし、 [Splunk] を選択します。

    ドロップダウン メニューから [Splunk] を選択する

  6. 構成ページで、次の項目を入力します。

    • ストリーミング先のアプリケーションがホストされているドメイン。

      Splunk Cloud を使用している場合、Domainhttp-inputs-<host> である必要があります。ここで、host は、Splunk Cloud で使用するドメインです。 (例: http-inputs-mycompany.splunkcloud.com)。

    • アプリケーションでデータを受け入れるポート。

      Splunk Cloud を使用していて、ポート構成を変更していない場合、Port443 である必要があります。 Splunk Cloud の無料試用版を使用している場合、Port8088 である必要があります。

    • GitHub でサードパーティ アプリケーションに対する認証に使用できるトークン。

    ストリーミングの設定を入力する

  7. [Enable SSL verification] チェック ボックスはオンのままにします。

    監査ログは常に、暗号化されたデータとしてストリーミングされます。ただし、このオプションを選択すると、GitHub によって、イベントの配信前に Splunk インスタンスの SSL 証明書が検証されます。 SSL 検証は、イベントが URL エンドポイントに安全に配信されることを保証するために役立ちます。 このオプションの選択をオフにすることはできますが、SSL 検証を有効のままにすることをお勧めします。

  8. [Check endpoint] をクリックして、GitHub で Splunk エンドポイントに接続して書き込むことができることを確認します。 エンドポイントをチェックする 1. エンドポイントを正常に確認したら、 [保存] をクリックします。

監査ログのストリーミングの一時停止

ストリーミングを一時停止すると、監査ログ データを失うことなく、受信側のアプリケーションでメンテナンスを実行できます。 監査ログは、最長 7 日間 GitHub.com に格納され、ストリーミングの一時停止を解除するとエクスポートされます。

Datadog で受け入れるログは過去 18 時間以降のものに限られます。 Datadog エンドポイントへのストリームを 18 時間以上一時停止した場合、ストリーミングを再開した後に Datadog で受け入れられないログが失われるリスクがあります。

  1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  2. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  3. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ 1. [ 設定] で、 [監査ログ] をクリックします。 Enterprise アカウントのサイドバー内の [監査ログ] タブ

  4. [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。

  5. [Pause stream] をクリックします。

    ストリーミングを一時停止する

  6. 確認メッセージが表示されます。 [Pause stream] をクリックして確定します。

アプリケーションが、監査ログを再び受信できるようになったら、 [Resume stream] をクリックして監査ログのストリーミングを再開します。

監査ログのストリーミングの削除

  1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  2. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  3. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ 1. [ 設定] で、 [監査ログ] をクリックします。 Enterprise アカウントのサイドバー内の [監査ログ] タブ

  4. [Audit log](監査ログ) の [Log streaming](ログ ストリーミング) をクリックします。

  5. [Delete stream] をクリックします。

    ストリーミングを削除する

  6. 確認メッセージが表示されます。 [Delete stream] をクリックして確定します。