할당 가능한 권한
할당 가능한 권한 (Assignable permissions)
ID 또는 유형 셀렉터로 식별되는 모든 Boundary 리소스에 대해 사용자에게 권한을 부여할 수 있어요. 두 가지 유형의 할당된 권한이 있어요.
id와type이 일치하는 리소스에 대해 클라이언트가 수행하도록 허용할 작업을 나타내는actions필드.- 응답에서 반환할 최상위 필드를 나타내는
output_fields(출력 필드) 필드.
본문
작업 (Actions)
작업은 리소스 또는 컬렉션에 대해 어떤 작업을 수행할 수 있는 능력을 전달해요. 흔한 CRUD 작업(create, read, update, delete)이 포함되지만, 일부 리소스는 유형에 특화된 작업도 있어요.
예를 들어 대상을 향한 authorize-session 작업은 그 대상에 연결을 요청할 수 있게 해줘요. 인증 메서드 리소스에는 Boundary에 인증할 수 있게 해주는 authenticate 작업이 있어요. 대부분의 작업은 흔한 작업을 나타내지만, 주의해야 할 몇 가지 특수한 경우가 있어요.
하위 작업 (Subactions)
일부 하위 작업(subaction)도 지원돼요. 하위 작업은 read:self 같은 top_level_action:subaction 형식이에요. 주체에게 최상위 작업을 부여하면 모든 하위 작업도 함께 상속해요.
예를 들어 그랜트가 read를 전달하면 API 작업 read와 read:self도 모두 일치해요. 그러나 그랜트가 read:self를 전달하면 최상위 작업 read는 부여되지 않아요.
no-op 작업과 목록 가시성 (The no-op action and listing visibility)
Boundary에는 실제 작업에 사용되지 않는 no-op 작업이 있어요. 하지만 목록 가시성(listing visibility)에 no-op 작업을 사용할 수 있어요.
사용자가 list 작업을 실행하면 Boundary는 사용자에게 최소한 하나의 작업이 부여된 리소스만 표시해요. no-op 작업이 없다면 사용자가 리소스를 볼 수 있도록 read 같은 다른 작업을 부여해야 해요. 사용자에게 추가 작업을 부여하면 의도한 것보다 더 많은 정보가 노출될 수 있어요. 특히 사용자가 Boundary에 처음 인증을 수행할 때처럼 스코프와 인증 메서드를 나열하는 경우에 그렇죠.
대신 사용자에게 no-op 작업을 부여해서, 다른 불필요한 작업을 부여하지 않고도 list 명령의 출력을 볼 수 있게 보장할 수 있어요.
익명 사용자 제한 (Anonymous user restrictions)
익명 사용자 u_anon에게 할당할 수 있는 작업에는 한도가 있어요. 이 한도는 실수로 익명 사용자를, 인증되지 않은 사용자에게 부여하려는 것보다 더 많은 권한을 제공하는 역할에 추가하는 것을 막기 위한 거예요.
익명 사용자의 경우 작업은 스코프와 인증 메서드 나열, 그리고 인증 메서드에 대한 인증으로 제한돼요. 목록 가시성을 위해 no-op 작업도 부여할 수 있어요.
Boundary는 익명 사용자에게 허용되지 않는 작업에 대한 접근이 거부될 때 특별한 오류 메시지를 반환하지 않아요. 익명 사용자가 주체인 역할에 그랜트를 할당할 수는 여전히 있지만, 익명 사용자와는 결코 일치할 수 없어요.
출력 필드 (Output fields)
그랜트 문자열은 output_fields 값을 포함할 수 있어요. 이 설정은 사용자에게 반환되는 데이터의 가시성을 세밀하게 제어할 수 있게 해줘요.
output_fields는 JSON 객체 응답의 필드 이름을 참조해요. 이들은 RBAC 모델의 다른 부분처럼 구성되며 작업별로 다르게 적용돼요. 예를 들어 다음 그랜트를 보면:
ids=*;type=auth-methods;actions=list,no-op;output_fields=scope_id,name,description
이 그랜트는 스코프의 모든 인증 메서드에 대한 list 및 no-op 작업에 식별된 세 출력 필드(scope ID, name, description)가 적용되게 해요. 사용자가 이 예시 그랜트로 list 작업을 수행하면 각 항목은 scope_id, name, description 세 필드만 채워져 반환돼요. read나 update 같은 다른 작업은 영향을 받지 않고 기본 정보를 반환해요.
이 그랜트는:
ids=*;type=auth-methods;output_fields=id
이 스코프의 인증 메서드에 대해 수행되는 모든 작업에 id만 반환된다는 뜻이에요.
그랜트는 결합할 수 있어요. 따라서 위의 두 예시 그랜트를 모두 추가하면, final 출력 필드 집합은 list와 no-op 작업에 대해 id, scope_id, name, description이 되고, 다른 모든 작업에 대해 출력 필드는 id가 돼요.
기본 출력 필드 (Default output fields)
주어진 요청에 대해 리소스나 작업에 적용되는 어떤 그랜트에도 output_fields 정의가 없으면 Boundary는 기본 설정을 사용해요. 기본 설정은 사용자가 익명인지 여부에 따라 달라져요.
- 사용자가 익명이면 Boundary는 제한된 필드 집합을 반환해요. 여기에는
id,scope_id,scope,name,description이 포함돼요. - 사용자가 인증되었으면 Boundary는 전체 필드 집합을 반환해요.
더 알아보기 (More information)
다음 단계 (Next steps)
- 리소스를 논리적으로 그룹화하는 스코프를 만들려면 스코프 만들기 참고해요.
- 사용자와 그룹에 역할과 권한 스코프를 구성하려면 역할로 접근 관리 참고해요.
- 리소스에 대한 접근을 동적으로 관리하려면 주체 관리 및 관리 그룹 필터링 참고해요.