InfoGrab Docs

내부 권한 그룹

내부 권한 그룹에 대해 설명합니다.

내부 권한 그룹은 YAML 기반의 구성 파일로, 내부 리소스 상태에 따라 함께 활성화되거나 비활성화되는 권한들의 논리적 그룹을 정의합니다. 예를 들어 그룹이 아카이브된 경우와 같이 특정 조건이 충족될 때 집합적으로 방지(또는 활성화)되어야 하는 권한 집합을 중앙에서 관리할 수 있습니다. 작동 방식 # 내부 권한 그룹은 config/authz/permission_groups/internal/ 아래의 YAML 파일로 정의됩니다. 각 파일에는 설명과 권한 이름 목록이 포함됩니다. 런타임에 Authz::PermissionGroups::Internal 클래스가 이 파일들을 로드하고 식별자로 그룹을 검색하는 조회 API를 제공합니다. 명명 규칙 # 내부 권한 그룹의 식별자는 config/authz/permission_groups/internal/ 디렉토리를 기준으로 한 파일 경로에서 파생됩니다: 디렉토리 이름은 콜론으로 구분된 접두사가 됩니다. 파일 이름(확장자 없음)이 최종 세그먼트가 됩니다. 예를 들어, config/authz/permission_groups/internal/group/archived.yml 은 식별자 group:archived 를 생성합니다. YAML 파일 구조 # 각 YAML 파일에는 다음이 포함되어야 합니다: description : 이러한 권한이 적용될 때에 대한 사람이 읽을 수 있는 설명. permissions : 문자열로 된 권한(ability) 이름 목록. 예시( config/authz/permission_groups/internal/group/archived.yml ): description: Permissions that are disabled when a group is archived permissions: - activate_group_member - admin_build - create_projects - push_code # ... 추가 권한 정책에서 내부 권한 그룹 사용 # DeclarativePolicy 정책에서 내부 권한 그룹을 사용하려면 그룹 식별자로 Authz::PermissionGroups::Internal.get 을 호출하고 반환된 권한을 prevent 규칙으로 스플랫하십시오: # app/policies/group_policy.rb condition( :archived , scope: :subject ) { @subject .self_or_ancestors_archived? } rule { archived }.policy do prevent(* Authz : :PermissionGroups : :Internal .get( 'group:archived' ).permissions) end 이렇게 하면 archived 조건이 참일 때 나열된 모든 권한이 방지되어, 정책 파일 전체에 긴 인라인 prevent 호출 목록을 유지할 필요가 없어집니다. 새 내부 권한 그룹 생성 # YAML 파일 생성. config/authz/permission_groups/internal/ 아래에 새 .yml 파일을 추가