Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-07-09. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

流式处理企业审核日志

您可以将审核和 Git 事件数据从 GitHub 流式传输到外部数据管理系统。

谁可以使用此功能?

Enterprise owners can configure audit log streaming.

**注意:**在特定用例中,Webhook 可能是审核日志或 API 轮询的良好替代方法。 Webhook 是一种 GitHub 在存储库、组织或企业发生特定事件时通知服务器的方法。 与 API 或搜索审核日志相比,如果只想了解企业、组织或存储库何时发生某些事件并进行相应记录,Webhook 效率更高。 有关详细信息,请参阅“Webhook 文档”。

关于审核日志流

为了帮助保护你的知识产权并保持贵公司的合规性,你可以使用流式处理来保留审核日志数据的副本。 审核日志的详细信息事件,例如对设置和访问权限的更改、用户成员身份、应用权限等。 如果流式处理审核日志数据,则可以利用以下优势。

  • 数据浏览。 您可以使用首选工具检查流事件,以查询大量数据。 流包含整个企业帐户中的审核事件和 Git 事件。
  • 数据保留。 你可以根据需要保留导出的审核日志和 Git 事件数据。

企业所有者可以随时设置或删除流。 流会导出企业中所有组织的审核和 Git 事件数据,用于从启用流后开始的活动。

所有流式传输的审核日志都作为压缩的 JSON 文件发送。 文件名格式为 YYYY/MM/HH/MM/<uuid>.json.gz

注意:GitHub 使用至少一次传递方法。 由于某些网络或系统问题,某些事件可能会重复。

启用审核日志流式处理可能会对 你的 GitHub Enterprise Server 实例 的性能造成轻微影响。 有关增加资源以减轻这种性能影响的详细信息,请参阅“增加 CPU 或内存资源”。

审核日志流中所显示的事件

你可以查看流式处理的审核日志中显示的特定事件。 有关详细信息,请参阅以下文章。

设置审核日志流

您可以按照提供程序的说明在 GitHub Enterprise Server 上设置审核日志流。

设置流式传输到 Amazon S3

注意:必须可以从设备访问 Amazon 区域 us-east-1,才能相应地流式处理要处理的 S3。

要设置来自 GitHub 审核日志流式处理,您需要:

  • AWS 访问密钥 ID
  • AWS 密钥

有关创建或访问访问密钥 ID 和密钥的信息,请参阅 AWS 文档中的了解和获取你的 AWS 凭据

  1. 在 AWS 中,创建存储桶,并阻止对存储桶的公共访问。 有关详细信息,请参阅 AWS 文档中的 Creating, configuring, and working with Amazon S3 buckets(创建、配置和使用 Amazon S3 Bucket)。

  2. 在 AWS 中,通过复制以下 JSON 并将 EXAMPLE-BUCKET 替换为你的 Bucket 名称,创建一个允许 GitHub 写入 Bucket 的策略。 GitHub 只需要此 JSON 中的权限。

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

    有关详细信息,请参阅 AWS 文档中的 Creating IAM policies(创建 IAM 策略)。

  3. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  4. 在页面左侧的企业帐户边栏中,单击 设置”。

  5. 在“ 设置”下,单击“审核日志”。

  6. 在“审核日志”下,单击“日志流式处理”。

  7. 选择“配置流”**** 下拉菜单,然后单击“Amazon S3”****。

  8. 配置流设置。

    • 在“Bucket”下,输入想要流式传输到的 Bucket 名称。 例如 auditlog-streaming-test
    • 在“访问密钥 ID”下,键入访问密钥 ID。 例如 ABCAIOSFODNN7EXAMPLE1
    • 在“密钥”下,键入密钥。 例如 aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY
  9. 若要验证 GitHub 是否可以连接并写入 Amazon S3 终结点,请单击“检查终结点”。

  10. 成功验证终结点后,单击“保存”。

与 AWS CloudTrail Lake 集成

可通过将到 S3 的审核日志流式传输与 AWS CloudTrail Lake 集成,将 GitHub Enterprise Server 中的审核日志与 AWS 活动日志合并。 有关其他信息,请参阅 AWS CloudTrail 文档aws-samples/aws-cloudtrail-lake-github-audit-log 存储库中的 CloudTrail 开放式审核的 GitHub 审核日志

