監査ログへのアクセス、キャプチャ、使用
規制の強い業界で事業を行っているかどうかにかかわらず、監査ログは、GitHub Enterprise Cloud (GHEC) で発生した様々なアクティビティを追跡するために不可欠の手段です。構成の変更からすべてのコードのプッシュまたはプルへの API アクセスまで、監査ログは、いくつかの構造レベルで詳細な記録を提供します。そして、このデータに対して最初からアクセス、キャプチャ、やりとりする方法を知ることは重要です。
このガイドの学習内容
監査ログの表示方法
GHEC の監査ログに含まれているデータ
監査ログの構成方法
保持と分析のために監査ログをストリーミングおよびエクスポートする方法
監査ログに含まれるアクティビティ
GitHub では、Enterprise や Organization における次のようなさまざまなアクティビティの監査ログを利用できます。
アクティビティからのイベント (構成の変更や CRUD イベントなど)
API からリソースへのアクセス (インテグレーションによって開始されたものも含む)
Git イベント (コードのプッシュ、プル、クローンなど)
GitHub では、監査対象イベントの大半がログに保持されます。構成できる保存期間は最長 6 か月です。一方、Git イベントは 7 日間保持されます。管理者は、ログのデータを GitHub UI 内で API とストリーミングを経由して利用できます。
監査ログは Enterprise アカウント レベルと Organization レベルの両方で利用できます。
監査ログの表示
Enterprise レベルと Organization レベルの両方のユーザー インターフェイスのそれぞれの設定ページで、Git イベントを除いたイベントの期限付き監査ログを表示できます。このカテゴリーに関連するイベントは大量にあるため、Git イベントは、ユーザー インターフェイス ビューではなく、監査ログのエクスポートまたはストリーミングを通じてのみ利用できます。デフォルトでは、過去 3 か月間のイベントのみがユーザー インターフェイスに表示されます。GitHub の検索構文を使用して日付範囲を指定すると、最長で過去 6 か月までのイベントを表示できます ( created
パラメーターを指定)。
これらの制限を超えて存続する監査イベントの記録が必要な場合は、後ほど説明するように、監査ログのストリーミングを設定するか、ログのエクスポートを自動化する必要があります。この極めて重要なセキュリティ データ ソースを保持できるよう、何らかの形式の監査ログ ストリーミングまたは自動化を設定することを GitHub では Enterprise のお客様に対して強く推奨しています。
監査ログ ストリーミング
Enterprise アカウント レベルで監査ログ ストリーミングを構成して、キャプチャされる全てのデータが指定したログ管理システム内に保持され、既存のポリシーに従って保持されるようにすることができます。これは、Git イベント データにアクセスする 1 つの方法です。監査ログには Git イベントが 7 日間保持されますが、ストリーミングしていて一時停止が 7 日間以内であれば、データが失われることはありません。
監査データのストリーミングには次のようなメリットがあります。
データの探索: ストリーミングしたイベントを好みのツールで調べることで、大量のデータに対してクエリを実行できます。ストリームには、Enterprise アカウント全体にわたる監査イベントと Git イベントの両方が含まれています。
データ分析: Defender for DevOps や GitHub App for Splunk などのツールによる異常検出など、継続的な大規模分析にストリーミングしたデータが役に立ちます。
データの継続性: 監査データを一切失うことなく、最長で 7 日間ストリームを一時停止できます。
データ保持: エクスポートされた監査ログと Git イベント データは、レポートや監査に必要な期間だけでなく、セキュリティ インシデントや、データが至急必要になるその他の状況が発生した場合の迅速な対応のために必要な期間だけ保持できます。
GitHub では現在、Azure Events Hubs、Datadog、Splunk とのネイティブ ストリーミング インテグレーションをサポートしています。さらに、AWS S3、Azure Blob Storage、Google Cloud Storage に直接書き込める機能も備えています。
監査ログのエクスポートと API
監査ログ ストリーミングが自社のニーズに合わない場合、または 1 回限りのデータ エクスポートや対象を絞った一連のイベントが必要な場合は、監査ログ エクスポートと API のオプションを使用して、Enterprise と Organization 両方のレベルで監査ログ データを取得することもできます。監査ログをエクスポートする場合は、JSON 形式か CSV 形式のファイルをダウンロードできます。監査ログ イベントをエクスポートする場合、サポートされている修飾子の 1 つ以上に対してクエリを実行して特定のログ イベントをフィルタリングすることで、エクスポートをさらにフィルタリングできます。
監査ログのエクスポートも Git イベント データにアクセスするもう 1 つの手段です。監査ログには、エクスポート用の Git イベントが 7 日間保持されます。Git イベントは JSON 形式でのみエクスポートできます。監査ログ データとは異なり、監査ログ ユーザー インターフェイスでフィルタリングおよびエクスポートするために特定の Git イベントに対してクエリを実行することはできません。さらに、Git イベントをエクスポートする場合、Web ブラウザー、REST または GraphQL API を介して開始されたイベントは含まれません。たとえば、ユーザーが Web ブラウザーでプル リクエストをマージすると、変更はベース ブランチにプッシュされますが、そのプッシュの Git イベントはエクスポートに含まれません。
REST API を使用して Enterprise と Organization の監査ログに対してクエリを実行することもできます。ただし、最終目標がログの長期的なモニタリングとレポートである場合、API を介して監査ログ ストリーミング オプションを使用することを GitHub では強く推奨しています。API 認証やレート制限の制約を気にする必要がなくなり、任意のデータ システムで希望どおりにモニタリングとレポートを構成できるようになります。
当社では監査ログをセキュリティ情報およびイベント管理 (SIEM) プラットフォームと統合し、GitHub のイベントに関するさまざまな自動アラートを作成しました。 例えば、当社はブランチ保護を使用していますが、CI チェックや承認フローをバイパスして対応する必要があるようなアクティブなセキュリティ インシデントなど、特定のシナリオではポリシーによってブランチ保護を上書きできるようにしています。このようなインテグレーションがあれば、可視性が高まり、ブランチ保護を安全に上書きできます。
監査ログの構成
デフォルトでは、GHEC 監査ログにはイベントの送信元 IP アドレスは表示されません。必要に応じて、コンプライアンスを確保し、脅威に対応するために、Enterprise レベルと Organization レベルのいずれか、または両方で構成オプションを有効にすることで、各イベントのアクターに関連付けられた完全な IP アドレスを表示できます。通常、アクターはユーザーですが、アプリケーションやインテグレーションの場合もあります。Enterprise アカウントの IP アドレスを表示することにした場合、Enterprise の監査ログと、Enterprise が所有する全ての Organization の監査ログの両方にその IP アドレスが表示されます。
IP アドレス表示機能が有効になっている場合、Enterprise または Enterprise 内の Organization が所有するリソースに対して Enterprise 内のアクターが操作を行うと、監査ログに IP アドレスが表示されます。
GitHub のアカウント規約では、プラットフォームの使用条件として自身の IP アドレスが収集されることへの同意がユーザーに求められています。一方で、IP アドレス表示機能を有効にするための条件として、Organization の監査ログ内に表示される IP アドレスの表示または保存に伴う法的義務を果たすことがお客様に求められます。標準ユーザー モデルを使用する場合、ユーザーが Enterprise 自体、またはプライベート/内部リポジトリに関連付けられたアクションを実行したときに記録される IP アドレスのみが表示されます。
監査ログ内の IP アドレスの表示が有効になっている場合はいつでも無効にすることもできます。
次の内容:管理およびガバナンスにおける基本モジュールのラップアップ
今回の 9 つのガイドではさまざまなトピックを取り上げました。メモしていない場合でも、こちらで用意しているので心配はありません。次のモジュールに進む前に確認すべき必須情報をこちらにまとめましたので、ぜひご覧ください。