审计事件流
- 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 版本。
- HTTP 目的地 名称 字段添加于极狐GitLab 16.3。
- 活跃 复选框功能添加于极狐GitLab 16.5。
用户可以为顶级群组或实例设置流传输目标,以结构化 JSON 形式接收有关该群组、子组和项目的所有审计事件。
顶级群组所有者和实例管理员可以在第三方系统中管理其审计日志。任何可以接收结构化 JSON 数据的服务都可以用作流传输目的地。
每个流传输目的地最多可以有 20 个包含在每个流传输事件中的自定义 HTTP headers。
极狐GitLab 可以将单个事件多次流式传输到同一目的地。使用有效负载中的 id
密钥进行传入数据去重。
顶级群组流目的地
为顶级群组管理流目的地。
HTTP 目的地
为顶级群组管理 HTTP 流目的地。
添加新的 HTTP 目的地
向顶级群组添加新的 HTTP 流目的地。
先决条件:
- 具有顶级群组的所有者角色。
要将流传输目的地添加到顶级群组:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择 添加流目的地 并选择 HTTP 端点 以显示添加目的地部分。
- 在 名称 和 目的地 URL 字段中,填写目的地名称和 URL。
- 可选。找到 自定义 HTTP header 表。
- 要使 header 生效,请选择 启用 复选框。Header 将与审计事件一起发送。
- 选择 添加 header 创建新的名称和值对。根据需要输入任意数量的名称和值对。每个流传输目的地最多可以添加 20 个 headers。
- 填写完所有 header 后,选择 添加 可以添加新的流目的地。
列出 HTTP 目的地
先决条件:
- 具有群组的所有者角色。
要列出顶级群组的流目的地:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择事件流将其展开并查看所有自定义 HTTP 标头。
更新 HTTP 目的地
先决条件:
- 具有群组的所有者角色。
要更新流目的地的名称:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要扩展的流。
- 在 名称 字段中,添加要更新的目标名称。
- 选择 保存 以更新流目的地。
要更新流目的地的自定义 HTTP 标头:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要扩展的流。
- 找到 自定义 HTTP 标头 表。
- 找到您要更新的标头。
- 要使 header 生效,请选择 启用 复选框。Header 将与审计事件一起发送。
- 选择 添加标头 以创建新的名称和值对。根据需要输入任意数量的名称和值对。每个流目的地最多可以添加 20 个标头。
- 选择 保存 以更新流目的地。
删除 HTTP 目的地
删除顶级群组的流目的地。当最后一个目的地删除成功后,禁用顶级群组的事件流。
先决条件:
- 具有群组的所有者角色。
要删除流目的地:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要扩展的流。
- 选择 删除目的地。
- 通过在对话框中选择 删除目的地 进行确认。
要仅删除流目的地的自定义 HTTP 标头:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要扩展的流。
- 找到 自定义 HTTP 标头 表。
- 找到您要删除的标头。
- 在标题右侧,选择 删除 ()。
- 选择 保存 以更新流目的地。
验证事件真实性
引入于极狐GitLab 15.2。
每个流目的地都有一个唯一的验证令牌(verificationToken
),可用于验证事件的真实性。这个令牌由所有者指定或在创建事件目标时自动生成,并且无法更改。
每个流事件都在 X-Gitlab-Event-Streaming-Token
HTTP 标头中包含验证令牌,可以在列出流目的地时根据目标值进行验证。
先决条件:
- 具有群组的所有者角色。
要列出流目的地并查看验证令牌:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流。
- 选择要扩展的流。
- 找到 验证令牌 输入。
更新事件过滤器
UI 中的包含已定义的审计事件类型列表的事件类型过滤引入于极狐GitLab 16.1。
为群组启用此功能后,您可以允许用户过滤每个目标的流审计事件。 如果在没有过滤器的情况下启用该功能,则目标端将收到所有审计事件。
具有事件类型过滤器集的流目的地具有 已过滤 () 标记。
要更新流目的地的事件过滤器:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要扩展的流。
- 找到 按审计事件类型过滤 下拉列表。
- 选择下拉列表并选择或清除所需的事件类型。
- 选择 保存 以更新事件过滤器。
覆盖默认内容类型标头
默认情况下,流目的地使用 application/x-www-form-urlencoded
的 content-type
标头。然而,您可能想将 content-type
标头设置为其他内容。例如,application/json
。
要覆盖顶级群组流目的地的 content-type
标头默认值,请使用:
Google Cloud 日志记录目的地
引入于极狐GitLab 16.2。
管理顶级群组的 Google Cloud Logging 目的地。
先决条件
在设置 Google Cloud Logging 流审计事件之前,您必须:
- 使用适当的凭据和权限为 Google Cloud 创建服务账户。该账户用于配置审核日志流身份验证。 有关更多信息,请参阅 Google Cloud 文档中创建和管理服务账户。
- 为服务账户启用 Logs Writer 角色,以在 Google Cloud 上启用日志记录。有关更多信息,请参阅使用 IAM 进行访问控制。
- 为服务账户创建 JSON 密钥。有关更多信息,请参阅创建服务账户密钥。
添加新的 Google Cloud Logging 目的地
先决条件:
- 具有顶级群组的所有者角色。
将 Google Cloud Logging 流目的地添加到顶级群组:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择 添加流目的地,然后选择 Google Cloud Logging 以显示添加目的地的部分。
- 输入要添加的 Google 项目 ID、Google 客户端电子邮件、日志 ID 和 Google 私钥。
- 选择 添加 可以添加新的流目的地。
列出 Google Cloud Logging 目的地
先决条件:
- 具有顶级群组的所有者角色。
要列出顶级群组的 Google Cloud Logging 流目的地:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择 Google Cloud Logging 流以展开所有字段。
更新 Google Cloud Logging 目的地
添加私有 key 的按钮引入于极狐GitLab 16.3。
先决条件:
- 具有顶级群组的所有者角色。
要更新顶级群组的 Google Cloud Logging 流目的地:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要展开的 Google Cloud Logging 流。
- 输入要更新的 Google 项目 ID、Google 客户端电子邮件和 Log ID。
- 选择 添加新私钥 并输入 Google 私钥以更新私钥。
- 选择 保存 以更新流目的地。
删除 Google Cloud Logging 流目的地
先决条件:
- 具有顶级群组的所有者角色。
要删除顶级群组的 Google Cloud Logging 流目的地:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 安全 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要展开的 Google Cloud Logging 流。
- 选择 删除目的地。
- 通过在对话框中选择 删除目的地 进行确认。
实例流目的地
- 引入于极狐GitLab 16.1,功能标志为
ff_external_audit_events
。默认禁用。- 功能标志
ff_external_audit_events
默认启用于极狐GitLab 16.2。- 实例流目的地普遍可用于极狐GitLab 16.4,移除
ff_external_audit_events
功能标志。
管理整个实例的 HTTP 流目的地。
HTTP 目的地
管理整个实例的 HTTP 流目的地。
添加新的 HTTP 目的地
将新的 HTTP 流目的地添加到实例。
先决条件:
- 具有实例的管理员访问权限。
要为实例添加流目的地:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择 添加流目的地 并选择 HTTP 端点 以显示添加目的地的部分。
- 在 名称 和 目的地 URL 字段中,添加目的地名称和 URL。
- 可选。要添加自定义 HTTP 标头,请选择 添加标头 以创建新的名称和值对,并输入它们的值。对所需数量的名称和值对重复此步骤。每个流目的地最多可以添加 20 个标头。
- 要启用 header,请选择 启用 复选框。Header 将与审计事件一起发送。
- 选择 添加标头 以创建新的名称和值对。对所需数量的名称和值对重复此步骤。每个流目的地最多可以添加 20 个标头。
- 填写完所有标头后,选择 添加 以添加新的流目的地。
列出 HTTP 目的地
先决条件:
- 具有实例的管理员访问权限。
列出实例的流目的地:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择流将其展开并查看所有自定义 HTTP 标头。
更新 HTTP 目的地
先决条件:
- 具有实例的管理员访问权限。
要更新实例流目的地的名称:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要扩展的流。
- 在 名称 字段中,添加要更新的目标名称。
- 选择 保存 以更新流目的地。
要更新实例流目的地的自定义 HTTP 标头:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要扩展的流。
- 找到 自定义 HTTP 标头 表。
- 找到您要更新的标头。
- 要启用 header,请选择 启用 复选框。Header 会和审计事件一同发送。
- 选择 添加标头 以创建新的名称和值对。根据需要输入任意数量的名称和值对。每个流目的地最多可以添加 20 个标头。
- 选择 保存 以更新流目的地。
删除 HTTP 目的地
删除整个实例的流目的地。当最后一个目的地删除成功后,会为实例禁用事件流。
先决条件:
- 具有实例的管理员访问权限。
要删除实例的流目的地:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要扩展的流。
- 选择 删除目的地。
- 通过在对话框中选择 删除目标 进行确认。
要仅删除流目的地的自定义 HTTP 标头:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 在事项右侧,选择 编辑 ()。
- 找到 自定义 HTTP 标头 表。
- 找到您要删除的标头。
- 在标头右侧,选择 删除 ()。
- 选择 保存 以更新流目的地。
验证事件真实性
- 引入于极狐GitLab 16.1,功能标志为
ff_external_audit_events
。默认禁用。- 功能标志
ff_external_audit_events
默认启用于极狐GitLab 16.2。- 实例流目的地普遍可用于极狐GitLab 16.4,移除
ff_external_audit_events
功能标志。
每个流目的地都有一个唯一的验证令牌(verificationToken
),可用于验证事件的真实性。这个令牌由所有者指定或在创建事件目标时自动生成,并且无法更改。
每个流事件都在 X-Gitlab-Event-Streaming-Token
HTTP 标头中包含验证令牌,可以在列出流目的地时根据目标值进行验证。
先决条件:
- 具有实例的管理员角色。
要列出流目的地并查看验证令牌:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 管理中心。
- 选择 监控 > 审计事件。
- 在主区域中,选择 事件流。
- 在每个条目的右侧查看验证令牌。
更新事件过滤器
UI 中的包含已定义的审计事件类型列表的事件类型过滤引入于极狐GitLab 16.3。
为群组启用此功能后,您可以允许用户过滤每个目标的流审计事件。 如果在没有过滤器的情况下启用该功能,则目的地将收到所有审计事件。
具有事件类型过滤器集的流目的地具有 已过滤 () 标记。
要更新流目的地的事件过滤器:
- 在左侧边栏中,选择 搜索或转到 并找到您的群组。
- 选择 管理中心。
- 选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要扩展的流。
- 找到 按审计事件类型过滤 下拉列表。
- 选择下拉列表并选择或清除所需的事件类型。
- 选择 保存 以更新事件过滤器。
覆盖默认内容类型标头
默认情况下,流目的地使用 application/x-www-form-urlencoded
的 content-type
标头。然而,您可能想将 content-type
标头设置为其他内容。例如,application/json
。
要覆盖顶级群组流目的地的 content-type
标头默认值,请使用:
Google Cloud Logging 目的地
引入于极狐GitLab 16.5。
管理整个实例的 Google Cloud Logging 目的地。
先决条件
在设置 Google Cloud Logging 流审核事件之前,您必须:
- 使用适当的凭据和权限为 Google Cloud 创建服务账户。该账户用于配置审计日志流身份验证。 有关更多信息,请参阅 Google Cloud 文档中的创建和管理服务账户。
- 为服务账户启用 Logs Writer 角色,以启用 Google Cloud 日志记录。有关更多信息,请参阅使用 IAM 进行访问控制。
- 为服务账户创建 JSON 密钥。有关更多信息,请参阅创建服务账户密钥。
添加新的 Google Cloud Logging 目的地
先决条件:
- 需要拥有实例的管理员访问权限。
要将 Google Cloud Logging 流目的地添加到实例,请执行以下操作:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择 添加流目的地,然后选择 Google Cloud Logging 以显示添加目的地的部分。
- 输入要添加的 Google 项目 ID、Google 客户端电子邮件、日志 ID 和 Google 私钥。
- 选择 添加 以添加新的流目的地。
列出 Google Cloud Logging 目的地
先决条件:
- 需要具有实例的管理员访问权限。
要列出实例的 Google Cloud Logging 流目的地:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择 Google Cloud Logging 流以展开并查看所有字段。
更新 Google Cloud Logging 目的地
先决条件:
- 需要具有实例的管理员访问权限。
要将 Google Cloud Logging 流目的地更新到实例,请执行以下操作:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要展开的 Google Cloud Logging 流。
- 输入要更新的 Google 项目 ID、Google 客户电子邮件和日志 ID。
- 选择 添加新私钥 并输入 Google 私钥以更新私钥。
- 选择 保存 以更新流目的地。
删除 Google Cloud Logging 流目的地
先决条件:
- 需要具有实例的管理员访问权限。
要删除实例的 Google Cloud Logging 流目的地:
- 在左侧边栏中,选择 搜索或转到。
- 选择 管理中心。
- 在左侧边栏中,选择 监控 > 审计事件。
- 在主区域中,选择 事件流 选项卡。
- 选择要展开的 Google Cloud Logging 流。
- 选择 删除目的地。
- 通过在对话框中选择 删除目标 进行确认。
负载 schema
文档引入于 15.3 版本。
流审计事件在响应正文中具有可预测的架构。
字段 | 描述 | 备注 |
---|---|---|
author_id
| 触发事件的用户的用户 ID | |
author_name
| 触发事件的作者的可读名称 | 当作者不再存在时很有帮助 |
created_at
| 触发事件的时间戳 | |
details
| 包含附加元数据的 JSON 对象 | 没有定义的架构,但通常包含有关事件的附加信息 |
entity_id
| 审计事件实体的 ID | |
entity_path
| 受可审计事件影响的实体的完整路径 | |
entity_type
| 实体类型的字符串表示 | 可接受的值包括 User 、Group 和 Key 等。
|
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"
}