Skip to main content

流式传输企业的审核日志

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

Enterprise owners can configure audit log streaming.

关于审核日志流

为了帮助保护您的知识产权并保持组织的合规性,您可以使用流式处理来保留审核日志数据的副本并监控:

  • 对组织或仓库设置的访问
  • 权限更改
  • 组织、仓库或团队中添加或删除的用户
  • 被提升为管理员的用户
  • GitHub 应用程序 权限的更改
  • Git 事件,例如克隆、获取和推送

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

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

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

设置审核日志流

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

设置流式传输到 Amazon S3

您可以使用访问密钥设置流式传输到 S3,或者,为了避免在 GitHub Enterprise Cloud 中存储长期存在的密钥,请使用 OpenID Connect (OIDC)。

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

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

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

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

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

  1. 在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)GitHub Enterprise Cloud 上个人资料照片下拉菜单中的"Your enterprises(您的企业)"

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

  3. 在企业帐户侧边栏中,单击 Settings(设置)企业帐户侧边栏中的“设置”选项卡

  4. 在“ Settings(设置)”下,单击 Audit log(审核日志)在企业帐户侧边栏中的 Audit log(审核日志)选项卡

  5. Under "Audit log", click Log streaming.

  6. Select the Configure stream dropdown and click Amazon S3.

    从下拉菜单中选择 Amazon S3

  7. 在“Authentication(身份验证)”下,单击 Access keys(访问密钥)

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

  8. 配置流设置。

    • 在“Bucket(存储桶)”下,键入要流式传输到的存储桶的名称。 例如,auditlog-streaming-test
    • 在“Access Key ID(访问密钥 ID)”下,键入您的访问密钥 ID。 例如,ABCAIOSFODNN7EXAMPLE1
    • 在“Secret Key(密钥)”下,键入您的密钥。 例如,aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY
  9. To verify that GitHub can connect and write to the Amazon S3 endpoint, click Check endpoint.

    检查端点

  10. 成功验证端点后,单击 Save(保存)

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

  1. 在 AWS 中,将 GitHub OIDC 提供商添加到 IAM。 有关更多信息,请参阅 AWS 文档中的创建 OpenID Connect (OIDC) 身份提供程序

    • 对于提供程序 URL,请使用 https://oidc-configuration.audit-log.githubusercontent.com
    • 对于“受众”,请使用 sts.amazonaws.com
  2. 创建存储桶,并阻止对存储桶的公共访问。 更多信息请参阅 AWS 文档中的创建、配置和使用 Amazon S3 存储桶

  3. 创建允许 GitHub 写入存储桶的策略。 GitHub 只需要以下权限。

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

    更多信息请参阅 AWS 文档中的创建 IAM 策略

  4. 为 GitHub IdP 配置角色和信任策略。 更多信息请参阅 AWS 文档中的为 Web 身份创建角色或 OpenID Connect Federation(控制台)

    • 添加您在上面创建的权限策略以允许写入存储桶。
    • 编辑信任关系以将 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 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)GitHub Enterprise Cloud 上个人资料照片下拉菜单中的"Your enterprises(您的企业)"

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

  7. 在企业帐户侧边栏中,单击 Settings(设置)企业帐户侧边栏中的“设置”选项卡

  8. 在“ Settings(设置)”下,单击 Audit log(审核日志)在企业帐户侧边栏中的 Audit log(审核日志)选项卡

  9. Under "Audit log", click Log streaming.

  10. Select the Configure stream dropdown and click Amazon S3.

    从下拉菜单中选择 Amazon S3

  11. 在“Authentication(身份验证)”下,单击 OpenID Connect

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

  12. 配置流设置。

    • 在“Bucket(存储桶)”下,键入要流式传输到的存储桶的名称。 例如,auditlog-streaming-test
    • 在“ARN Role(ARN 角色)”下,键入您之前记下的 ARN 角色。 例如 arn:aws::iam::1234567890:role/github-audit-log-streaming-role
  13. To verify that GitHub can connect and write to the Amazon S3 endpoint, click Check endpoint.

    检查端点

  14. 成功验证端点后,单击 Save(保存)

设置流式传输到 Azure Blob Storage

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

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

在 Microsoft Azure 门户中

  1. 在主页上,单击 Storage Accounts(存储帐户)

  2. 单击要使用的存储帐户的名称,然后单击 Containers(容器)

    Azure 中的容器链接

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

  4. 单击 Shared access tokens(共享访问令牌)

    Azure 中的共享访问令牌链接

  5. Permissions(权限)下拉菜单中,将权限更改为仅允许创建写入

    权限下拉菜单

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

  7. 单击 Generate SAS token and URL(生成 SAS 令牌和 URL)

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

