Help us learn about your current experience with the documentation. Take the survey.

实例的审计事件流式传输 GraphQL API

  • Tier: Ultimate
  • Offering: GitLab Self-Managed, GitLab Dedicated

使用 GraphQL API 管理实例的审计事件流式传输目标。

HTTP 目标

管理整个实例的 HTTP 流式传输目标。

添加新的 HTTP 目标

向实例添加新的 HTTP 流式传输目标。

前提条件:

  • 实例的管理员权限。

要启用流式传输并添加目标,请在 GraphQL API 中使用 instanceExternalAuditEventDestinationCreate mutation。

mutation {
  instanceExternalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest"}) {
    errors
    instanceExternalAuditEventDestination {
      destinationUrl
      id
      name
      verificationToken
    }
  }
}

如果满足以下条件,则事件流式传输已启用:

  • 返回的 errors 对象为空。
  • API 响应为 200 OK

您可以使用 GraphQL instanceExternalAuditEventDestinationCreate mutation 可选地指定您自己的目标名称(而不是默认的 GitLab 生成的名称)。名称长度不得超过 72 个字符,并且末尾的空格不会被修剪。此值必须是唯一的。例如:

mutation {
  instanceExternalAuditEventDestinationCreate(input: { destinationUrl: "https://mydomain.io/endpoint/ingest", name: "destination-name-here"}) {
    errors
    instanceExternalAuditEventDestination {
      destinationUrl
      id
      name
      verificationToken
    }
  }
}

实例管理员可以使用 GraphQL auditEventsStreamingInstanceHeadersCreate mutation 添加 HTTP 头。您可以通过列出实例的所有流式传输目标或从上一个 mutation 中检索目标 ID。

mutation {
  auditEventsStreamingInstanceHeadersCreate(input:
    {
      destinationId: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/42",
      key: "foo",
      value: "bar",
      active: true
    }) {
    errors
    header {
      id
      key
      value
      active
    }
  }
}

如果返回的 errors 对象为空,则表示头已创建。

列出流式传输目标

列出实例的所有 HTTP 流式传输目标。

前提条件:

  • 实例的管理员权限。

要查看实例的流式传输目标列表,请使用 instanceExternalAuditEventDestinations 查询类型。

query {
  instanceExternalAuditEventDestinations {
    nodes {
      id
      name
      destinationUrl
      verificationToken
      headers {
        nodes {
          id
          key
          value
          active
        }
      }
      eventTypeFilters
    }
  }
}

如果结果列表为空,则表示未为实例启用审计流式传输。

您需要此查询返回的 ID 值用于更新和删除 mutations。

更新流式传输目标

更新实例的 HTTP 流式传输目标。

前提条件:

  • 实例的管理员权限。

要更新实例的流式传输目标,请使用 instanceExternalAuditEventDestinationUpdate mutation 类型。您可以通过列出实例的所有外部目标来检索目标 ID。

mutation {
  instanceExternalAuditEventDestinationUpdate(input: {
    id: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/1",
    destinationUrl: "https://www.new-domain.com/webhook",
    name: "destination-name"}) {
    errors
    instanceExternalAuditEventDestination {
      destinationUrl
      id
      name
      verificationToken
    }
  }
}

如果满足以下条件,则流式传输目标已更新:

  • 返回的 errors 对象为空。
  • API 响应为 200 OK

实例管理员可以使用 auditEventsStreamingInstanceHeadersUpdate mutation 类型更新流式传输目标的自定义 HTTP 头。您可以通过列出实例的所有自定义 HTTP 头来检索自定义 HTTP 头 ID。

mutation {
  auditEventsStreamingInstanceHeadersUpdate(input: { headerId: "gid://gitlab/AuditEvents::Streaming::InstanceHeader/2", key: "new-key", value: "new-value", active: false }) {
    errors
    header {
      id
      key
      value
      active
    }
  }
}

如果返回的 errors 对象为空,则表示头已更新。

删除流式传输目标

删除整个实例的流式传输目标。

当最后一个目标被成功删除后,实例的流式传输将被禁用。

前提条件:

  • 实例的管理员权限。

要删除流式传输目标,请使用 instanceExternalAuditEventDestinationDestroy mutation 类型。您可以通过列出实例的所有流式传输目标来检索目标 ID。

