HTTP 인증
HTTP 인증 (HTTP)
HTTP 서버를 이용해 ClickHouse 사용자를 인증할 수 있어요. HTTP 인증은 users.xml이나 로컬 접근 제어 경로에 정의된 기존 사용자에 대한 외부 인증기로만 사용할 수 있습니다.
출처: 문서
본문
이 페이지는 ClickHouse Cloud에는 적용되지 않아요. 여기서 설명하는 기능은 ClickHouse Cloud 서비스에서는 사용할 수 없습니다.
ClickHouse Cloud Compatibility 가이드를 함께 참고해 주세요.
HTTP 서버를 사용해 ClickHouse 사용자를 인증할 수 있습니다. HTTP 인증은 users.xml이나 로컬 접근 제어 경로에 정의된 기존 사용자에 대한 외부 인증기로만 사용할 수 있어요. 현재 GET 메서드를 사용하는 Basic 인증 체계를 지원합니다.
HTTP 인증 서버 정의 (HTTP authentication server definition)
HTTP 인증 서버를 정의하려면 config.xml에 http_authentication_servers 섹션을 추가해야 합니다.
예시
<clickhouse>
<!- ... -->
<http_authentication_servers>
<basic_auth_server>
<uri>http://localhost:8000/auth</uri>
<connection_timeout_ms>1000</connection_timeout_ms>
<receive_timeout_ms>1000</receive_timeout_ms>
<send_timeout_ms>1000</send_timeout_ms>
<max_tries>3</max_tries>
<retry_initial_backoff_ms>50</retry_initial_backoff_ms>
<retry_max_backoff_ms>1000</retry_max_backoff_ms>
<forward_headers>
<name>Custom-Auth-Header-1</name>
<name>Custom-Auth-Header-2</name>
</forward_headers>
</basic_auth_server>
</http_authentication_servers>
</clickhouse>
http_authentication_servers 섹션 안에는 서로 다른 이름으로 여러 HTTP 서버를 정의할 수 있다는 점을 기억하세요.
파라미터
uri- 인증 요청을 보내기 위한 URI
서버와 통신하는 데 사용되는 소켓의 타임아웃(밀리초 단위):
connection_timeout_ms- 기본값: 1000 ms.receive_timeout_ms- 기본값: 1000 ms.send_timeout_ms- 기본값: 1000 ms.
재시도 파라미터:
max_tries- 인증 요청을 시도할 최대 횟수. 기본값: 3retry_initial_backoff_ms- 재시도 시 backoff 초기 간격. 기본값: 50 msretry_max_backoff_ms- 최대 backoff 간격. 기본값: 1000 ms
전달 헤더(Forward headers): 이 부분은 클라이언트 요청 헤더 중 어떤 헤더를 외부 HTTP 인증기로 전달할지를 정의합니다. 헤더는 설정 값과 대소문자를 구분하지 않고 매칭되지만, 원본 그대로(수정 없이) 전달된다는 점을 기억하세요.
users.xml에서 HTTP 인증 활성화하기 (Enabling HTTP authentication in users.xml)
사용자에 대해 HTTP 인증을 활성화하려면 사용자 정의에서 password나 유사한 섹션 대신 http_authentication 섹션을 지정하세요.
파라미터:
server- 앞서 설명한 대로 메인config.xml파일에 구성된 HTTP 인증 서버의 이름.scheme- HTTP 인증 체계. 현재는Basic만 지원됩니다. 기본값: Basic
예시 (users.xml에 들어가는 내용):
<clickhouse>
<!- ... -->
<my_user>
<!- ... -->
<http_authentication>
<server>basic_server</server>
<scheme>basic</scheme>
</http_authentication>
</my_user>
</clickhouse>
HTTP 인증은 다른 어떤 인증 메커니즘과도 함께 사용할 수 없습니다. http_authentication 옆에 password 같은 다른 섹션이 존재하면 ClickHouse가 종료됩니다.
SQL로 HTTP 인증 활성화하기 (Enabling HTTP authentication using SQL)
ClickHouse에서 SQL 기반 접근 제어 및 계정 관리가 활성화되면, HTTP 인증으로 식별되는 사용자도 SQL 문으로 만들 수 있습니다.
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server' SCHEME 'Basic'
…또는, 명시적으로 scheme을 정의하지 않으면 Basic이 기본값입니다
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server'
세션 설정 전달하기 (Passing session settings)
HTTP 인증 서버의 응답 본문이 JSON 형식이고 settings 하위 객체를 포함하고 있다면, ClickHouse는 그 key: value 쌍을 문자열 값으로 파싱해 인증된 사용자의 현재 세션에 대한 세션 설정으로 설정하려고 시도합니다. 파싱에 실패하면 서버의 응답 본문은 무시됩니다.