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 문서를 함께 살펴보세요.