审计事件流

  • UI 引入于 14.9 版本。
  • 子组事件记录引入于 15.2 版本。
  • 自定义 HTTP headers UI 引入于 15.2 版本,功能标志custom_headers_streaming_audit_events_ui。默认禁用。
  • 自定义 HTTP headers UI 一般可用于 15.3 版本。删除功能标志 custom_headers_streaming_audit_events_ui
  • 提升用户体验于 15.3 版本。

用户可以为顶级群组或实例设置流传输目标,以结构化 JSON 形式接收有关该群组、子组和项目的所有审计事件。

顶级群组所有者和实例管理员可以在第三方系统中管理其审计日志。任何可以接收结构化 JSON 数据的服务都可以用作流传输目的地。

每个流传输目的地最多可以有 20 个包含在每个流传输事件中的自定义 HTTP headers。

note极狐GitLab 可以将单个事件多次流传输到同一目的地。使用有效负载中的 id 键来删除传入数据中的重复数据。

添加新的流目的地

将新的流传输目的地添加到顶级群组或整个实例。

caution流传输目的地接收所有审计事件数据,其中可能包括敏感信息。确保您信任流传输目的地。

添加顶级群组流目的地

先决条件:

  • 具有顶级群组的所有者角色。

要将流传输目的地添加到顶级群组:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 来查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择 添加流目的地 并选择 HTTP 端点 以显示添加目的地部分。
  5. 输入要添加的目标 URL。
  6. 可选。找到 自定义 HTTP header 表。
  7. 忽略目前无效的 启用 复选框。
  8. 选择 添加 header 创建新的名称和值对。根据需要输入任意数量的名称和值对。每个流传输目的地最多可以添加 20 个 headers。
  9. 填写完所有 headers 后,选择 添加 可以添加新的流目的地。

添加实例级流目的地

  • 引入于 16.1 版本,功能标志ff_external_audit_events。默认禁用。
  • 功能标志 ff_external_audit_events 默认启用于极狐GitLab 16.2。
在私有化部署版上,此功能默认启用。如果想禁用此功能,管理员可以禁用功能标志 ff_external_audit_events。在 JiHuLab.com 上,此功能可用,但只能由 JiHuLab.com 管理员配置。此功能已经准备好用于生产。

先决条件:

  • 具有实例的管理员访问权限。

要为实例添加流传目的地:

  1. 在左侧边栏上,展开最顶部的向下箭头()。
  2. 选择 管理中心
  3. 在左侧边栏上,选择 监控 > 审计事件
  4. 在主区域中,选择 事件流 选项卡。
  5. 选择 添加流目的地 并选择 HTTP 端点 显示添加目的地部分。
  6. 输入要添加的目标 URL。
  7. 可选。要添加自定义 HTTP header,请选择 添加 header 以创建新的名称和值对,并输入它们的值。如果存在多个名称和值,重复此步骤。每个流目的地最多可以添加 20 个 header。
  8. 忽略目前无效的 启用 复选框。
  9. 选择 添加 header 以创建新的名称和值对。如果存在多个名称和值,重复此步骤。每个流目的地最多可以添加 20 个 header。
  10. 填写完所有 header 后,选择 添加 以添加新的流目的地。

Google Cloud Logging 流

引入于极狐GitLab 16.2。

先决条件:

  • 具有顶级群组的所有者角色。

将 Google Cloud Logging 流目的地添加到顶级群组:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 以查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择 添加流目的地,然后选择 Google Cloud Logging 以显示添加目的地的部分。
  5. 输入要添加的 Google 项目 ID、Google 客户端电子邮件、日志 ID 和 Google 私钥。
  6. 选择 添加 可以添加新的流目的地。

列出流目的地

列出顶级群组或整个实例的流目的地。

列出顶级群组流目的地

先决条件:

  • 具有顶级群组的所有者角色。

要列出顶级群组的流目的地:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 来查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择流 URL 来将其展开并查看所有自定义 HTTP header。

列出实例级流目的地

  • 引入于 16.1 版本,功能标志ff_external_audit_events。默认禁用。
  • 功能标志 ff_external_audit_events 默认启用于极狐GitLab 16.2。
在私有化部署版上,此功能默认启用。如果要禁用此功能,管理员可以禁用功能标志 ff_external_audit_events。在 JiHuLab.com 上,此功能可用,但只能由 JiHuLab.com 管理员配置。此功能已经准备好用于生产。

先决条件:

  • 具有实例的管理员访问权限。

