역할로 접근 관리하기
역할로 접근 관리하기
역할(role)은 권한 문자열(grant string)을 주체(principal)에 매핑해요. 여기서 주체는 사용자, 그룹, 관리 그룹을 뜻해요. 모든 역할은 역할의 grant scope ID에 따라 특정 스코프 안에서 권한을 할당하죠. 스코프는 자원을 논리적으로 묶는 단위라서, 자원을 분할한 뒤 그 소유권을 주체에게 부여하는 방식으로 쓸 수 있어요.
본문
역할을 여러 스코프에 할당하면, 여러 스코프에 걸친 자원에 접근이 필요한 사용자에게 권한을 부여할 수 있어요. 하위 스코프는 상위로부터 역할을 상속받을 수 있죠. 예를 들어 글로벌 스코프 아래에 "orgs"라는 하위 스코프가 여러 개 있을 수 있어요. 글로벌 스코프에 역할을 만들 때 그 역할이 하위 org 스코프에도 적용되도록 구성할 수 있어요.
역할을 만들면 여기에 주체와 권한을 추가하게 돼요. 주체는 권한을 상속받고, 선택적으로 grant scope를 추가해서 여러 스코프에 걸친 상속을 구성할 수도 있어요.
역할 생성(Create a role)
역할을 사용하면 권한 문자열이나 권한을 주체 — 즉 사용자, 그룹, 관리 그룹 — 에 매핑할 수 있어요.
역할을 만들려면 다음 단계를 따르세요.
Admin UI로 역할 생성:
- Boundary에 로그인해요.
- 조직으로 이동하고 탐색 창에서 Roles를 선택해요.
- New 또는 New Role을 클릭해요.
- 다음 필드를 작성해요:
- Name — (선택) 식별을 위해 역할에 붙이는 이름
- Description — (선택) 식별을 위해 역할에 붙이는 설명
- Save를 클릭해요. Boundary가 역할을 만들고 역할의 Settings 페이지로 이동시켜요.
역할을 만드는 데 도움이 되는 치트 시트는 예시 역할(Example roles) 문서를 참고하세요.
CLI로 역할 생성:
- Boundary에 로그인해요.
- 다음 명령으로 역할을 만들어요:
$ boundary roles create -scope-id o_1234567890 \
-description 'An example role' \
-name 'Example role'
역할을 만들 때 다음 속성을 사용할 수 있어요:
-description=<string>— 역할에 할당할 설명-name=<string>— 역할에 할당할 이름-scope-id=<string>— 역할을 만들 스코프. 기본값은global이에요.BOUNDARY_SCOPE_ID환경 변수로 스코프를 지정할 수도 있어요.
역할을 만드는 데 도움이 되는 치트 시트는 예시 역할(Example roles) 문서를 참고하세요.
Terraform으로 역할 생성:
역할을 만들기 전에, 역할에 할당하려는 주체가 존재하는지 확인해야 해요. 자세한 내용은 사용자와 인증 방법을 위한 Terraform 패턴 문서나, 인증 방법과 계정을 설정하는 인증 구성 문서를 참고하세요.
boundary_role 자원으로 역할을 만들어요. 다음 예시는 boundary_scope org 스코프에 "listonly" 역할을 추가해요.
resource "boundary_role" "listonly" {
name = "listonly"
description = "A list only role"
scope_id = boundary_scope.org.id
}
역할을 만드는 데 도움이 되는 치트 시트는 예시 역할(Example roles) 문서를 참고하세요.
역할에 주체 할당(Assign principals to a role)
사용자, 그룹, 관리 그룹을 역할에 할당하면 그들에게 작업을 수행할 권한을 부여할 수 있어요.
역할에 주체를 할당하려면 다음 단계를 따르세요.
Admin UI로 주체 할당:
- Boundary에 로그인해요.
- 탐색 창에서 Roles를 선택하고, 주체를 할당하려는 역할을 선택해요.
- Principals 탭을 클릭해요.
- Add Principals 버튼을 클릭하거나 Manage 드롭다운에서 선택해요.
- 역할에 연결할 사용자, 그룹, 관리 그룹 하나 이상을 선택해요.
- Add Principals를 클릭해요. Boundary가 주체를 역할에 추가해요. 역할의 Principals 페이지에 선택한 주체가 표시될 거예요.
CLI로 주체 할당:
- Boundary에 로그인해요.
- 다음 명령으로 주체를 역할에 할당해요:
$ boundary roles add-principals -id r_22sVJoKZj3 \
-principal g_qu2V5QMGQD
주체를 할당할 때 다음 속성을 사용할 수 있어요:
-id=<string>— 주체를 추가할 역할의 ID-principal=<string>— 역할에 추가할 주체. 사용자나 그룹이 될 수 있어요. 역할당 주체를 여러 개 지정할 수도 있어요.-version=<int>— 주체를 추가할 역할의 버전. 버전을 지정하지 않으면 명령이 자동으로 check-and-set을 수행해요.
Terraform으로 주체 할당:
principal_ids 속성으로 주체를 할당할 수 있어요. 다음 예시는 boundary_user.foo와 boundary_group.bar 주체를 역할에 추가해요.
resource "boundary_role" "listonly" {
name = "listonly"
description = "A list only role"
principal_ids = [boundary_user.foo.id,boundary_group.bar.id]
scope_id = boundary_scope.org.id
}
역할에 권한(Grants) 할당
권한은 주체가 수행할 수 있는 작업을 설명해요. 권한은 grant 문자열을 직접 정의하거나, UI에서 미리 정의된 템플릿을 선택해 역할에 추가할 수 있어요.
역할에 권한을 할당하려면 다음 단계를 따르세요.
Admin UI로 권한 할당:
- Boundary에 로그인해요.
- 탐색 창에서 Roles를 선택하고, 권한을 할당하려는 역할을 선택해요.
- 역할의 Settings 페이지에서 Grants 탭을 클릭해요.
- 권한을 추가하는 방식을 선택해요:
- 직접 추가/수정 — Edit Grants를 클릭하고 편집기에서 grant 문자열을 입력하거나 수정해요. 각 grant 문자열은 다른 줄에 입력해요.
- 미리 정의된 템플릿 추가 — Add Grant Templates를 클릭하고, 템플릿 목록에서 추가할 grant 문자열을 선택한 뒤 Add Grant Templates를 클릭해요.
- Save를 클릭해 변경을 적용해요.
직무별 권한의 흔한 사용 사례는 Common use cases 문서를 참고하세요.
CLI로 권한 할당:
- Boundary에 로그인해요.
- 다음 명령으로 역할에 권한을 할당해요:
$ boundary roles add-grants -id r_22sVJoKZj3 \
-grant 'ids=*;type=*;actions=no-op,list'
권한을 할당할 때 다음 속성을 사용할 수 있어요:
-grant=<string>— 추가할 권한. 콤팩트 문자열 형식이나 JSON으로 지정할 수 있어요. JSON을 쓰면 제대로 이스케이프해야 해요. 권한을 여러 개 지정할 수도 있어요.-ids=<string>— 권한을 추가할 역할의 ID. 하나 이상 지정할 수 있어요. 텍스트로 여러 ID를 지정하면 쉼표로 구분하고, JSON으로 지정하면 배열을 사용해요.-version=<int>— 권한을 추가할 역할의 버전. 버전을 지정하지 않으면 명령이 자동으로 check-and-set을 수행해요.
직무별 권한의 흔한 사용 사례는 Common use cases 문서를 참고하세요.
Terraform으로 권한 할당:
grant_strings 속성으로 권한을 할당해요.
resource "boundary_role" "listonly" {
name = "listonly"
description = "A list only role"
principal_ids = [boundary_user.foo.id,boundary_group.bar.id]
grant_strings = ["ids=*;type=*;actions=no-op,list"]
scope_id = boundary_scope.org.id
}
직무별 권한의 흔한 사용 사례는 Common use cases 문서를 참고하세요.
Grant scope 추가(Add grant scopes)
역할을 여러 스코프에 할당해서 역할 상속을 구성할 수 있어요. 역할은 다음 grant scope의 조합을 가질 수 있어요:
this— 이 스코프 자신children— 할당된 스코프의 모든 직접 자식 (전역과 조직 스코프에서만)descendants— 스코프의 모든 후손 (전역에서만)- ID — 예:
o_v2MpV4vBHN또는p_0vfvaQPwhD. 역할은 여러 grant scope ID를 받을 수 있어요.
권한을 만들면 Boundary가 자동으로 this 스코프를 할당해요.
역할에 grant scope를 추가하려면 다음 단계를 따르세요.
Admin UI로 grant scope 추가:
- Boundary에 로그인해요.
- 탐색 창에서 Roles를 선택하고, grant scope를 추가하려는 역할을 선택해요.
- Scopes 탭을 클릭해요.
- Manage 드롭다운에서 Manage Scopes를 선택해요.
- 다음 중에서 선택해요:
- Add this scope — 현재 스코프를 grant에 추가
- Add all children — 현재 스코프의 모든 직접 자식을 추가 (전역과 조직 스코프에서만 사용 가능)
- Add all descendants — 현재 스코프의 모든 후손을 추가 (전역 스코프에서만 사용 가능)
- 추가 스코프를 더하려면: Manage custom scopes를 클릭하고, grant에 할당할 추가 스코프를 선택한 뒤 Save를 클릭해요.
- Save를 클릭해요. Boundary가 grant scope를 역할에 할당해요.
CLI로 grant scope 추가:
- Boundary에 로그인해요.
- 다음 명령으로 grant scope를 추가해요:
$ boundary roles add-grant-scopes -id r_22sVJoKZj3 \
-grant-scope-id "children"
grant scope를 추가할 때 다음 속성을 사용할 수 있어요:
-
-grant-scope-id=<string>— 역할에 설정된 권한을 상속받는 스코프 ID. 다음 값을 지정할 수 있어요:this— 현재 스코프에 적용children— 스코프의 모든 직접 자식에 적용 (전역과 조직 스코프에서만)descendants— 스코프의 모든 후손에 적용 (전역 스코프에서만)
Boundary는 중복된 grant scope를 만들 수 없게 해요. 예를 들어 org 스코프가 글로벌 스코프에서 권한을 상속받고 있다면, 같은 권한을 org 스코프에 직접 적용할 수 없어요.
-
-id=<string>— grant scope를 추가할 역할의 ID -
-version=<int>— grant scope를 추가할 역할의 버전. 버전을 지정하지 않으면 명령이 자동으로 check-and-set을 수행해요.
Terraform으로 grant scope 추가:
grant_scope_ids 속성으로 스코프 상속을 선언할 수 있어요. 다음 예시는 할당된 스코프의 ID(this), 프로젝트 스코프의 ID, 역할 스코프의 직접 자식들을 역할에 추가해요. 이 예시에서는 org_one 안의 프로젝트들이 포함되죠.
resource "boundary_role" "listonly" {
name = "listonly"
description = "A list only role"
principal_ids = [boundary_user.foo.id,boundary_group.bar.id]
grant_strings = ["ids=*;type=*;actions=no-op,list"]
scope_id = boundary_scope.org.id
grant_scope_ids = ["this","children"]
}
더 알아보기 (Learn more)
자원에 대한 접근을 동적으로 관리하려면 주체 관리와 관리 그룹 필터 문서를 참고해요.
- Boundary의 권한 모델을 더 잘 이해하려면 Boundary의 권한(Permissions in Boundary) 문서를 참고해요.
- 주체가 인증에 사용할 인증 방법을 구성하려면 인증 구성(Configure authentication) 문서를 참고해요.
- roles 자원에 대한 더 자세한 정보는 Roles 도메인 모델 주제를 참고해요.
- 역할을 만들거나 관리하는 방법은 CLI
roles주제나 API Role 서비스 주제를 참고해요. - 역할을 만드는 데 도움이 되는 치트 시트는 예시 역할(Example roles) 문서를 참고해요.
- 직무별 권한의 흔한 사용 사례는 Common use cases 문서를 참고해요.
튜토리얼(Tutorials)
파티션 경계를 만들어 자원 소유권을 할당하는 실습을 원한다면 다음 튜토리얼을 참고해요:
- Manage scopes with HCP Boundary
- Manage scopes with self-managed editions of Boundary