Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

인증 및 역할 매핑에 LDAP를 사용하도록 ClickHouse 구성

ClickHouse Cloud에서 지원되지 않음

ClickHouse는 LDAP를 사용해 ClickHouse 데이터베이스 사용자를 인증하도록 구성할 수 있습니다. 이 가이드에서는 공개적으로 접근 가능한 디렉터리를 대상으로 인증하는 LDAP 시스템과 ClickHouse를 통합하는 간단한 예시를 제공합니다.

ClickHouse에서 LDAP 연결 설정 구성

  1. 이 공개 LDAP 서버에 대한 연결을 테스트합니다:

    $ ldapsearch -x -b dc=example,dc=com -H ldap://ldap.forumsys.com

    응답은 다음과 비슷합니다:

    # 확장 LDIF
    #
    # LDAPv3
    # base <dc=example,dc=com>, scope subtree
    # filter: (objectclass=*)
    # 요청 항목: ALL
    #
    
    # example.com
    dn: dc=example,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    o: example.com
    dc: example
    ...
  2. 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>

위에서 사용한 기본 설정은 다음과 같습니다:

Parameter Description Example
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
  1. 사용자 역할 매핑을 구성하려면 <user_directories> 섹션에 <ldap> 섹션을 추가합니다. 이 섹션은 사용자가 인증될 때와 사용자에게 어떤 역할이 부여되는지를 정의합니다. 이 기본 예시에서는 LDAP로 인증하는 모든 사용자에게 scientists_role이 부여되며, 이 역할은 이후 단계에서 ClickHouse에 정의됩니다. 섹션은 다음과 비슷해야 합니다:

    <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>(&amp;(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))</search_filter>
                 <attribute>cn</attribute>
              </role_mapping>
        </ldap>
    </user_directories>

    위에서 사용한 기본 설정은 다음과 같습니다:

    Parameter Description Example
    server 앞의 ldap_servers 섹션에서 정의한 레이블 test_ldap_server
    roles 사용자가 매핑될 ClickHouse에서 정의된 역할 이름 scientists_role
    base_dn 사용자와 연결된 그룹 검색을 시작할 기본 경로 dc=example,dc=com
    search_filter 사용자 매핑에 사용할 그룹을 식별하는 LDAP search filter (&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))
    attribute 값을 반환할 속성 이름 cn
  2. 설정을 적용하려면 ClickHouse 서버를 다시 시작합니다.

ClickHouse 데이터베이스 역할 및 권한 구성

  1. config.xml 파일의 역할 매핑 섹션에서 사용한 것과 동일한 이름으로 ClickHouse에서 역할을 생성합니다.

    CREATE ROLE scientists_role;
  2. 역할에 필요한 권한을 부여합니다. 다음 문은 LDAP를 통해 인증할 수 있는 모든 사용자에게 관리자 권한을 부여합니다.

    GRANT ALL ON *.* TO scientists_role;

LDAP 구성을 테스트합니다

  1. ClickHouse client로 로그인합니다
    $ 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. 사용자가 scientists_role 역할에 올바르게 매핑되었고 관리자 권한을 가지고 있는지 테스트합니다

    SHOW DATABASES
    Query 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.

요약

이 문서에서는 ClickHouse가 LDAP 서버에 인증하도록 구성하고 역할(Role)에 매핑하는 기본 사항을 설명했습니다. 또한 ClickHouse에서 개별 사용자를 구성하되 자동 역할 매핑을 설정하지 않고도 해당 사용자가 LDAP로 인증되도록 할 수 있는 옵션도 있습니다. LDAP 모듈은 Active Directory에 연결하는 데에도 사용할 수 있습니다.

Navigation