InfoGrab DocsInfoGrab Docs

GraphQL 구현 가이드

GraphQL 타입과 뮤테이션을 세분화된 PAT 권한 부여에 맞추기 위한 단계별 구현 가이드입니다.

탈취된 개인 액세스 토큰(PAT)의 보안 영향을 줄이기 위해, 세분화된(granular 또는 fine-grained) PAT를 사용하면 사용자가 특정 조직 경계(그룹, 프로젝트, 사용자 또는 인스턴스 수준)로 제한된 세분화된 권한을 가진 토큰을 만들 수 있습니다. 이를 통해 사용자는 토큰에 필요한 권한만 부여함으로써 최소 권한 원칙을 따를 수 있습니다. 세분화된 PAT는 경계(boundary)와 특정 리소스 권한으로 구성된 세분화된 스코프를 통해 세밀한 접근 제어를 제공합니다. 세분화된 PAT로 GraphQL 요청을 인증할 때, GitLab은 토큰의 권한에 지정된 경계 수준에서 요청된 리소스에 대한 접근 권한이 포함되어 있는지 검증합니다. 이 문서는 GraphQL 쿼리와 뮤테이션을 세분화된 PAT 권한 부여에 맞추고자 하는 커뮤니티 기여자 및 GitLab 개발자를 위해 작성되었습니다. 단계별 구현 가이드 # 이 가이드는 GraphQL 타입과 뮤테이션에 세분화된 PAT 권한 부여를 추가하는 과정을 안내합니다. 시작하기 전에 권한 명명 규칙 문서를 검토하여 이 가이드 전반에 사용되는 용어를 이해하시기 바랍니다. 이 단계들은 GraphQL 타입과 뮤테이션만을 다룹니다. REST API 엔드포인트 보호에 대해서는 REST API 구현 가이드 를 참고하십시오. 권한 부여 시스템이 내부적으로 어떻게 동작하는지에 대한 자세한 설명은 GraphQL 아키텍처 문서 를 참고하십시오. 워크플로 개요 # 구현은 다음 흐름을 따릅니다. 1-2단계: 계획 - 타입/뮤테이션을 식별하고 권한을 설계합니다. 3단계: 원시(raw) 권한을 생성합니다(YAML 파일). 4단계: 원시 권한을 할당 가능한(assignable) 권한으로 묶습니다(YAML 파일). 5단계: 타입/뮤테이션에 권한 부여 디렉티브를 추가합니다(Ruby 코드). 6단계: 권한 부여 테스트를 작성합니다(Ruby 스펙). 7단계: 로컬에서 테스트합니다(수동 검증). 8단계: 문서를 검증하고 재생성합니다(Rake 태스크). 1단계: 보호할 GraphQL 타입과 뮤테이션 식별 # 목표: 작업 중인 리소스에 대한 모든 GraphQL 타입과 뮤테이션을 찾습니다. app/graphql/types/ 에서 해당 리소스의 GraphQL 타입을 찾습니다. 예: 이슈 리소스의 경우 app/graphql/types/issue_type.rb 를 엽니다. app/graphql/mutations/ 에서 관련 뮤테이션을 찾습니다. 예: 이슈의 경우 app/graphql/mutations/issues/ 를 확인합니다. 권한 부여가 필요한 타입과 뮤테이션을 식별합니다. 사용자가 접근하는 리소스를 나타내는 오브젝트 타입 (예: IssueType , ProjectType ) 리소스를 생성, 업데이트 또는 삭제하는 뮤테이션 (예: Mutations::Issues::Create ) 리소스를 직접 반환하는 쿼리 필드 (예: QueryType 의 field :project ) 이미 authorize_granular_token 디렉티브가 있는 타