Group mapping

Group mapping (그룹 매핑)

Trino에서 사용자 이름을 그룹에 매핑해 접근 제어와 리소스 그룹 관리를 더 쉽게 하는 그룹 제공자(group provider)에 대해 설명해요.

출처: 문서

본문

Trino의 그룹 제공자는 사용자 이름을 그룹에 매핑해 접근 제어와 리소스 그룹 관리(resource group management)를 더 쉽게 해줘요.

코디네이터에 etc/group-provider.properties 파일을 만들어 그룹 제공자를 구성해요:

group-provider.name=file

group-provider.name의 값은 file 또는 ldap이어야 하며, 선택한 그룹 제공자의 구성은 같은 파일에 포함되어야 해요.

그룹 제공자 구성 (Group provider configuration)

Property name Description
group-provider.name 사용할 그룹 제공자의 이름. 지원 값: file(구성 참고), ldap(구성 참고).
group-provider.group-case 그룹 이름의 대소문자 선택적 변환. 지원 값: keep(기본, 변환 없음), upper(대문자로 변환), lower(소문자로 변환). 기본값은 keep.

접근 제어와의 통합 (Integration with access control)

그룹 제공자가 해석한 그룹은 Trino의 시스템 접근 제어 엔진에 전달돼요. 접근 제어 규칙은 이 그룹 이름을 참조해 권한을 부여하거나 제한할 수 있어요.

파일 그룹 제공자 (File group provider)

파일 그룹 제공자는 코디네이터의 group-provider.properties 파일의 구성으로 그룹 멤버십을 해석해요.

구성 (Configuration)

코디네이터에 etc/group-provider.properties 파일을 만들어 파일 그룹 제공자를 활성화하세요:

group-provider.name=file
file.group-file=/path/to/group.txt

다음 구성 속성을 사용할 수 있어요:

파일 그룹 제공자 구성 (File group provider configuration)

Property name Description
file.group-file 그룹 파일의 경로.
file.refresh-period 파일에서 그룹 매핑 구성을 새로고침하는 간격. 기본값은 5s.

그룹 파일 형식 (Group file format)

그룹 파일에는 한 줄에 하나씩, 콜론으로 구분된 그룹과 멤버의 목록이 들어 있어요. 사용자는 쉼표로 구분돼요.

group_name:user_1,user_2,user_3

LDAP 그룹 제공자 (LDAP group provider)

LDAP 그룹 제공자는 LDAP 서버에서 가져온 구성으로 사용자 그룹 멤버십을 해석해요. 이렇게 하면 개별 사용자 대신 LDAP 그룹을 기준으로 접근 규칙을 정의할 수 있어요.

구성 (Configuration)

코디네이터에 etc/group-provider.properties 파일을 만들어 LDAP 그룹 제공자를 활성화하고, 다음 섹션에서 자세히 설명하는 LDAP 서버 연결 및 기타 정보를 위한 추가 구성을 넣으세요.

group-provider.name=ldap

일반 LDAP 속성 (Generic LDAP properties)

Property name Description
ldap.url LDAP 서버 URI. 예: ldap://host:389 또는 ldaps://host:636.
ldap.allow-insecure LDAP 서버에 보안되지 않은 연결 허용. 기본값은 false.
ldap.ssl.keystore.path PEM 또는 JKS 키 저장소 경로.
ldap.ssl.keystore.password 키 저장소 비밀번호.
ldap.ssl.truststore.path PEM 또는 JKS 트러스트 저장소 경로.
ldap.ssl.truststore.password 트러스트 저장소 비밀번호.
ldap.ignore-referrals Referrals는 여러 LDAP 서버에서 항목을 찾을 수 있게 해줘요. 무시하면 하나의 LDAP 서버 내에서만 검색해요. 기본값은 false.
ldap.timeout.connect 연결을 수립하는 데 걸리는 시간 제한 기간. 기본값은 1m.
ldap.timeout.read LDAP에서 데이터를 읽는 시간 제한 기간. 기본값은 1m.
ldap.admin-user 관리자 사용자의 바인드 distinguished name. 예: CN=UserName,OU=City,OU=State,DC=domain,DC=domain_root
ldap.admin-password 관리자 사용자에 사용하는 바인드 비밀번호.
ldap.user-base-dn 사용자의 기본 distinguished name. 예: dc=example,dc=com.
ldap.user-search-filter 사용자 항목을 찾는 LDAP 필터. {0}은 Trino 사용자 이름으로 대체돼요. 예: (cn={0})
ldap.group-name-attribute 그룹 항목에서 그룹 이름을 추출할 속성. 예: cn.
ldap.use-group-filter 검색 기반 그룹 해석을 사용할지 여부. 기본값은 true. false면 Trino는 속성 기반 방법을 사용해요.

그룹 해석 동작은 ldap.use-group-filter 속성으로 제어돼요. 검색 기반 그룹 해석에서는 Trino가 사용자 DN을 포함하는 그룹 항목을 검색해요. 이 경우 다음 속성이 필요해요:

검색 기반 그룹 해석 (Search-based group resolution)

Property name Description
ldap.group-base-dn 그룹의 기본 distinguished name. 예: dc=example,dc=com.
ldap.group-search-filter 그룹 문서 검색 필터. 예: (cn=trino_*).
ldap.group-search-member-attribute 멤버로 필터링하는 데 사용하는 그룹 문서의 속성. 예: cn.

속성 기반 그룹 해석의 경우 Trino는 사용자 속성에서 그룹 목록을 직접 읽어요. 이 경우 다음 속성이 필요해요:

속성 기반(단일 쿼리) 그룹 해석 (Attribute-based group resolution)

Property name Description
ldap.user-member-of-attribute 사용자 문서의 그룹 멤버십 속성. 예: memberOf.

예시 구성 (Example configurations)

다음 구성은 OpenLDAP(검색 기반) 그룹 제공자의 예시예요:

group-provider.name=ldap
group-provider.group-case=lower

ldap.url=ldap://ldap.example.com:389
ldap.admin-user=cn=admin,dc=example,dc=com
ldap.admin-password=your_password
ldap.group-name-attribute=cn
ldap.user-base-dn=ou=users,dc=example,dc=com
ldap.user-search-filter=(uid={0})
ldap.use-group-filter=true

ldap.group-base-dn=ou=groups,dc=example,dc=com
ldap.group-search-filter=(cn=trino_*)
ldap.group-search-member-attribute=member

다음 구성은 Active Directory(단일 쿼리, 속성 기반) 그룹 제공자의 예시예요:

group-provider.name=ldap
group-provider.group-case=lower

ldap.url=ldaps://ad.example.com:636
ldap.admin-user=cn=admin,dc=example,dc=com
ldap.admin-password=your_password
ldap.group-name-attribute=cn
ldap.user-base-dn=ou=users,dc=example,dc=com
ldap.user-search-filter=(sAMAccountName={0})
ldap.use-group-filter=false

ldap.user-member-of-attribute=memberOf

더 알아보기 (Learn more)

개별 사용자를 매핑하는 방법은 User mapping 문서를 함께 살펴보세요.