要列出实例的流目的地:

  1. 在左侧边栏上,展开最顶部的向下箭头()。
  2. 选择 管理中心
  3. 在左侧边栏上,选择 监控 > 审计事件
  4. 在主区域中,选择 事件流 选项卡。

Google Cloud Logging 流

引入于极狐GitLab 16.2。

先决条件:

  • 具有顶级群组的所有者权限。

列出顶级群组的 Google Cloud Logging 流目的地:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 以查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择 Google Cloud Logging 流以展开并查看所有字段。

更新流目的地

更新顶级群组或整个实例的流目的地。

更新顶级群组流目的地

先决条件:

  • 具有顶级群组的所有者角色。

要更新顶级群组的流目的地:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 来查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 在项目右侧,选择 编辑)。
  5. 选择要展开的流 URL。
  6. 定位到 自定义 HTTP header 图表。
  7. 定位到您想更新的 header。
  8. 忽略无效的 启用 复选框。
  9. 选择 添加 header 以创建新的名称和值对。根据需要输入任意数量的名称和值对。每个流目的地最多可以添加 20 个 header。
  10. 选择 保存 以更新流目的地。

更新实例流目的地

  • 引入于极狐GitLab 16.1,功能标志ff_external_audit_events。默认禁用。
  • 功能标志 ff_external_audit_events 默认启用于极狐GitLab 16.2。
在私有化部署版上,此功能默认启用。如果要禁用此功能,管理员可以禁用功能标志 ff_external_audit_events。在 JiHuLab.com 上,此功能可用,但只能由 JiHuLab.com 管理员配置。此功能已经准备好用于生产。

先决条件:

  • 具有实例的管理员权限。

更新实例的流目的地:

  1. 在左侧边栏上,展开最顶部的箭头 ()。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 找到 自定义 HTTP headers 表。
  5. 找到您要更新的 header。
  6. 忽略目前无效的 启用 复选框。
  7. 选择 添加 header 创建新的名称和值对。根据需要输入任意数量的名称和值对。每个流传输目的地最多可以添加 20 个 headers。
  8. 选择 保存 可以更新流目的地。

Google Cloud Logging 流

引入于极狐GitLab 16.2。

先决条件:

  • 具有顶级群组的所有者角色。

将 Google Cloud Logging 流目的地更新为顶级群组:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 以查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择要展开的 Google Cloud Logging 流。
  5. 输入要更新的 Google 项目 ID、Google 客户端电子邮件、日志 ID 和 Google 私钥。
  6. 选择 保存 以更新流目的地。

删除流目的地

删除顶级群组或整个实例的流目的地。成功删除最后一个目的地后,该群组或实例的流传输将被禁用。

删除顶级群组流目的地

先决条件:

  • 具有顶级群组的所有者角色。

要删除流目的地:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 来查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择要展开的流 URL。
  5. 选择 删除目的地
  6. 选择窗口中的 删除目的地 进行确认。

要仅删除流目的地的自定义 HTTP headers:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 来查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择要展开的流 URL。
  5. 找到 自定义 HTTP headers 表。
  6. 找到您要删除的 header。
  7. 在 header 右侧,选择 删除)。
  8. 选择 保存 可以更新流目的地。

删除实例级流目的地

  • 引入于 16.1 版本,功能标志ff_external_audit_events。默认禁用。
  • 功能标志 ff_external_audit_events 默认启用于极狐GitLab 16.2。
在私有化部署版上,此功能默认启用。如果要禁用此功能,管理员可以禁用功能标志 ff_external_audit_events。在 JiHuLab.com 上,此功能可用,但只能由 JiHuLab.com 管理员配置。此功能已经准备好用于生产。

先决条件:

  • 具有实例的管理员访问权限。

要删除实例的流目的地:

  1. 在左侧边栏上,展开最顶部的向下箭头()。
  2. 选择 管理中心
  3. 在左侧边栏上,选择 监控 > 审计事件
  4. 在主区域中,选择 事件流 选项卡。
  5. 选择要展开的流 URL。
  6. 选择 删除目的地
  7. 选择窗口中的 删除目的地 进行确认。

要仅删除流目的地的自定义 HTTP header:

  1. 在左侧边栏上,展开最顶部的箭头 ()。
  2. 选择 管理中心
  3. 在左侧边栏上,选择 监控 > 审计事件
  4. 在主区域中,选择 事件流 选项卡。
  5. 在项目右侧,选择 编辑 ()。
  6. 找到 自定义 HTTP header 表。
  7. 找到您要移除的 header。
  8. 在 header 右侧,选择 删除 ()。
  9. 选择 保存 以更新流目的地。