mutation {
  instanceExternalAuditEventDestinationDestroy(input: { id: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/1" }) {
    errors
  }
}

如果满足以下条件,则流式传输目标已删除:

  • 返回的 errors 对象为空。
  • API 响应为 200 OK

要删除 HTTP 头,请使用 GraphQL auditEventsStreamingInstanceHeadersDestroy mutation。 要检索头 ID, 请列出实例的所有自定义 HTTP 头

mutation {
  auditEventsStreamingInstanceHeadersDestroy(input: { headerId: "gid://gitlab/AuditEvents::Streaming::InstanceHeader/<id>" }) {
    errors
  }
}

如果返回的 errors 对象为空,则表示头已删除。

事件类型过滤器

当为实例启用此功能时,您可以使用 API 来允许用户按目标筛选流式传输的审计事件。 如果启用该功能但未设置任何过滤器,目标将接收所有审计事件。

设置了事件类型过滤器的流式传输目标会带有一个 已过滤 ( filter ) 标签。

使用 API 添加事件类型过滤器

前提条件:

  • 您必须拥有实例的管理员权限。

您可以使用 auditEventsStreamingDestinationInstanceEventsAdd mutation 添加事件类型过滤器列表:

mutation {
    auditEventsStreamingDestinationInstanceEventsAdd(input: {
        destinationId: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/1",
        eventTypeFilters: ["list of event type filters"]}){
        errors
        eventTypeFilters
    }
}

如果满足以下条件,则事件类型过滤器已添加:

  • 返回的 errors 对象为空。
  • API 响应为 200 OK

使用 API 移除事件类型过滤器

前提条件:

  • 您必须拥有实例的管理员权限。

您可以使用 auditEventsStreamingDestinationInstanceEventsRemove mutation 移除事件类型过滤器列表:

mutation {
    auditEventsStreamingDestinationInstanceEventsRemove(input: {
    destinationId: "gid://gitlab/AuditEvents::InstanceExternalAuditEventDestination/1",
    eventTypeFilters: ["list of event type filters"]
  }){
    errors
  }
}

如果满足以下条件,则事件类型过滤器已移除:

  • 返回的 errors 对象为空。
  • API 响应为 200 OK

Google Cloud Logging 目标

管理整个实例的 Google Cloud Logging 目标。

在设置 Google Cloud Logging 流式传输审计事件之前,您必须满足前提条件

添加新的 Google Cloud Logging 目标

向实例添加新的 Google Cloud Logging 配置目标。

前提条件:

  • 您拥有实例的管理员权限。
  • 您拥有一个 Google Cloud 项目,并具有创建服务账户和启用 Google Cloud Logging 的必要权限。

要启用流式传输并添加配置,请在 GraphQL API 中使用 instanceGoogleCloudLoggingConfigurationCreate mutation。

mutation {
  instanceGoogleCloudLoggingConfigurationCreate(input: { googleProjectIdName: "my-google-project", clientEmail: "my-email@my-google-project.iam.gservice.account.com", privateKey: "YOUR_PRIVATE_KEY", logIdName: "audit-events", name: "destination-name" } ) {
    errors
    googleCloudLoggingConfiguration {
      id
      googleProjectIdName
      logIdName
      clientEmail
      name
    }
    errors
  }
}

如果满足以下条件,则事件流式传输已启用:

  • 返回的 errors 对象为空。
  • API 响应为 200 OK

列出 Google Cloud Logging 配置

列出实例的所有 Google Cloud Logging 配置目标。

前提条件:

  • 您拥有实例的管理员权限。

您可以使用 instanceGoogleCloudLoggingConfigurations 查询 类型查看实例的流式传输配置列表。

query {
  instanceGoogleCloudLoggingConfigurations {
    nodes {
      id
      logIdName
      googleProjectIdName
      clientEmail
      name
    }
  }
}

如果结果列表为空,则表示未为实例启用审计流式传输。

您需要此查询返回的 ID 值用于更新和删除 mutations。

更新 Google Cloud Logging 配置

更新实例的 Google Cloud Logging 配置目标。

前提条件:

  • 您拥有实例的管理员权限。

要更新实例的流式传输配置,请使用 instanceGoogleCloudLoggingConfigurationUpdate mutation 类型。您可以通过列出所有外部目标来检索配置 ID。

mutation {
  instanceGoogleCloudLoggingConfigurationUpdate(
    input: {id: "gid://gitlab/AuditEvents::Instance::GoogleCloudLoggingConfiguration/1", googleProjectIdName: "updated-google-id", clientEmail: "updated@my-google-project.iam.gservice.account.com", privateKey: "YOUR_PRIVATE_KEY", logIdName: "audit-events", name: "updated name"}
  ) {
    errors
    instanceGoogleCloudLoggingConfiguration {
      id
      logIdName
      googleProjectIdName
      clientEmail
      name
    }
  }
}

如果满足以下条件,则流式传输配置已更新:

  • 返回的 errors 对象为空。
  • API 响应为 200 OK

删除 Google Cloud Logging 配置

删除实例的流式传输目标。

当最后一个目标被成功删除后,实例的流式传输将被禁用。

前提条件:

  • 您拥有实例的管理员权限。

要删除流式传输配置,请使用 instanceGoogleCloudLoggingConfigurationDestroy mutation 类型。您可以通过列出实例的所有流式传输目标来检索配置 ID。

mutation {
  instanceGoogleCloudLoggingConfigurationDestroy(input: { id: "gid://gitlab/AuditEvents::Instance::GoogleCloudLoggingConfiguration/1" }) {
    errors
  }
}

如果满足以下条件,则流式传输配置已删除:

  • 返回的 errors 对象为空。
  • API 响应为 200 OK