이 가이드는 SSL 사용자 인증서를 사용한 인증을 구성하기 위한 간단한 최소 설정을 제공합니다. 이 튜토리얼은 TLS 구성 사용자 가이드를 기반으로 합니다.
SSL 사용자 인증서 생성
- Certificate Signing Request(CSR)와 키를 생성합니다. 기본 형식은 다음과 같습니다:
이 예시에서는 샘플 환경에서 사용할 도메인과 사용자에 대해 다음 값을 사용합니다:openssl req -newkey rsa:2048 -nodes -subj "/CN=<my_host>:<my_user>" -keyout <my_cert_name>.key -out <my_cert_name>.csropenssl req -newkey rsa:2048 -nodes -subj "/CN=chnode1.marsnet.local:cert_user" -keyout chnode1_cert_user.key -out chnode1_cert_user.csr
- 인증에 사용할 새 사용자 인증서를 생성하고 서명합니다. 기본 형식은 다음과 같습니다:
이 예시에서는 샘플 환경에서 사용할 도메인과 사용자에 대해 다음 값을 사용합니다:openssl x509 -req -in <my_cert_name>.csr -out <my_cert_name>.crt -CA <my_ca_cert>.crt -CAkey <my_ca_cert>.key -days 365openssl x509 -req -in chnode1_cert_user.csr -out chnode1_cert_user.crt -CA marsnet_ca.crt -CAkey marsnet_ca.key -days 365
SQL 사용자 생성 및 권한 부여
-
인증서 인증을 사용하도록 정의된 SQL 사용자를 생성합니다:
CREATE USER cert_user IDENTIFIED WITH ssl_certificate CN 'chnode1.marsnet.local:cert_user'; -
새 인증서 사용자에게 권한을 부여합니다:
GRANT ALL ON *.* TO cert_user WITH GRANT OPTION;
테스트
-
사용자 인증서, 사용자 키, CA 인증서를 원격 노드에 복사합니다.
-
인증서와 경로를 사용하도록 ClickHouse 클라이언트 구성에서 OpenSSL을 구성합니다.
<openSSL> <client> <certificateFile>my_cert_name.crt</certificateFile> <privateKeyFile>my_cert_name.key</privateKeyFile> <caConfig>my_ca_cert.crt</caConfig> </client> </openSSL> -
clickhouse-client를 실행합니다.clickhouse-client --user <my_user> --query 'SHOW TABLES'
HTTP 테스트
-
사용자 인증서, 사용자 키, 그리고 CA 인증서를 원격 노드에 복사합니다.
-
curl을 사용하여 예시 SQL 명령을 테스트합니다. 기본 형식은 다음과 같습니다:echo 'SHOW TABLES' | curl 'https://<clickhouse_node>:8443' --cert <my_cert_name>.crt --key <my_cert_name>.key --cacert <my_ca_cert>.crt -H "X-ClickHouse-SSL-Certificate-Auth: on" -H "X-ClickHouse-User: <my_user>" --data-binary @-예를 들면 다음과 같습니다:
echo 'SHOW TABLES' | curl 'https://chnode1:8443' --cert chnode1_cert_user.crt --key chnode1_cert_user.key --cacert marsnet_ca.crt -H "X-ClickHouse-SSL-Certificate-Auth: on" -H "X-ClickHouse-User: cert_user" --data-binary @-출력은 다음과 비슷합니다:
INFORMATION_SCHEMA default information_schema system
요약
이 문서에서는 SSL 인증서 인증용 사용자를 생성하고 구성하는 기본 사항을 설명했습니다. 이 방법은 clickhouse-client 또는 https 인터페이스를 지원하고 HTTP 헤더를 설정할 수 있는 모든 클라이언트에서 사용할 수 있습니다. 생성된 인증서와 키는 ClickHouse 데이터베이스에서 사용자 인증 및 작업 권한 부여에 사용되므로, 외부에 노출되지 않도록 하고 접근 권한을 제한해야 합니다. 인증서와 키는 비밀번호와 동일하게 취급하십시오.