Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

流式处理企业审核日志

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

Who can use this feature

Enterprise owners can configure audit log streaming.

关于审核日志流

为了帮助保护你的知识产权并保持组织的合规性,可以使用流式处理来保留审核日志数据的副本并监视:* 对你的组织或存储库设置的访问

  • 权限的更改
  • 在组织、存储库或团队中添加或删除的用户
  • 被提升为管理员的用户
  • GitHub App 权限的更改 * Git 事件,例如克隆、提取和推送

流式传输审计数据的好处包括:

  • 数据浏览。 您可以使用首选工具检查流事件,以查询大量数据。 流包含整个企业帐户中的审核事件和 Git 事件。
  • 数据连续性。 你可以暂停流长达七天,而不会丢失任何审核数据。
  • 数据保留。 你可以根据需要保留导出的审核日志和 Git 事件数据。

企业所有者可以随时设置、暂停或删除流。 流导出企业中所有组织的审核和 Git 事件数据。

设置审核日志流

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

设置流式传输到 Amazon S3

可使用访问密钥设置到 S3 的流式传输,或者不要使用 OpenID Connect (OIDC) 在 GitHub Enterprise Cloud 中存储长期机密。

使用访问密钥设置到 S3 的流式传输

要将审核日志流式传输到 Amazon 的 S3 终端节点,您必须拥有存储桶和访问密钥。 有关详细信息,请参阅 AWS 文档中的 Creating, configuring, and working with Amazon S3 buckets(创建、配置和使用 Amazon S3 Bucket)。 请务必阻止对存储桶的公共访问,以保护您的审核日志信息。

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

  • Amazon S3 存储桶的名称
  • AWS 访问密钥 ID
  • AWS 密钥

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

  1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  2. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  3. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡 1. 在“ 设置”下,单击“审核日志”。 在企业帐户边栏中的“审核日志”选项卡

  4. 在“审核日志”下,单击“日志流式处理”。 1. 选择“配置流”下拉列表,然后单击“Amazon S3”。

    从下拉菜单中选择 Amazon S3

  5. 在“身份验证”下,单击“访问密钥”。

    用于流式传输到 Amazon S3 的身份验证选项的屏幕截图

  6. 配置流设置。

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

    检查端点 1. 成功验证终结点后,单击“保存”。

使用 OpenID Connect 设置到 S3 的流式传输

  1. 在 AWS 中,将 GitHub OIDC 提供者添加到 IAM。 有关详细信息,请参阅 AWS 文档中的 Creating OpenID Connect (OIDC) identity providers(创建 OpenID Connect (OIDC) 标识提供者)。

    • 对于提供者 URL,请使用 https://oidc-configuration.audit-log.githubusercontent.com
    • 对于“受众”,请使用 sts.amazonaws.com
  2. 创建 Bucket 并阻止对该 Bucket 的公共访问。 有关详细信息,请参阅 AWS 文档中的 Creating, configuring, and working with Amazon S3 buckets(创建、配置和使用 Amazon S3 Bucket)。

  3. 通过复制以下 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 策略)。

  4. 为 GitHub IdP 配置角色和信任策略。 有关详细信息,请参阅 AWS 文档中的 Creating a role for web identity or OpenID Connect Federation (console)(为 Web 标识或 OpenID Connect 联合身份验证创建角色(控制台))。

    • 添加上面创建的权限策略,以允许写入 Bucket。
    • 编辑信任关系,将 sub 字段添加到验证条件,将 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 资源名称 (ARN)。
  5. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  6. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  7. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡 1. 在“ 设置”下,单击“审核日志”。 在企业帐户边栏中的“审核日志”选项卡

  8. 在“审核日志”下,单击“日志流式处理”。 1. 选择“配置流”下拉列表,然后单击“Amazon S3”。

    从下拉菜单中选择 Amazon S3

  9. 在“身份验证”下,单击“OpenID Connect”。

    用于流式传输到 Amazon S3 的身份验证选项的屏幕截图

  10. 配置流设置。

    • 在“Bucket”下,输入想要流式传输到的 Bucket 名称。 例如,auditlog-streaming-test
    • 在“ARN 角色”下,键入前面记下的 ARN 角色。 例如,arn:aws::iam::1234567890:role/github-audit-log-streaming-role
  11. 若要验证 GitHub 是否可以连接并写入 Amazon S3 终结点,请单击“检查终结点”。

    检查端点 1. 成功验证终结点后,单击“保存”。

使用 OpenID Connect 禁用到 S3 的流式传输

如果出于任何原因(例如在 OIDC 中发现安全漏洞)而需要禁用到 S3 的流式传输,请在设置流式处理时删除在 AWS 中创建的 GitHub OIDC 提供程序。 有关详细信息,请参阅 AWS 文档中的 Creating OpenID Connect (OIDC) identity providers(创建 OpenID Connect (OIDC) 标识提供者)。

然后,使用访问密钥设置流式处理,直到漏洞得以解决。 有关详细信息,请参阅“使用访问密钥设置到 S3 的流式传输”。

设置流式传输到 Azure Blob Storage

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

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

