구성 요소
clicklink 바이너리에 내장된 두 개의 데몬을 실행합니다.
- 스크레이퍼는 정해진 간격으로 허용 목록에 있는 ClickHouse 시스템 테이블을 읽고, 결과를 로컬에 버퍼링한 뒤 인프라 메타데이터 및 상태 정보와 함께 커넥터 엔드포인트로 전송합니다.
- 문제 해결 도구는 커넥터 엔드포인트로 연결되는 아웃바운드 명령 채널을 유지하고, 활성 지원 세션 중에 읽기 전용 진단을 실행합니다. 세션 외에는 아무 작업도 수행하지 않습니다.
clicklink)에서 clicklink-connector Helm 차트로 배포된 워크로드로 두 구성 요소가 모두 실행됩니다. Linux VM에서는 권한이 없는 clicklink 시스템 사용자로 clicklink-scraper 및 clicklink-troubleshooter systemd 유닛을 실행합니다.
연결
모든 API 요청에는 메서드, 경로, 타임스탬프 및 본문 해시를 기반으로 계산한 HMAC-SHA256 서명이 포함된
Authorization 헤더가 포함됩니다. 따라서 TLS 채널 내부에서도 요청을 재생하거나 전송 중 변조할 수 없습니다.
인바운드 연결에서 커넥터는 로컬 상태 점검 및 메트릭 포트와 지원 세션 페이지에 설명된 선택적 세션 게이트웨이만 노출합니다. ClickHouse의 컨트롤 플레인은 이들 중 어느 곳에도 연결하지 않습니다.
인증서 수명 주기
- 등록.
clicklink clctl init는 로컬에서 private key와 인증서 서명 요청을 생성합니다. 인증서 서명 요청에는 조직 ID가 공통 이름으로, 엔드포인트 host가 유일한 DNS SAN으로 포함됩니다. private key는 환경 외부로 절대 유출되지 않습니다. - 최초 발급. CSR은 HMAC으로 인증된 상태에서
/v1/pcm/cert/sign등록 서명 엔드포인트로 제출됩니다. 조직에 아직 만료되지 않은 인증서가 있으면 엔드포인트는 409 응답으로 요청을 거부하며, CLI는 기존 인증서로 완료하는 방법 또는--force를 사용하여 의도적으로 대체하는 방법을 출력합니다. - 자동 갱신. 각 데몬은 12시간마다 인증서 lifetime을 확인하며, 남은 기간이 10일이 되면
/v1/pcm/cert/renew(mTLS 및 HMAC)를 통해 갱신된 유효 기간 30일의 인증서를 요청합니다. Kubernetes에서는 각 데몬이 정확한 이름의 RBAC 권한을 통해 갱신된 인증서를clicklink-mtls시크릿에 다시 기록합니다. VM에서는 데몬 사용자가 TLS directory에 쓸 수 있습니다. 갱신을 위해 별도의 작업은 필요하지 않습니다.
데이터 흐름
환경 외부로 전송되는 항목
- 허용 목록에 포함된 시스템 테이블의 메트릭. 스크레이퍼의 기본 대상은
metric_log,asynchronous_metric_log,tables,warnings,server_settings입니다. 허용 목록은 명시적으로 구성되며, 스크레이퍼는 목록에 없는 항목을 읽지 않습니다. - 인프라 메타데이터. API를 통해 동기화되는 인스턴스, 인프라 및 백업 인벤토리입니다.
- 상태 및 자체 메트릭. 구성 요소 상태와 커넥터 자체의 운영 메트릭입니다.
- 지원 세션 출력. 활성화한 세션 중 실행된 읽기 전용 진단 결과이며, 마스킹 후 제공됩니다.
기본적으로 외부로 나가지 않는 항목
- 스크레이프 경로의 원본 쿼리 텍스트.
system.query_log는 쿼리 컬럼에 리터럴 값, PII 또는 시크릿이 포함될 수 있으므로 기본 스크레이프 대상에서 의도적으로 제외됩니다. 이를 다시 추가하는 것은 이러한 점을 인지한 상태에서 수행하는 배포별 재정의입니다. 지원 세션 중에는 기본 테이블 허용 목록에 실행 중인 쿼리 텍스트를 표시하는system.processes가 포함됩니다. 이를 트리밍하는 방법은 지원 세션을 참조하십시오. - 자격 증명. 설정 파일에는 자격 증명이 포함되지 않으며, ClickHouse는 커넥터 사용자의 비밀번호에 대한 bcrypt 해시만 저장합니다. 시크릿은 Kubernetes 시크릿 또는 호스트에서 root만 읽을 수 있는 파일에 유지됩니다. 스크레이프나 동기화 경로를 통해 전송되는 자격 증명은 없습니다.
- 마스킹되지 않은 문제 해결 도구 출력. 문제 해결 도구가 반환하는 모든 항목은 외부로 나가기 전에 내장 패턴과 자체 패턴을 포함한 마스킹 패턴을 거칩니다. 지원 세션을 참조하십시오.
신뢰 경계
- 환경이 경계입니다. ClickHouse Cloud는 스크레이퍼가 전송하는 정보와 활성 지원 세션이 반환하는 정보만 수신합니다. 내부로 연결을 시작하지 않습니다.
- 세션 게이트웨이는 사용자 환경에 있습니다. 인그레스(Ingress)를 통해 노출하도록 선택하지 않는 한, Kubernetes에서는
kubectl port-forward를 통해, VM에서는 로컬에서만 환경 내부에서 접근할 수 있습니다. ClickHouse의 컨트롤 플레인은 여기에 연결하지 않습니다. - ClickHouse 접근은 읽기 전용입니다.
pcm_scraper및pcm_troubleshooter사용자는 테이블별SELECT권한과 로그 테이블을 디스크로 플러시하는 스크레이퍼 전용 시스템 권한 1개만 보유합니다.INSERT, DDL 또는 사용자 관리 권한은 없습니다. 정확한 목록은 권한 모델에서 확인할 수 있습니다. - Kubernetes 접근은 네임스페이스 범위로 제한됩니다. 모든 RBAC는 커넥터 및 인스턴스 네임스페이스의 역할을 통해 부여되며, 워크로드 리소스에는 읽기 전용 동사만 허용되고 커넥터 자체 시크릿에는 정확한 이름으로만 접근할 수 있습니다.
exec,delete,patch권한은 없습니다. - 네트워크 정책. Kubernetes에서 차트는 지정한 CIDR을 제외한 모든 커넥터 이그레스를 차단하는 NetworkPolicy를 렌더링할 수 있습니다. 정책 적용 여부는 클러스터에서 이를 강제하는 CNI를 실행하는지에 따라 달라지며, 그렇지 않으면 정책은 적용되지 않습니다. 구성을 참조하십시오.
- VM의 호스트 강화. 유닛은 로그인할 수 없는 시스템 사용자로 실행되며,
ProtectSystem=strict,NoNewPrivileges, 읽기 전용 구성 경로 및 활성화된 FIPS 모드를 사용합니다.