Ken
엔터프라이즈 환경에서 클라우드 데이터 웨어하우스를 운영할 때, 네트워크 보안은 가장 중요한 고려 사항 중 하나입니다. ClickHouse Cloud는 AWS PrivateLink, GCP Private Service Connect, Azure Private Link를 통해 퍼블릭 인터넷을 거치지 않고 안전하게 연결할 수 있는 방법을 제공합니다. 이 글에서는 Private Link의 개념부터 실제 구성 방법까지 상세히 알아보겠습니다.
- 1. Private Link Connectivity의 이해
- 1.1 Private Link의 단방향성
- 1.2 ClickHouse의 데이터 입수 방법
- 1.3 ClickHouse Cloud의 Private Link 유형
- 2. ClickHouse Cloud Private Link 기능 제공 현황 (2025.12)
- 2.1 ClickPipes Reverse Private Link
- 지원 데이터 소스
- 사용 용도
- 구성 방법
- 2.2 CSP Endpoint Private Link
- 주요 지원 현황
- 사용 용도
- 구성 방법 - AWS
- 2.3 ClickHouse Reverse Private Link의 필요성
- 영향받는 기능들
- 해결 방안
- 3. Private Link와 TLS(SSL Certificate)의 이해
- 3.1 TLS 필수 요구사항
- 3.2 Kafka 연동 시 TLS 구성
- 아키텍처
- Step 1: Kafka Broker TLS 활성화 (권장)
- Step 2: AWS ACM을 활용한 NLB SSL Termination
- ⚠️ 중요: Advertised Listeners 설정
- 4. 마무리
- 핵심 요약
- 권장 접근 방식
- 참고 문서 링크
1. Private Link Connectivity의 이해
1.1 Private Link의 단방향성
Private Link를 이해하는 데 있어 가장 핵심적인 개념은 **단방향성(Unidirectional)**입니다. AWS의 공식 문서에 따르면, Private Link는 Consumer VPC에서 Provider VPC로의 단방향 접근만 허용합니다.
이러한 단방향성은 보안 관점에서 장점이지만, ClickHouse가 외부 데이터 소스에 접근해야 하는 시나리오에서는 제약이 됩니다.
1.2 ClickHouse의 데이터 입수 방법
ClickHouse Cloud로 데이터를 가져오는 방법은 크게 Push 방식과 Pull 방식으로 나눌 수 있습니다.
Push 방식은 외부에서 ClickHouse로 데이터를 밀어넣는 방식으로, 기존 CSP Endpoint Private Link로 충분히 지원됩니다. 반면 Pull 방식은 ClickHouse가 외부 데이터 소스를 직접 읽어오는 방식으로, Reverse Private Link가 필요한 영역입니다.
1.3 ClickHouse Cloud의 Private Link 유형
ClickHouse Cloud에서 제공하는 Private Link는 세 가지 유형으로 구분됩니다.
2. ClickHouse Cloud Private Link 기능 제공 현황 (2025.12)
2.1 ClickPipes Reverse Private Link
ClickPipes는 ClickHouse Cloud의 관리형 데이터 수집 서비스입니다. 2024년 12월부터 AWS PrivateLink와 VPC Lattice를 활용한 cross-VPC 리소스 접근을 지원합니다.
지원 데이터 소스
데이터 소스 | VPC Resource | MSK Multi-VPC | VPC Endpoint Service |
Kafka | ✅ | ✅ | ✅ |
PostgreSQL CDC | ✅ | - | ✅ |
MySQL CDC | ✅ | - | ✅ |
MongoDB | ✅ | - | ✅ |
사용 용도
ClickPipes Reverse Private Link는 고객의 VPC 내에 있는 데이터 소스로부터 ClickPipes가 데이터를 Pull하여 ClickHouse Cloud로 수집하는 용도로 사용됩니다.
구성 방법
ClickPipes Reverse Private Link는 세 가지 AWS PrivateLink 접근 방식을 지원합니다.
방법 1: VPC Resource (권장 - Same Region)
가장 간단한 방법으로, Load Balancer 없이 VPC Lattice를 활용하여 리소스를 공유합니다.
방법 2: MSK Multi-VPC Connectivity (MSK 권장)
AWS MSK의 내장 기능을 활용하여 별도 Load Balancer 없이 연결합니다. Private DNS가 자동으로 지원됩니다.
방법 3: VPC Endpoint Service (Cross-Region, On-premise)
NLB를 설정해야 하지만, Cross-region 연결과 Private DNS를 지원합니다.
📚 공식 문서 참조:
- AWS PrivateLink for ClickPipes
- AWS PrivateLink Setup for MSK ClickPipes
- AWS VPC Lattice Documentation
2.2 CSP Endpoint Private Link
CSP Endpoint Private Link는 고객의 Application에서 ClickHouse Cloud로 접속할 때 사용하는 전통적인 Private Link입니다.
주요 지원 현황
CSP | 서비스 명 | Cross-Region | Plan 요구사항 |
AWS | AWS PrivateLink | ✅ Beta | Scale, Enterprise |
GCP | Private Service Connect | ✅ (Global Access) | Scale, Enterprise |
Azure | Azure Private Link | ✅ (Native) | Scale, Enterprise |
사용 용도
고객 VPC의 Application에서 ClickHouse Cloud로 데이터를 Push하거나 쿼리를 실행할 때 사용합니다.
구성 방법 - AWS
Step 1: ClickHouse Cloud Console에서 Service Name 확인
Settings → Private Endpoint → Setup PrivateLink Endpoint에서 Service name과 DNS name을 확인합니다.
Step 2: AWS VPC Endpoint 생성
# AWS CLI를 통한 VPC Endpoint 생성
aws ec2 create-vpc-endpoint \
--vpc-id vpc-xxxx \
--service-name <endpointServiceId from ClickHouse> \
--subnet-ids subnet-xxxx subnet-yyyy \
--security-group-ids sg-xxxx \
--vpc-endpoint-type Interface
Step 3: DNS 설정
ClickHouse Cloud의 Private DNS hostname을 VPC Endpoint의 Network Interface로 라우팅되도록 Route 53 Private Hosted Zone을 구성합니다.
Step 4: Endpoint ID를 ClickHouse Allow List에 추가
ClickHouse Cloud Console → Settings → Set up private endpoint에서 생성된 VPC Endpoint ID를 추가합니다.
📚 공식 문서 참조:
- AWS PrivateLink - ClickHouse Docs
- GCP Private Service Connect - ClickHouse Docs
- Azure Private Link - ClickHouse Docs
2.3 ClickHouse Reverse Private Link의 필요성
현재 ClickHouse Cloud는 Reverse Private Link를 직접 지원하지 않습니다. 이는 ClickPipes를 거치지 않고 ClickHouse 서비스가 직접 고객 VPC의 리소스에 접근하는 것이 불가능함을 의미합니다.
영향받는 기능들
Kafka Table Engine 예시:
-- Private VPC의 Kafka에서 직접 읽기 시도 (현재 불가능)
CREATE TABLE kafka_queue (
timestamp DateTime,
level String,
message String
) ENGINE = Kafka
SETTINGS
kafka_broker_list = 'kafka.private.vpc:9092', -- ❌ Private 주소 접근 불가
kafka_topic_list = 'logs',
kafka_group_name = 'clickhouse_consumer',
kafka_format = 'JSONEachRow';
해결 방안
현재 Private 환경에서 Pull 방식이 필요한 경우 다음 대안을 고려해야 합니다.
- ClickPipes 활용: Kafka, PostgreSQL, MySQL CDC의 경우 ClickPipes Reverse Private Link 사용
- Push 방식 전환: Kafka Connect Sink Connector 등을 활용하여 Push 모델로 전환
- S3 경유: 데이터를 S3에 Export 후 ClickHouse에서 읽기 (Secure S3 지원)
- Public Endpoint + IP Allowlist: 보안 수준에 따라 제한적으로 고려
💡 참고: ClickHouse 엔지니어링 팀에서 Reverse Private Endpoint 기능을 개발 중이며, 향후 릴리즈에서 지원될 예정입니다.
3. Private Link와 TLS(SSL Certificate)의 이해
ClickPipes Reverse Private Link를 구성할 때 중요한 점은 Private Link와 별개로 TLS 연결이 필수라는 것입니다.
3.1 TLS 필수 요구사항
ClickPipes는 TLS 연결을 강제합니다. Private Link로 네트워크가 격리되어 있더라도, 데이터 암호화를 위해 TLS가 반드시 활성화되어야 합니다.
3.2 Kafka 연동 시 TLS 구성
Kafka 브로커에 TLS가 구성되어 있지 않은 경우, NLB에서 SSL Termination을 활용할 수 있습니다.
아키텍처
Step 1: Kafka Broker TLS 활성화 (권장)
직접 Kafka에 TLS를 구성하는 것이 가장 권장되는 방법입니다.
# server.properties
listeners=PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9093
advertised.listeners=PLAINTEXT://kafka-broker:9092,SSL://kafka-broker:9093
# SSL 설정
ssl.keystore.location=/etc/kafka/ssl/kafka.keystore.jks
ssl.keystore.password=<password>
ssl.key.password=<password>
ssl.truststore.location=/etc/kafka/ssl/kafka.truststore.jks
ssl.truststore.password=<password>
Step 2: AWS ACM을 활용한 NLB SSL Termination
TLS가 구성되지 않은 Kafka에 연결해야 하는 경우, NLB에서 SSL을 종료할 수 있습니다.
ACM 인증서 생성:
# ACM에서 인증서 요청 (도메인 검증 필요)
aws acm request-certificate \
--domain-name kafka.example.com \
--validation-method DNS \
--subject-alternative-names "*.kafka.example.com"
NLB TLS Listener 구성:
⚠️ 중요: Advertised Listeners 설정
NLB에서 SSL Termination을 사용할 때, Kafka의 advertised.listeners 설정이 반드시 필요합니다. 그렇지 않으면 Kafka가 클라이언트에게 잘못된 broker 주소를 반환하여 연결이 실패합니다.
Kafka advertised.listeners 설정:
# NLB 주소를 advertised.listeners에 포함
listeners=PLAINTEXT://0.0.0.0:9092,EXTERNAL://0.0.0.0:9094
advertised.listeners=PLAINTEXT://kafka-internal:9092,EXTERNAL://nlb.kafka.example.com:9094
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT
📚 공식 문서 참조:
- Kafka Listeners Explained - Confluent
- AWS NLB TLS Termination
- AWS ACM Documentation
4. 마무리
핵심 요약
구분 | CSP Endpoint Private Link | ClickPipes Reverse PL | ClickHouse Reverse PL |
방향 | 고객 → ClickHouse | ClickPipes → 고객 | ClickHouse → 고객 |
지원 상태 | ✅ GA | ✅ GA (AWS) | ❌ 미지원 |
용도 | Push, Query | Pull Ingestion | Table Engine 등 |
CSP | AWS, GCP, Azure | AWS | - |
권장 접근 방식
- Application 연결: CSP Endpoint Private Link 사용
- 데이터 수집 (Kafka, PostgreSQL, MySQL): ClickPipes + Reverse Private Link 사용
- Table Engine 사용 필요 시: Push 모델로 전환하거나 Public Endpoint + IP Allowlist 고려
참고 문서 링크
ClickHouse 공식 문서:
- AWS PrivateLink
- GCP Private Service Connect
- Azure Private Link
- ClickPipes AWS PrivateLink
AWS 공식 문서:
- AWS PrivateLink
- AWS VPC Lattice
- ACM Certificate Manager
기타 참고 자료:
- Kafka Listeners Explained - Confluent Blog
- Configuring mTLS for Apache Kafka
본 문서는 2025년 12월 기준 ClickHouse Cloud의 Private Link 기능을 정리한 것입니다. 최신 정보는 공식 문서를 참조해 주세요.