Skip to main content

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

流式处理企业审核日志

了解如何将审核和 Git 事件数据从 GitHub 流式传输到外部数据管理系统。

谁可以使用此功能?

Enterprise owners

Note

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

关于审核日志流

可以帮助保护知识产权并保持贵公司的合规性,使用流式处理来保留审核日志数据的副本。 审核日志的详细信息事件,例如对设置和访问权限的更改、用户成员身份、应用权限等。 请参阅 企业的审核日志事件组织的审核日志事件安全日志事件

流式处理审核日志数据具有以下优势:

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

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

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

Note

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

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

设置审核日志流

若要设置审核日志流,请按照提供程序的说明操作:

设置流式传输到 Amazon S3

Note

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

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

  • AWS 访问密钥 ID
  • AWS 密钥

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

从 AWS:

  1. 创建 Bucket 并阻止对该 Bucket 的公共访问。 请参阅 AWS 文档中的 Creating, configuring, and working with Amazon S3 buckets(创建、配置和使用 Amazon S3 Bucket)。

  2. 创建允许 GitHub 写入 Bucket 的策略。 复制以下 JSON 并将 EXAMPLE-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 策略)。

从 GitHub:

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

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

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

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

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

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

  6. 配置流设置。

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

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

与 AWS CloudTrail Lake 集成

可以使用 AWS CloudTrail Lake 集成到 S3 的流式传输,将审核日志进行合并。 请参阅 AWS CloudTrail 文档aws-samples/aws-cloudtrail-lake-github-audit-log 存储库中的 CloudTrail 开放式审核的 GitHub 审核日志

设置流式传输到 Azure Blob Storage

Note

不支持将审核日志流式处理到 Azure 政府中的 blob 存储。

在 GitHub 中设置流之前,先在 Microsoft Azure 中创建存储帐户和容器。 请参阅 Microsoft 文档中的 Azure Blob 存储简介

需要 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

Note

Azure 政府中的事件中心实例不受支持。

在 GitHub 中设置流之前,需要:

从 Microsoft Azure 门户:

  1. 在页面顶部使用搜索框搜索“事件中心”。
  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 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 文档中的创建存储桶

  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 事件收集器

Note

GitHub 通过 <Domain>:port/services/collector 验证 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. 将显示确认消息。 单击“删除流”进行确认。