ClickHouse에서 LDAP 인증 및 역할 매핑 구성하기
ClickHouse에서 LDAP 인증 및 역할 매핑 구성하기 (Configuring ClickHouse to use LDAP for authentication and role mapping)
ClickHouse를 구성해 LDAP으로 ClickHouse 데이터베이스 사용자를 인증할 수 있어요. 이 가이드는 공개 디렉터리에 인증하는 LDAP 시스템과 ClickHouse를 연동하는 간단한 예시를 제공합니다.
출처: 문서
본문
이 페이지는 ClickHouse Cloud에는 적용되지 않아요. 여기서 설명하는 기능은 ClickHouse Cloud 서비스에서는 사용할 수 없습니다.
ClickHouse Cloud Compatibility 가이드를 함께 참고해 주세요.
ClickHouse를 구성해 LDAP으로 ClickHouse 데이터베이스 사용자를 인증할 수 있습니다. 이 가이드는 공개적으로 접근 가능한 디렉터리에 인증하는 LDAP 시스템과 ClickHouse를 연동하는 간단한 예시를 제공해요.
1
ClickHouse에서 LDAP 연결 설정 구성하기
-
이 공개 LDAP 서버에 대한 연결을 테스트합니다:
$ ldapsearch -x -b dc=example,dc=com -H ldap://ldap.forumsys.com응답은 대략 다음과 같습니다:
# extended LDIF # # LDAPv3 # base <dc=example,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # example.com dn: dc=example,dc=com objectClass: top objectClass: dcObject objectClass: organization o: example.com dc: example ... -
config.xml파일을 편집하고 다음 내용을 추가해 LDAP을 구성합니다:<ldap_servers> <test_ldap_server> <host>ldap.forumsys.com</host> <port>389</port> <bind_dn>uid={user_name},dc=example,dc=com</bind_dn> <enable_tls>no</enable_tls> <tls_require_cert>never</tls_require_cert> </test_ldap_server> </ldap_servers>
<test_ldap_server> 태그는 특정 LDAP 서버를 식별하기 위한 임의의 라벨입니다.
위에서 사용된 기본 설정은 다음과 같습니다:
| 파라미터 | 설명 | 예시 |
|---|---|---|
| host | LDAP 서버의 호스트명 또는 IP | ldap.forumsys.com |
| port | LDAP 서버의 디렉터리 포트 | 389 |
| bind_dn | 사용자로 가는 템플릿 경로 | uid={user_name},dc=example,dc=com |
| enable_tls | 보안 ldap 사용 여부 | no |
| tls_require_cert | 연결에 인증서가 필요한지 여부 | never |
이 예시에서는 공개 서버가 389 포트를 사용하고 보안 포트를 사용하지 않으므로, 데모 목적으로 TLS를 비활성화합니다.
LDAP 설정에 대한 자세한 내용은 LDAP 문서 페이지를 참고하세요.
-
사용자 역할 매핑을 구성하려면
<user_directories>섹션에<ldap>섹션을 추가합니다. 이 섹션은 사용자가 언제 인증되고 어떤 역할을 받을지를 정의합니다. 이 기본 예시에서 LDAP에 인증하는 모든 사용자는 나중에 ClickHouse에서 정의할scientists_role역할을 받게 됩니다. 섹션은 다음과 비슷해야 합니다:<user_directories> <users_xml> <path>users.xml</path> </users_xml> <local_directory> <path>/var/lib/clickhouse/access/</path> </local_directory> <ldap> <server>test_ldap_server</server> <roles> <scientists_role /> </roles> <role_mapping> <base_dn>dc=example,dc=com</base_dn> <search_filter>(&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))</search_filter> <attribute>cn</attribute> </role_mapping> </ldap> </user_directories>위에서 사용된 기본 설정은 다음과 같습니다:
파라미터 설명 예시 server 이전 ldap_servers 섹션에서 정의한 라벨 test_ldap_server roles 사용자가 매핑될 ClickHouse에 정의된 역할 이름 scientists_role base_dn 사용자가 속한 그룹 검색을 시작할 기본 경로 dc=example,dc=com search_filter 사용자 매핑을 위해 선택할 그룹을 식별하는 ldap 검색 필터 (&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))attribute 값이 반환되어야 하는 속성 이름 cn -
설정을 적용하려면 ClickHouse 서버를 재시작합니다.
2
ClickHouse 데이터베이스 역할과 권한 구성하기
이 섹션의 절차는 ClickHouse에서 SQL 접근 제어 및 계정 관리가 활성화되어 있다고 가정합니다. 활성화하려면 SQL 사용자와 역할 가이드를 참고하세요.
-
config.xml파일의 역할 매핑 섹션에서 사용한 것과 같은 이름으로 clickhouse에 역할을 만듭니다CREATE ROLE scientists_role; -
역할에 필요한 권한을 부여합니다. 다음 문은 LDAP을 통해 인증할 수 있는 모든 사용자에게 관리 권한을 부여합니다:
GRANT ALL ON *.* TO scientists_role;
3
LDAP 설정 테스트하기
-
ClickHouse 클라이언트로 로그인합니다
$ clickhouse-client --user einstein --password password ClickHouse client version 22.2.2.1. Connecting to localhost:9000 as user einstein. Connected to ClickHouse server version 22.2.2 revision 54455. chnode1 :)
1단계의 ldapsearch 명령을 사용해 디렉터리에 있는 모든 사용자를 확인할 수 있고, 모든 사용자의 비밀번호는 password입니다.
-
사용자가
scientists_role역할에 올바르게 매핑되었고 관리 권한이 있는지 테스트합니다SHOW DATABASESQuery id: 93b785ff-1482-4eda-95b0-b2d68b2c5e0f ┌─name───────────────┐ │ INFORMATION_SCHEMA │ │ db1_mysql │ │ db2 │ │ db3 │ │ db4_mysql │ │ db5_merge │ │ default │ │ information_schema │ │ system │ └────────────────────┘ 9 rows in set. Elapsed: 0.004 sec.
요약 (Summary)
이 문서는 LDAP 서버에 인증하도록 ClickHouse를 구성하고 역할에 매핑하는 기본적인 내용을 보여줬습니다. ClickHouse에서 개별 사용자를 구성하되 자동 역할 매핑 없이 LDAP으로 인증되도록 하는 옵션도 있습니다. LDAP 모듈을 Active Directory 연결에도 사용할 수 있어요.