Boundary의 권한

Boundary의 권한 (Permissions in Boundary)

Boundary의 권한 모델은 유연성과 사용성을 결합하려는, 구성 가능한 역할 기반 접근 제어(RBAC) 허용-전용(allow-only) 모델이에요. 다음 페이지들은 권한 모델의 기본 개념을 다루고, 허용된 그랜트의 특정 형태에 대한 예시를 제공하며, 역할을 만들 때 도움을 주는 치트 시트 역할을 하는 표를 포함해요.

출처: HashiCorp Boundary docs

본문

Boundary의 도메인 모델은 리소스 유형에 기반해요. 대상 같은 리소스 유형은 직접 구현할 수 있고, 시스템 안의 구체 유형으로 구현하는 추상 유형일 수도 있어요. 후자의 예로 호스트 카탈로그는 추상 유형이고 정적 호스트 카탈로그는 구체 유형이에요.

권한 관점에서 모든 작업은 직접 구현된 유형 또는 추상 유형에 대해 일어나요. 일부 구체 유형만 구현하는 작업이 있을 수 있어요. 예를 들어 모든 인증 메서드 구현이 change-password 작업을 지원하는 것은 아니에요. 하지만 권한 모델은 여전히 이러한 기능을 추상 유형 수준에서 정의해요.

아주 높은 수준에서, Boundary에서 그랜트 문자열(grant strings)로 권한을 선언하고 역할(roles)로 주체(principal)에 매핑해요.

그랜트 문자열 (Grant strings)

각 그랜트 문자열은 리소스 또는 리소스 집합과 그 리소스에 부여되어야 할 권한을 설명하는 매핑이에요.

그랜트 문자열은 다음과 유사한 형태를 가져요.

ids=<id>;type=<type>;actions=<action list>;output_fields=<fields list>

셀렉터는 특정 ID나 와일드카드 ID, 그리고 유형 셀렉터를 사용해서 그랜트가 적용되어야 할 리소스를 나타내는 데 사용돼요.

그랜트 문자열은 사람이 읽기 쉬운 문자열 구문이나 JSON으로 제공할 수 있어요.

할당 가능한 권한 (Assigned permissions)

ID 또는 유형 셀렉터로 식별되는 모든 Boundary 리소스에 대해 사용자에게 권한을 부여할 수 있어요. 두 가지 유형의 할당된 권한이 있어요.

  • id와 type이 일치하는 리소스에 대해 클라이언트가 수행하도록 허용할 작업을 나타내는 actions 필드.
  • 응답에서 반환할 최상위 필드를 나타내는 output_fields 필드.

역할 (Roles)

역할은 그랜트 문자열을 사용자, 그룹, 관리 그룹인 주체(principal)에 매핑해요. 모든 역할은 역할의 그랜트 스코프 ID에 의해 결정되는 스코프 안에서 그랜트를 할당해요. 스코프는 리소스의 논리적 그룹화예요. 스코프를 사용하면 리소스를 분할하고 그 리소스의 소유권을 주체에 할당할 수 있어요.

여러 스코프의 리소스에 접근해야 하는 사용자에게 권한을 부여하기 위해 역할을 여러 스코프에 할당할 수 있어요. 자식 스코프는 부모로부터 역할을 상속할 수 있어요. 예를 들어 global 스코프는 "org"라고 불리는 여러 자식 스코프를 가질 수 있어요. global 스코프에서 역할을 만들 때 자식 org 스코프에도 적용되도록 구성할 수 있어요.

사용자가 요청을 하면 클라이언트가 스코프를 제공하거나 Boundary가 리소스 ID로 조회할 수 있어요. 이 스코프 ID는 사용자 ID와 사용자가 속한 그룹의 ID와 함께, 요청에 대한 그랜트를 제공하기 위해 Boundary가 가져오는 역할을 제어해요.

역할이 요청에 대한 그랜트를 제공하는 경우는 그랜트 스코프 ID가 요청의 스코프 ID와 일치하고 다음 중 하나 이상이 참일 때예요.

  • 사용자 ID가 역할에 설정된 주체 ID에 포함됨.
  • 사용자가 속한 그룹이 역할에 설정된 주체 ID에 포함됨.
  • 사용자가 로그인되어 있고 u_auth 사용자가 역할에 설정된 주체 ID에 포함됨.
  • 역할이 역할에 설정된 주체 ID에 u_anon 사용자를 포함함.

역할은 구성 가능하며, 사용자의 최종 그랜트 집합은 모든 일치하는 역할에서 비롯된 그랜트로 구성돼요.

더 알아보기 (More information)

다음 단계 (Next steps)

  • 권한을 할당하기 전에 주체는 인증할 계정이 필요해요. 인증 구성(비밀번호, OIDC, LDAP 인증 메서드 설정)을 참고해요.
  • 리소스를 논리적으로 그룹화하는 스코프를 만들려면 스코프를 그룹화하려면 참고해요.
  • 역할을 구성하고 사용자와 그룹에 권한 스코프를 부여하려면 역할로 접근 관리 참고해요.