Google Cloud Logging 流

引入于极狐GitLab 16.2。

先决条件:

  • 具有顶级群组的所有者角色。

删除顶级群组的 Google Cloud Logging 流目的地:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 以查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择要展开的 Google Cloud Logging 流。
  5. 选择 删除目的地
  6. 在窗口中选择 删除目的地 进行确认。

验证事件真实性

引入于 14.8 版本。

每个流目的地都有一个唯一的验证令牌(verificationToken),可用于验证事件的真实性。该令牌要么由所有者指定,要么在创建事件目标时自动生成,并且无法更改。

每个流式传输事件都在 X-Gitlab-Event-Streaming-Token HTTP header 中包含验证令牌,可以在列出流目的地时根据目标值进行验证。

验证顶级群组流目的地

引入于 15.2 版本。

先决条件:

  • 具有顶级群组的所有者角色。

要列出流目的地并查看验证令牌:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 来查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择要展开的流 URL。
  5. 找到 验证令牌 输入。

验证实例级流目的地

  • 引入于 16.1 版本,功能标志ff_external_audit_events。默认禁用。
  • 功能标志 ff_external_audit_events 默认启用于极狐GitLab 16.2。
在私有化部署版上,此功能默认启用。如果想禁用此功能,管理员可以禁用功能标志 ff_external_audit_events。在 JiHuLab.com 上,此功能可用,但只能由 JiHuLab.com 管理员配置。此功能已经准备好用于生产。

先决条件:

  • 具有实例的管理员访问权限。

要列出实例的流目的地并查看验证令牌:

  1. 在左侧边栏上,展开最顶部的向下箭头()。
  2. 选择 管理中心
  3. 在左侧边栏上,选择 监控 > 审计事件
  4. 在主区域中,选择 事件流 选项卡。
  5. 查看每项右侧的验证令牌。

事件类型过滤器

  • UI 中带有审计事件类型的定义列表的事件类型过滤引入于极狐GitLab 16.1。
  • UI 中的事件类型过滤引入于极狐GitLab 16.1,包含已定义的审核事件类型列表。

为群组启用此功能后,您可以允许用户过滤每个目的地的流审计事件。 如果在没有过滤器的情况下启用该功能,则目标端将收到所有审计事件。

具有事件类型过滤器集的流目的地具有 过滤 () 标记。

更新流目的地的事件过滤器:

  1. 在左侧边栏的顶部,选择 搜索极狐GitLab () 以查找您的群组。
  2. 选择 安全 > 审计事件
  3. 在主区域中,选择 事件流 选项卡。
  4. 选择要展开的流 URL。
  5. 找到 按审计事件类型过滤 下拉列表。
  6. 选择下拉列表并选择或清除所需的事件类型。
  7. 选择 保存 以更新事件过滤器。

覆盖默认内容类型 header

默认情况下,流目的地使用 application/x-www-form-urlencodedcontent-type header。但是,您可能希望将 content-type header 设置为其他内容。例如,application/json

要覆盖顶级群组流目的地或实例级流目的地的 content-type header 默认值,请使用 UI 或使用 GraphQL API

负载 schema

文档引入于 15.3 版本。

字段 描述 备注
author_id 触发事件的用户的用户 ID  
author_name 触发事件的作者的可读名称 当作者不再存在时很有帮助
created_at 触发事件的时间戳  
details 包含附加元数据的 JSON 对象 没有定义的架构,但通常包含有关事件的附加信息
entity_id 审计事件实体的 ID  
entity_path 受可审计事件影响的实体的完整路径  
entity_type 实体类型的字符串表示 可接受的值包括 UserGroupKey 等。
event_type 审计事件类型的字符串表示  
id 审计事件的唯一标识符 如果需要,可用于重复数据删除
ip_address 用于触发事件的主机 IP 地址  
target_details 有关目标的其他详细信息  
target_id 审计事件目标的 ID  
target_type 目标类型的字符串表示  

JSON 负载 schema

{
  "properties": {
    "id": {
      "type": "string"
    },
    "author_id": {
      "type": "integer"
    },
    "author_name": {
      "type": "string"
    },
    "details": {},
    "ip_address": {
      "type": "string"
    },
    "entity_id": {
      "type": "integer"
    },
    "entity_path": {
      "type": "string"
    },
    "entity_type": {
      "type": "string"
    },
    "event_type": {
      "type": "string"
    },
    "target_id": {
      "type": "integer"
    },
    "target_type": {
      "type": "string"
    },
    "target_details": {
      "type": "string"
    },
  },
  "type": "object"
}