使用 GraphQL 设置审计报告

本页介绍如何使用 GraphiQL Explorer 为特定的用户子集设置审计报告。

您可以使用 cURL 通过 HTTP 端点直接运行相同的查询。有关更多信息,请参阅命令行

示例用户查询在极狐GitLab 实例中通过用户名或全局 ID 查询用户子集。 查询包括:

pageInfo

包含实现分页所需的数据。极狐GitLab 使用基于光标的分页。详情请参见 GraphQL 文档中的分页

nodes

在 GraphQL 查询中,nodes 用于表示图表上的 nodes 的集合。 在这种情况下,节点集合是 User 对象的集合。每一个我们都输出:

  • 用户 id
  • 代表用户项目或群组成员资格的 membership 片段。 输出片段用 ...memberships 表示法表示。

极狐GitLab GraphQL API 非常广泛,可以输出各种实体的大量数据。

设置 GraphiQL Explorer

此过程提供了一个实质性示例,您可以将其复制并粘贴到 GraphiQL Explorer 中。从以下位置可获取 GraphiQL Explorer:

  1. 复制以下代码摘录:

    {
      users(usernames: ["user1", "user2", "user3"]) {
        pageInfo {
          endCursor
          startCursor
          hasNextPage
        }
        nodes {
          id
          ...memberships
        }
      }
    }
    
    fragment membership on MemberInterface {
      createdAt
      updatedAt
      accessLevel {
        integerValue
        stringValue
      }
      createdBy {
        id
      }
    }
    
    fragment memberships on User {
      groupMemberships {
        nodes {
          ...membership
          group {
            id
            name
          }
        }
      }
    
      projectMemberships {
        nodes {
          ...membership
          project {
            id
            name
          }
        }
      }
    }
    
  2. 打开 GraphiQL Explorer 工具
  3. 将上面列出的 query 粘贴到 GraphiQL Explorer 工具的左侧窗口中。
  4. 选择 Play,结果如下:

GraphiQL explorer search for boards

note GraphQL API 返回 GlobalID,而不是标准 ID。它还期望 GlobalID 是输入而不仅仅是一个整数。

此 GraphQL 查询返回用户已明确成为其成员的群组和项目。 由于 GraphiQL Explorer 使用会话令牌来授权对资源的访问,输出仅限于当前经过身份验证的用户可以访问的项目和群组。

如果您以实例管理员的身份登录,则无论所有权如何,您都可以访问所有记录。

更多关于:

  • GraphQL 特定实体的信息,例如分片和接口,请访问官方的 GraphQL 文档
  • 单个属性的信息,请访问 GraphQL API 资源