设置流式传输到 Azure Blob Storage

在 GitHub 中设置流之前,必须先在 Microsoft Azure 中创建存储帐户和容器。 有关详细信息,请参阅 Microsoft 文档“Azure Blob 存储简介”。

要在 GitHub 配置流,需要 SAS 令牌的 URL。

在 Microsoft Azure 门户中:

  1. 在主页上,单击“存储帐户”。
  2. 在“名称”下,单击要使用的存储帐户的名称。
  3. 在“数据存储”下,单击“容器”。
  4. 单击要使用的容器的名称。
  5. 在左侧边栏的“设置”下,单击“共享访问令牌”。
  6. 选择“权限”下拉菜单,然后选择 CreateWrite,并取消选择所有其他选项。
  7. 设置符合机密轮换策略的到期日期。
  8. 单击“生成 SAS 令牌和 URL”。
  9. 复制显示的 Blob SAS URL 字段的值。 您将在 GitHub 中使用此 URL。

在 GitHub 上:

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 设置”。

  3. 在“ 设置”下,单击“审核日志”。

  4. 在“审核日志”下,单击“日志流式处理”。

  5. 选择“配置流”下拉菜单并单击“Azure Blob 存储” 。

  6. 在配置页上,输入在 Azure 中复制的 blob SAS URL。 “容器”字段将根据 URL 自动填充。

  7. 单击“检查终结点”以验证 GitHub 是否可以连接并写入 Azure Blob 存储终结点。

  8. 成功验证终结点后,单击“保存”。

设置流式传输到 Azure Event Hub

在 GitHub 中设置流之前,必须先在 Microsoft Azure 中具有事件中心命名空间。 接下来,必须在命名空间中创建事件中心实例。 设置流时,需要此事件中心实例的详细信息。 有关详细信息,请参阅 Microsoft 文档“快速入门:使用 Azure 门户创建事件中心”。

需要有关事件中心的两条信息:其实例名称和连接字符串。

在 Microsoft Azure 门户中:

  1. 在页面顶部的“Microsoft Azure”旁,使用搜索框搜索“事件中心”。
  2. 选择“事件中心”。 将列出事件中心的名称。
  3. 记下要流式传输到的事件中心的名称。 单击该事件中心。
  4. 在左侧菜单中,单击“共享访问策略”。
  5. 从策略列表中选择共享访问策略,或创建新策略。
  6. 从“连接字符串 - 主密钥”字段中复制连接字符串。

在 GitHub 上:

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 设置”。

  3. 在“ 设置”下,单击“审核日志”。

  4. 在“审核日志”下,单击“日志流式处理”。

  5. 选择“配置流”下拉菜单并单击“Azure 事件中心” 。

  6. 在配置页面上,输入:

    • Azure Event Hubs 实例的名称。
    • 连接字符串。
  7. 单击“检查终结点”以验证 GitHub 是否可以连接并写入 Azure 事件中心终结点。

  8. 成功验证终结点后,单击“保存”。

设置流式传输到 Datadog

若要设置流式传输到 Datadog,必须在 Datadog 中创建客户端令牌或 API 密钥,然后使用令牌在 GitHub Enterprise Server 中配置审核日志流式传输以进行身份验证。 无需在 Datadog 中创建 bucket 或其他存储容器。

设置流式传输到 Datadog 后,可以通过按“github.audit.streaming”进行筛选来查看审核日志数据。 有关详细信息,请参阅日志管理

  1. 如果还没有 Datadog 帐户,请创建一个。

  2. 在 Datadog 中,生成客户端令牌或 API 密钥,然后单击“复制密钥”。 有关详细信息,请参阅 Datadog 文档中的 API 和应用程序密钥

  3. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  4. 在页面左侧的企业帐户边栏中,单击 设置”。

  5. 在“ 设置”下,单击“审核日志”。

  6. 在“审核日志”下,单击“日志流式处理”。

  7. 选择“配置流”下拉列表,然后单击“Datadog”。

  8. 在“令牌”字段中,粘贴之前复制的令牌。

  9. 选择“站点”下拉菜单,然后单击 Datadog 站点。 若要确定 Datadog 站点,请将 Datadog URL 与 Datadog 文档的 Datadog 站点中的表进行比较。

  10. 若要验证 GitHub 是否可以连接并写入 Datadog 终结点,请单击“检查终结点”。

  11. 成功验证终结点后,单击“保存”。

  12. 几分钟后,确认审核日志数据是否出现在 Datadog 中的“日志”选项卡上。 如果审核日志数据未出现,请确认令牌和站点在 GitHub 中是否正确。