在 Microsoft Azure 门户中:

  1. 在主页上,单击“存储帐户”。

  2. 单击要使用的存储帐户的名称,然后单击“容器”。

    Azure 中的容器链接

  3. 单击要使用的容器的名称。

  4. 单击“共享访问令牌”。

    Azure 中的共享访问令牌链接

  5. 在“权限”下拉菜单中,将权限更改为仅允许 CreateWrite

    权限下拉菜单

  6. 设置符合机密轮换策略的到期日期。

  7. 单击“生成 SAS 令牌和 URL”。

  8. 复制显示的 Blob SAS URL 字段的值。 您将在 GitHub 中使用此 URL。

在 GitHub 上:1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  1. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  2. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡 1. 在“ 设置”下,单击“审核日志”。 在企业帐户边栏中的“审核日志”选项卡

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

  4. 单击“配置流”并选择“Azure Blob 存储” 。

    从下拉菜单中选择 Azure Blob Storage

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

    输入流设置

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

    检查端点

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

设置流式传输到 Azure Event Hub

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

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

在 Microsoft Azure 门户中:

  1. 搜索“事件中心”。

    Azure 门户搜索框

  2. 选择“事件中心”。 将列出事件中心的名称。

    事件中心列表

  3. 记下要流式传输到的事件中心的名称。

  4. 单击所需的事件中心。 然后,在左侧菜单中选择“共享访问策略”。

  5. 在策略列表中选择共享访问策略,或创建新策略。

    共享访问策略列表

  6. 单击“连接字符串 - 主键”字段右侧的按钮以复制连接字符串。

    事件中心连接字符串

在 GitHub 上:1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  1. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  2. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡 1. 在“ 设置”下,单击“审核日志”。 在企业帐户边栏中的“审核日志”选项卡

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

  4. 单击“配置流”并选择“Azure 事件中心” 。

    从下拉菜单中选择 Azure Events Hub

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

    • Azure Event Hubs 实例的名称。
    • 连接字符串。

    输入流设置

  6. 单击“检查终结点”以验证 GitHub 是否可以连接并写入 Azure 事件中心终结点。

    检查端点

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

设置流式传输到 Datadog

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

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

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

  2. 在 Datadog 中,生成客户端令牌或 API 密钥,然后单击“复制密钥”。 有关详细信息,请参阅 Datadog 文档中的 API 和应用程序密钥。1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  3. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  4. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡 1. 在“ 设置”下,单击“审核日志”。 在企业帐户边栏中的“审核日志”选项卡

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

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

    “配置流”下拉菜单的屏幕截图,其中突出显示了“Datadog”

  7. 在“令牌”下,粘贴之前复制的令牌。

    “令牌”字段的屏幕截图

  8. 选择“站点”下拉菜单,然后单击 Datadog 站点。 若要确定 Datadog 站点,请将 Datadog URL 与 Datadog 文档的 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 文档中的创建存储 Bucket

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

  5. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  6. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  7. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡 1. 在“ 设置”下,单击“审核日志”。 在企业帐户边栏中的“审核日志”选项卡

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

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

    “配置流”下拉菜单的屏幕截图

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

    “Bucket”文本字段的屏幕截图

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

    “JSON 凭据”文本字段的屏幕截图

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

    “检查终结点”按钮的屏幕截图

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

设置流式传输到 Splunk

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

  1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  2. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  3. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡 1. 在“ 设置”下,单击“审核日志”。 在企业帐户边栏中的“审核日志”选项卡

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

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

    从下拉菜单中选择 Splunk

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

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

      如果使用的是 Splunk Cloud,则 Domain 应为 http-inputs-<host>,其中 host 是你在 Splunk Cloud 中使用的域。 例如:http-inputs-mycompany.splunkcloud.com

    • 应用程序接受数据的端口。

      如果使用的是 Splunk Cloud,且未更改端口配置,则 Port 应为 443。 如果使用的是 Splunk Cloud 的免费试用版,则 Port 应为 8088

    • GitHub 可用来验证第三方应用程序的令牌。

    输入流设置

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

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

  8. 单击“检查终结点”以验证 GitHub 是否可以连接并写入 Splunk 终结点。 检查终结点 1. 成功验证终结点后,单击“保存”。

暂停审核日志流

暂停流允许您对接收应用程序执行维护,而不会丢失审核数据。 审核日志在 GitHub.com 上最多存储七天,然后在取消暂停流时导出。

Datadog 仅接受过去最多 18 小时内的日志。 如果将到 Datadog 终结点的流暂停超过 18 小时,则有可能会丢失 Datadog 在恢复流式传输后不会接受的日志。

  1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  2. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  3. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡 1. 在“ 设置”下,单击“审核日志”。 在企业帐户边栏中的“审核日志”选项卡

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

  5. 单击“暂停流”。

    暂停流

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

当应用程序准备好再次接收审核日志时,请单击“恢复流”以重新启动流式处理审核日志。

删除审核日志流

  1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  2. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  3. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡 1. 在“ 设置”下,单击“审核日志”。 在企业帐户边栏中的“审核日志”选项卡

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

  5. 单击“删除流”。

    删除流

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