GraphQLによる監査レポートの設定

このページでは、GraphiQLエクスプローラーを使用して、特定のサブセットのユーザーの監査レポートを設定する方法について説明します。

同じクエリを HTTP エンドポイント経由で直接実行するには、cURL を使用します。詳細については、コマンドラインから始めるためのガイダンスを参照してください。

例のユーザークエリは、GitLab インスタンスのユーザーのサブセットをユーザー名かグローバル ID で探します。クエリには以下のものが含まれます:

pageInfo

ページネーションの実装に必要なデータがコンテナに含まれています。GitLab はカーソルベースのページ分割を使います。詳細については、GraphQL ドキュメントのPaginationを参照ください。

nodes

GraphQL クエリでは、nodes はグラフ](https://en.wikipedia.org/wiki/Vertex_(graph_theory))上の[nodes のコレクションを表すために使用されます。この場合、ノードのコレクションはUser オブジェクトのコレクションです。それぞれについて、出力します:

  • そのユーザーのid
  • membership フラグメント。そのユーザーが属するプロジェクトやグループのメンバーシップを表します。フラグメントの出力は、...memberships 記法で表します。

GitLab GraphQL APIは広範囲に渡っており、様々なエンティティの大量のデータを出力することができます。最新の情報については、公式のリファレンスドキュメントを参照してください。

GraphiQLエクスプローラの設定

この手順では、GraphiQLエクスプローラーにコピー&ペーストできる実質的な例を示します。GraphiQLエクスプローラーは以下の用途に使用できます:

  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エクスプローラーツールを開きます。
  3. GraphiQL エクスプローラー ツールの左ウィンドウに上記のquery を貼り付けます。
  4. 再生」を選択すると、このような結果が得られます:

GraphiQL explorer search for boards

note
GraphQL APIは標準のIDではなくGlobalIDを返します。また、単一の整数ではなくGlobalIDを入力として期待します。

この GraphQL クエリは、ユーザーが明示的にメンバーになっているグループとプロジェクトを返します。GraphiQLエクスプローラーはセッション トークンを使用してリソースへのアクセスを作成するため、出力されるのは現在認証されているユーザーがアクセス可能なプロジェクトとグループに限定されます。

インスタンス管理者としてサインインした場合は、所有者に関係なくすべてのレコードにアクセスできます。

詳細については