设置流式传输到 Google Cloud Storage

要设置流式传输到 Google Cloud Storage,您必须在 Google Cloud 中使用适当的凭据和权限创建一个服务帐户,然后使用服务帐户的凭据在 GitHub Enterprise Server 中配置审核日志流以进行身份验证。

  1. 为 Google Cloud 创建一个服务帐户。 您无需为服务帐户设置访问控制或 IAM 角色。 有关详细信息,请参阅 Google Cloud 文档中的创建和管理服务帐户

  2. 创建服务帐户的 JSON 密钥,并安全地存储该密钥。 有关详细信息,请参阅 Google Cloud 文档中的创建和管理服务帐户密钥

  3. 如果您尚未创建存储桶,请创建存储桶。 有关详细信息,请参阅 Google Cloud 文档中的创建存储 Bucket

  4. 为服务帐户分配存储桶的存储对象创建者角色。 有关详细信息,请参阅 Google Cloud 文档中的使用 Cloud IAM 权限

  5. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  6. 在页面左侧的企业帐户边栏中,单击 设置”。

  7. 在“ 设置”下,单击“审核日志”。

  8. 在“审核日志”下,单击“日志流式处理”。

  9. 选择“配置流”下拉菜单并单击“Google Cloud Storage” 。

  10. 在“Bucket(存储桶)”下,键入 Google Cloud Storage 存储桶的名称。

  11. 在“JSON Credentials(JSON 凭据)”下,粘贴服务帐户的 JSON 密钥文件的全部内容。

  12. 若要验证 GitHub 是否可以连接并写入 Google Cloud Storage Bucket,请单击“检查终结点”。

  13. 成功验证终结点后,单击“保存”。

设置流式传输到 Splunk

要将审核日志流式传输到 Splunk 的 HTTP 事件收集器 (HEC) 端点,必须确保将终端节点配置为接受 HTTPS 连接。 有关详细信息,请参阅 Splunk 文档中的在 Splunk Web 中设置和使用 HTTP 事件收集器

注意****:GitHub 通过 <Domain>:port/services/collector 验证 HEC 端点。 如果自托管 HEC 端点(例如通过 OpenTelemetry 使用 Splunk HEC 接收器),请确保可在此目标访问端点。

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 设置”。

  3. 在“ 设置”下,单击“审核日志”。

  4. 在“审核日志”下,单击“日志流式处理”。

  5. 选择“配置流”下拉菜单并单击“Splunk” 。

  6. 在配置页面上,输入:

    • 要流式传输到的应用程序所在的域。

      如果使用的是 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 可用来验证第三方应用程序的令牌。

  7. 使“启用 SSL 验证”复选框保持选中状态。

    审核日志始终作为加密数据进行流式传输,但是,如果选择此选项, GitHub 在传递事件时会验证 Splunk 实例的 SSL 证书。 SSL 验证有助于确保将事件安全地传递到 URL 端点。 您可以清除此选项的选择,但我们建议您将 SSL 验证保留为启用状态。

  8. 单击“检查终结点”以验证 GitHub 是否可以连接并写入 Splunk 终结点。

  9. 成功验证终结点后,单击“保存”。

删除审核日志流

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。

    单击 GitHub Enterprise Server 上的个人资料照片时显示的下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在页面左侧的企业帐户边栏中,单击 设置”。

  3. 在“ 设置”下,单击“审核日志”。

  4. 在“审核日志”下,单击“日志流式处理”。

  5. 在“危险区域”下,单击“删除流”。

  6. 此时会显示确认消息。 单击“删除流”进行确认。