在 GitHub 上

  1. 在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)GitHub Enterprise Cloud 上个人资料照片下拉菜单中的"Your enterprises(您的企业)"

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

  3. 在企业帐户侧边栏中,单击 Settings(设置)企业帐户侧边栏中的“设置”选项卡

  4. 在“ Settings(设置)”下,单击 Audit log(审核日志)在企业帐户侧边栏中的 Audit log(审核日志)选项卡

  5. Under "Audit log", click Log streaming.

  6. 单击 Configure stream(配置流),然后选择 Azure Blob Storage

    从下拉菜单中选择 Azure Blob Storage

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

    输入流设置

  8. 单击 Check endpoint(检查端点)以验证 GitHub 是否可以连接并写入 Azure Blob Storage 端点。

    检查端点

  9. 成功验证端点后,单击 Save(保存)

设置流式传输到 Azure Event Hub

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

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

在 Microsoft Azure 门户中

  1. 搜索“事件中心”。

    Azure 门户搜索框

  2. 选择 Event Hubs(事件中心)。 将列出事件中心的名称。

    事件中心列表

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

  4. 单击所需的事件中心。 然后,在左侧菜单中,选择 Shared Access Policies(共享访问策略)

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

    共享访问策略列表

  6. 单击 Connection string-primary key(连接字符串 - 主键)字段右侧的按钮以复制连接字符串。

    事件中心连接字符串

在 GitHub 上

  1. 在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)GitHub Enterprise Cloud 上个人资料照片下拉菜单中的"Your enterprises(您的企业)"

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

  3. 在企业帐户侧边栏中,单击 Settings(设置)企业帐户侧边栏中的“设置”选项卡

  4. 在“ Settings(设置)”下,单击 Audit log(审核日志)在企业帐户侧边栏中的 Audit log(审核日志)选项卡

  5. Under "Audit log", click Log streaming.

  6. 单击 Configure stream(配置流),然后选择 Azure Event Hubs

    从下拉菜单中选择 Azure Events Hub

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

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

    输入流设置

  8. 单击 Check endpoint(检查端点)以验证 GitHub 是否可以连接并写入 Azure Event Hubs 端点。

    检查端点

  9. 成功验证端点后,单击 Save(保存)

设置流式传输到 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 文档中和使用 Cloud IAM 权限

  5. 在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)GitHub Enterprise Cloud 上个人资料照片下拉菜单中的"Your enterprises(您的企业)"

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

  7. 在企业帐户侧边栏中,单击 Settings(设置)企业帐户侧边栏中的“设置”选项卡

  8. 在“ Settings(设置)”下,单击 Audit log(审核日志)在企业帐户侧边栏中的 Audit log(审核日志)选项卡

  9. Under "Audit log", click Log streaming.

  10. 选择配置流下拉菜单,然后单击 Google Cloud Storage

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

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

    "存储桶"文本字段的屏幕截图

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

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

  13. 要验证 GitHub 是否可以连接并写入 Google Cloud Storage 存储桶,请单击 Check endpoint(检查端点)

    "检查端点"按钮的屏幕截图

  14. 成功验证端点后,单击 Save(保存)

设置流式传输到 Splunk

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

  1. 在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)GitHub Enterprise Cloud 上个人资料照片下拉菜单中的"Your enterprises(您的企业)"

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

  3. 在企业帐户侧边栏中,单击 Settings(设置)企业帐户侧边栏中的“设置”选项卡

  4. 在“ Settings(设置)”下,单击 Audit log(审核日志)在企业帐户侧边栏中的 Audit log(审核日志)选项卡

  5. Under "Audit log", click Log streaming.

  6. 单击 Configure stream(配置流),然后选择 Splunk

    从下拉菜单中选择 Splunk

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

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

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

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

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

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

    输入流设置

  8. 选中 Enable SSL verification(启用 SSL 验证)复选框。

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

  9. 单击 Check endpoint(检查端点)以验证 GitHub 是否可以连接并写入 Splunk 端点。 检查端点

  10. 成功验证端点后,单击 Save(保存)

暂停审核日志流

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

  1. 在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)GitHub Enterprise Cloud 上个人资料照片下拉菜单中的"Your enterprises(您的企业)"

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

  3. 在企业帐户侧边栏中,单击 Settings(设置)企业帐户侧边栏中的“设置”选项卡

  4. 在“ Settings(设置)”下,单击 Audit log(审核日志)在企业帐户侧边栏中的 Audit log(审核日志)选项卡

  5. Under "Audit log", click Log streaming.

  6. 单击 Pause stream(暂停流)

    暂停流

  7. 将显示一条确认消息。 单击 Pause stream(暂停流)以确认。

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

删除审核日志流

  1. 在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)GitHub Enterprise Cloud 上个人资料照片下拉菜单中的"Your enterprises(您的企业)"

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

  3. 在企业帐户侧边栏中,单击 Settings(设置)企业帐户侧边栏中的“设置”选项卡

  4. 在“ Settings(设置)”下,单击 Audit log(审核日志)在企业帐户侧边栏中的 Audit log(审核日志)选项卡

  5. Under "Audit log", click Log streaming.

  6. 单击 Delete stream(删除流)

    删除流

  7. 将显示一条确认消息。 单击 Delete stream(删除流)以确认。