권한 grant 형식(Permission grant formats)
권한 grant 형식(Permission grant formats)
권한 문자열(grant string)은 하나의 자원 또는 자원 집합과, 그 자원에 부여할 권한을 설명하는 매핑이에요. 여기서는 grant 문자열을 어떻게 구성하는지, 어떤 형식이 있는지를 살펴볼게요.
본문
grant에 포함할 수 있는 권한에 대해 더 알고 싶으면 할당 가능한 권한(Assignable permissions) 문서를 참고하세요.
grant 문자열은 대략 다음과 같은 형태를 가져요:
ids=<id>;type=<type>;actions=<action list>;output_fields=<fields list>
선택자는 두 가지 유형이 있어요:
- ids 필드 — 특정 자원을 가리키거나 와일드카드로 모두 매칭해요. grant 문자열에 쉼표로 구분한 여러 ID 값을 넣을 수 있어요.
- type 필드 — 특정 자원 유형을 가리키거나 와일드카드로 모두 매칭해요. 자원 컬렉션에 권한을 부여할 때도 사용할 수 있어요.
선택자는 특정 ID나 와일드카드 ID, type 선택자를 이용해 grant가 적용될 자원을 나타내는 데 쓰여요.
grant 문자열은 사람이 읽기 쉬운 문자열 문법이나 JSON으로 제공할 수 있어요. 아래 예시는 정식 문자열 문법을 사용해요. JSON 등가물은 문자열 id 값, 문자열 type 값, 문자열 배열 actions 값, 문자열 배열 output_fields 값을 가진 객체예요.
아래 예시에서는 output_fields를 생략했는데, 각 예시에 유효하기 때문이에요. actions를 생략하고 output_fields만 지정하는 것도 유효해요.
ID만 지정(ID only)
가장 단순한 권한 형식은 주어진 자원에 지정된 액션을 허용하는 거예요. 다음 예시를 볼게요:
ids=hsst_1234567890;actions=read,update
이 예시는 hsst_1234567890 자원에 read와 update 액션을 부여해요. 이 형식은 자원을 명시적으로 식별하기 때문에, 이 형식에서 create나 list를 액션으로 지정하는 건 유효하지 않아요. create와 list 액션은 컬렉션에서만 지원되거든요.
grant 문자열에 쉼표로 구분한 여러 ID 값을 넣을 수도 있어요:
ids=hsst_1234567890,hsst_0987654321;actions=read,update
이 예시는 hsst_1234567890과 hsst_0987654321 두 자원 모두에 read와 update 액션을 부여해요.
type만 지정(Type only)
grant를 구성해서 주어진 type에 지정된 액션을 허용할 수 있어요. 다음 예시를 볼게요:
type=host-catalog;actions=create,list
type은 컬렉션 안의 특정 자원이 아니라 컬렉션만 지정하므로, 이 형식에서는 컬렉션 액션만 허용돼요. 현재 여기에는 create와 list 액션이 포함돼요.
한 가지 추가 제약이 있어요. 이 grant 형식은 "최상위(top-level)" 자원 유형에서만 유효한데, 여기에는 다음이 포함돼요:
- 인증 방법(Auth methods)
- 인증 토큰(Auth tokens)
- 그룹(Groups)
- 호스트 카탈로그(Host catalogs)
- 역할(Roles)
- 스코프(Scopes)
- 세션(Sessions)
- 대상(Targets)
- 사용자(Users)
그 이유는 다른 자원 유형들은 이 자원 유형들 안에 포함되어 있기 때문이에요. 예를 들어 계정(account)은 인증 방법 안에서 만들어지죠. 인증 방법에 대한 액션을 지정하려면 grant를 적용할 특정 포함 자원도 함께 지정해야 해요. 그런 자원들은 아래 나오는 고정 ID(Pinned ID) 형식으로 갱신할 수 있어요.
고정 ID(Pinned ID)
이 형식은 특정 ID 안의 비최상위(non-top-level) 유형에 액션을 "고정(pin)"해요. 다음 예시를 볼게요:
ids=hcst_1234567890;type=host-set;actions=create,read,update
이 예시에서 사용자는 스코프 안에서 호스트 셋을 create, read, update할 수 있어요. 단, 호스트 카탈로그 hcst_1234567890에 속한 호스트 셋만 가능하죠. 고정(pinning)은 본질적으로 최상위 자원을 이용해 그 하위 자원들에 대한 미니 권한 경계를 만드는 방법이에요.
와일드카드(Wildcards)
grant에서 와일드카드를 사용할 수 있어요. 지원되는 와일드카드 가능성은 아래 섹션들을 참고하세요.
와일드카드 ID(Wildcard ID)
ID가 *이면 주어진 type의 모든 ID를 매칭해요. 이 grant 형식은 최상위 자원 유형과 비최상위 자원 유형 모두에서 사용할 수 있어요. 다음 예시를 볼게요:
ids=*;type=host-set;actions=create,read,update,set-hosts
와일드카드 type(Wildcard type)
고정 ID가 있는 비최상위 자원의 경우 type을 와일드카드로 할 수 있어요. 다음 예시를 볼게요:
ids=hcst_1234567890;type=*;actions=create,read,update
이 grant 형식은 ID hcst_1234567890인 호스트 카탈로그 아래의 모든 유형의 하위 자원에 create, read, update 액션을 허용해요. 이 예시에서는 호스트 셋과 호스트가 포함되겠죠.
와일드카드 ID와 type(Wildcard ID and type)
ID와 type이 모두 와일드카드면, grant는 본질적으로 스코프 안의 어떤 유형의 어떤 자원이든 매칭하고 주어진 액션을 허용하는 catch-all이 돼요. 다음 예시를 볼게요:
ids=*;type=*;actions=read,list
와일드카드 ID, type, 액션(Wildcard ID, type, and actions)
ID, type, 액션 모두 와일드카드가 될 수 있어요. 다음 예시를 볼게요:
ids=*;type=*;actions=*
이런 grant는 본질적으로 스코프에 대한 완전한 관리자(admin) 권한이에요.
템플릿(Templates)
grant에는 몇 가지 템플릿 가능성이 있어요. 다음 템플릿은 평가 시점에 grant 문자열의 ID 필드에 주어진 값을 대입해요:
{{.Account.Id}}— 작업을 수행하는 데 사용된 토큰과 연결된 계정 ID가 대입돼요. 예를 들어ids={{.Account.Id}};actions=read,change-password는 Password 인증 방법으로 인증한 사용자가 자기 비밀번호를 바꿀 수 있게 하는 Boundary의 기본 grant 중 하나예요.{{.User.Id}}— 작업을 수행하는 데 사용된 토큰과 연결된 사용자 ID가 대입돼요.
더 알아보기 (Learn more)
- Boundary의 권한 모델을 더 잘 이해하려면 Boundary의 권한(Permissions in Boundary) 문서를 참고해요.
- Boundary 주체에 할당할 수 있는 권한에 대해 더 알고 싶으면 할당 가능한 권한(Assignable permissions) 문서를 참고해요.
- 권한을 관리하는 데 도움이 되는 치트 시트는 Resource tables 문서를 참고하세요.
- 역할을 만드는 데 도움이 되는 치트 시트는 예시 역할(Example roles) 문서를 참고하세요.
- 직무별 권한의 흔한 사용 사례는 Common use cases 문서를 참고하세요.
- 자원을 논리적으로 묶는 스코프를 만들려면 자원을 그룹화하는 스코프 생성 문서를 참고해요.
- 사용자와 그룹에 역할을 구성하고 스코프 권한을 부여하려면 역할로 접근 관리 문서를 참고해요.
- 자원에 대한 접근을 동적으로 관리하려면 주체 관리와 관리 그룹 필터 문서를 참고해요.