권한 정의
각 권한에는 해당하는 정의 파일(「원시 권한」이라고도 함)이 있어야 합니다. bin/permission 명령을 사용하여 권한 정의 및 리소스 메타데이터 파일을 생성하십시오. 대화형 모드 — 권한 이름만 전달하면 명령이 각 필드를 안내하며, 이름을 사용하여 기본값을 제안합니다:
권한 정의 파일#
각 권한에는 해당하는 정의 파일(「원시 권한」이라고도 함)이 있어야 합니다. 이러한 파일들은 문서를 생성하고 권한 부여 로직을 중심으로 권한 우선 아키텍처를 활성화하는 데 사용됩니다.
bin/permission 명령을 사용하여 권한 정의 및 리소스 메타데이터 파일을 생성하십시오.
대화형 모드 — 권한 이름만 전달하면 명령이 각 필드를 안내하며, 이름을 사용하여 기본값을 제안합니다:
bin/permission <permission_name>
비대화형 모드 — -a(action)와 -r(resource)를 플래그로 전달하여 프롬프트를 건너뜁니다. 설명은 "Grants the ability to <action> <resource>"로 자동 기본 설정됩니다. -c를 추가하면 기능 범주 프롬프트도 건너뜁니다:
bin/permission <permission_name> -a <action> -r <resource> -c <feature_category>
작업이 두 단어 이상인 경우 작업 또는 리소스를 재정의하면 유용합니다. 예를 들어, force_delete_ai_catalog_item 권한을 고려해보십시오. 기본적으로 명령은 이름을 첫 번째 밑줄에서 분리하여 force를 작업으로, delete_ai_catalog_item을 리소스로 제안합니다. 이렇게 하면 정의 파일이 config/authz/permissions/delete_ai_catalog_item/force.yml에 작성되는데, 이는 올바르지 않습니다.
다음 명령은 올바른 작업과 리소스로 정의 파일을 생성하여 config/authz/permissions/ai_catalog_item/force_delete.yml에 작성합니다:
bin/permission force_delete_ai_catalog_item -a force_delete -r ai_catalog_item -c ai_catalog
임의의 필드는 플래그로 재정의할 수 있습니다(예: 사용자 지정 설명을 위한 -d). 사용 가능한 모든 옵션은 bin/permission --help를 실행하십시오.
다음 두 파일이 생성됩니다:
-
config/authz/permissions/<resource>/<action>.yml에 권한 정의:--- name: read_job description: Grants the ability to read CI/CD jobs -
config/authz/permissions/<resource>/.metadata.yml에 리소스 메타데이터 파일(아직 없는 경우):--- feature_category: continuous_integration
권한 정의 필드#
| 필드 | 설명 |
|---|---|
name |
권한 이름(작업과 리소스에서 자동 입력) |
description |
권한이 허용하는 내용에 대한 사람이 읽을 수 있는 설명 |
리소스 메타데이터 필드#
리소스 메타데이터 파일은 리소스 디렉토리당 한 번 생성됩니다. 동일한 리소스에 두 번째 권한을 추가하면 명령이 기존 메타데이터를 감지하고 모든 메타데이터 프롬프트(기능 범주, 표시 이름 및 설명)를 건너뜁니다.
필수 필드:
feature_category(필수) -config/feature_categories.yml의 유효한 항목이어야 합니다. 해당 리소스에 대한 API 파일의 기존 엔드포인트를 확인하여 올바른 기능 범주를 찾으십시오. 예를 들어, CI/CD 엔드포인트는 일반적으로continuous_integration을 사용하고, 패키지 관련 엔드포인트는package_registry를 사용합니다.
선택적 필드:
name- 표시를 위해 제목화된 리소스 이름을 재정의description- 이 리소스 그룹의 권한이 부여하는 내용에 대한 컨텍스트 제공
권한 명명 및 유효성 검사#
유효성 검사 작업(bundle exec rake gitlab:permissions:validate)은 여러 제약 조건을 적용합니다:
권한 이름 형식:
권한 이름 지정 방법에 대한 지침은 권한 명명을 참조하십시오.
작업 단어:
허용되지 않는 작업 목록은 허용되지 않는 작업을 참조하십시오.
파일 구조:
- 원시 권한은 정확히
config/authz/permissions/<resource>/<action>.yml에 있어야 합니다 - 기본 경로와 최종 파일명 사이에 추가 디렉토리가 없어야 합니다
모든 위반은 git push를 실행할 때 Lefthook의 pre-push 훅에 의해 자동으로 발견됩니다. bundle exec rake gitlab:permissions:validate로 수동으로 유효성 검사를 실행할 수도 있습니다.
