GraphQL 구현 가이드
GraphQL 구현 가이드에 대해 설명합니다.
손상된 Personal Access Token(PAT)의 보안 영향을 줄이기 위해, 세분화된(granular) PAT는 사용자가 특정 조직 경계(그룹, 프로젝트, 사용자 또는 인스턴스 수준)에 한정된 세밀한 권한을 가진 토큰을 생성할 수 있도록 합니다. 이를 통해 사용자는 토큰에 필요한 권한만 부여하는 최소 권한 원칙을 따를 수 있습니다. Granular PAT는 경계와 특정 리소스 권한으로 구성된 세분화된 스코프를 통해 세밀한 접근 제어를 허용합니다. Granular PAT로 GraphQL 요청을 인증할 때, GitLab은 해당 토큰의 권한에 지정된 경계 수준에서 요청된 리소스에 대한 접근이 포함되어 있는지 검증합니다. 이 문서는 GraphQL 쿼리 및 뮤테이션을 granular PAT 인증과 호환되게 만들려는 커뮤니티 기여자 및 GitLab 개발자를 위해 설계되었습니다. 단계별 구현 가이드 # 이 가이드는 GraphQL 유형 및 뮤테이션에 granular PAT 인증을 추가하는 방법을 안내합니다. 시작하기 전에 전반에서 사용되는 용어를 이해하기 위해 권한 명명 규칙 문서를 검토하세요. Note 이 단계는 GraphQL 유형 및 뮤테이션만 다룹니다. REST API 엔드포인트 보호의 경우 REST API 구현 가이드 를 참조하세요. 인증 시스템이 내부적으로 어떻게 작동하는지에 대한 자세한 설명은 GraphQL 아키텍처 문서 를 참조하세요. 워크플로우 개요 # 구현은 다음 흐름을 따릅니다: 1-2단계: 계획 - 유형/뮤테이션 식별 및 권한 설계 3단계: 원시 권한 만들기 (YAML 파일) 4단계: 원시 권한을 할당 가능한 권한으로 묶기 (YAML 파일) 5단계: 유형/뮤테이션에 인증 지시자 추가 (Ruby 코드) 6단계: 인증 테스트 작성 (Ruby 스펙) 7단계: 로컬 테스트 (수동 유효성 검사) 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 지시자가 있는지 확인합니다. 지시자가 없는 유형/뮤테이션에 지시자를 추가해야 합니다. 2단계: 필요한 권한 결정 # 목표: GitLab 명명 규칙에 따라
