이 페이지는 ClickHouse Cloud에는 적용되지 않습니다. 여기에서 설명하는 기능은 ClickHouse Cloud 서비스에서 지원되지 않습니다.
자세한 내용은 ClickHouse의 Cloud Compatibility 가이드를 참조하십시오.
users.xml또는 로컬 액세스 제어 경로에 정의된 기존 사용자에 대해 LDAP를 외부 인증자로 사용합니다.- LDAP를 외부 사용자 디렉터리로 사용하고, 로컬에 정의되지 않은 사용자라도 LDAP 서버에 존재하면 인증을 허용합니다.
LDAP 서버 정의
config.xml에 ldap_servers 섹션을 추가해야 합니다.
예시
ldap_servers 섹션에서는 서로 다른 이름으로 여러 LDAP 서버를 정의할 수 있습니다.
매개변수
user_dn_detection 하위 매개변수
bind된 사용자의 실제 user DN을 감지하기 위한 LDAP search 매개변수 섹션입니다. 이는 주로 서버가 Active Directory인 경우, 추가 역할 매핑을 위한 검색 필터에서 사용됩니다. 검색 결과로 얻은 user DN은 허용되는 모든 위치에서 {user_dn} 부분 문자열을 대체할 때 사용됩니다. 기본적으로 user DN은 bind DN과 동일하게 설정되지만, 검색이 수행되면 실제로 감지된 user DN 값으로 갱신됩니다.
LDAP 외부 인증
users.xml 또는 로컬 액세스 제어 경로(local access control paths)에 정의된 사용자)의 비밀번호를 확인하는 방법으로 사용할 수 있습니다. 이를 위해 사용자 정의에서 password 또는 유사한 섹션 대신, 미리 정의된 LDAP 서버 이름을 지정하십시오.
로그인을 시도할 때마다 ClickHouse는 제공된 자격 증명을 사용해 LDAP 서버 정의의 bind_dn 매개변수에 지정된 DN으로 “bind”를 시도하며, 성공하면 해당 사용자는 인증된 것으로 간주됩니다. 이를 흔히 “simple bind” 방식이라고 합니다.
예시
my_user는 my_ldap_server를 참조합니다. 이 LDAP 서버는 앞서 설명한 대로 기본 config.xml 파일에 구성되어 있어야 합니다.
SQL 기반 액세스 제어 및 계정 관리가 활성화된 경우, LDAP 서버로 인증되는 사용자도 CREATE USER SQL 문을 사용해 생성할 수 있습니다.
Query
LDAP 외부 사용자 디렉터리
config.xml 파일의 users_directories 섹션 내 ldap 섹션에 미리 정의된 LDAP 서버 이름(LDAP 서버 정의 참조)을 지정하십시오.
로그인을 시도할 때마다 ClickHouse는 먼저 로컬에서 사용자 정의 정보를 찾고 평소와 같이 인증을 시도합니다. 사용자가 정의되어 있지 않으면 ClickHouse는 해당 정의 정보가 외부 LDAP 디렉터리에 있다고 가정하고, 제공된 자격 증명을 사용해 LDAP 서버의 지정된 DN에 “bind”를 시도합니다. 이 작업이 성공하면 해당 사용자는 존재하며 인증된 것으로 간주됩니다. 사용자에게는 roles 섹션에 지정된 역할 목록이 할당됩니다. 또한 role_mapping 섹션도 구성되어 있으면 LDAP “search”를 수행할 수 있으며, 그 결과를 변환해 역할 이름으로 취급한 뒤 사용자에게 할당할 수 있습니다. 이는 SQL 기반 액세스 제어 및 계정 관리가 활성화되어 있고, CREATE ROLE SQL 문을 사용해 역할이 생성되어 있음을 의미합니다.
예시
다음 내용은 config.xml에 추가합니다.
user_directories 섹션 내부의 ldap 섹션에서 참조하는 my_ldap_server는 config.xml에 구성된, 미리 정의된 LDAP 서버여야 합니다(LDAP 서버 정의 참조).
매개변수
role_mapping 하위 매개변수
LDAP search 매개변수와 매핑 규칙이 있는 섹션입니다. 사용자가 인증하면, 아직 LDAP에 바인딩된 상태에서 search_filter와 로그인한 사용자 이름을 사용해 LDAP search를 수행합니다. 이 검색에서 찾은 각 엔트리에 대해 지정된 속성 값을 추출합니다. 지정된 접두사가 있는 각 속성 값에서는 해당 접두사를 제거하며, 나머지 값은 ClickHouse에 정의된 로컬 역할 이름이 됩니다. 이 역할은 CREATE ROLE 문으로 미리 생성되어 있어야 합니다. 동일한 ldap 섹션 안에 여러 개의 role_mapping 섹션을 정의할 수 있습니다. 이들은 모두 적용됩니다.