소개
- 적절한 GCS 권한이 있는 Google Cloud 서비스 계정을 생성합니다
- 해당 서비스 계정에 대한 HMAC 키를 생성합니다
- 이 HMAC 자격 증명을 ClickHouse Cloud에 제공합니다
- ClickHouse Cloud는 이 자격 증명을 사용해 GCS 버킷에 액세스합니다
사전 요구 사항
- 활성 상태인 ClickHouse Cloud 서비스
- Cloud Storage가 활성화된 Google Cloud 프로젝트
- GCP 프로젝트에서 서비스 계정을 생성하고 HMAC 키를 생성할 수 있는 권한
설정
Google Cloud 서비스 계정 생성
- Google Cloud Console에서 IAM & Admin → Service Accounts로 이동합니다.
- 왼쪽 메뉴에서
Service accounts를 클릭한 다음Create service account를 클릭합니다.
Create and continue를 클릭합니다서비스 계정에 Storage Object User 역할을 부여합니다:이 역할은 GCS 객체에 대한 읽기 및 쓰기 액세스를 제공합니다Continue를 클릭한 다음 Done을 클릭합니다서비스 계정 이메일 주소를 기록해 두세요:서비스 계정에 버킷 액세스 권한 부여
프로젝트 수준 또는 개별 버킷 수준에서 액세스 권한을 부여할 수 있습니다.옵션 1: 특정 버킷에 액세스 권한 부여(권장)
Cloud Storage→Buckets로 이동합니다- 액세스 권한을 부여할 버킷을 클릭합니다
Permissions탭으로 이동합니다- “Permissions” 아래에서 이전 단계에서 생성한 주체에 대해
Grant access를 클릭합니다 - “New principals” 필드에 서비스 계정 이메일을 입력합니다
- 적절한 역할을 선택합니다:
- 읽기/쓰기 권한의 경우 Storage Object User
- 읽기 전용 권한의 경우 Storage Object Viewer
Save를 클릭합니다- 추가 버킷이 있으면 같은 과정을 반복합니다
옵션 2: 프로젝트 수준 권한 부여
IAM & Admin→IAM으로 이동합니다Grant access를 클릭합니다New principals필드에 서비스 계정 이메일을 입력합니다- Storage Object User를 선택합니다(읽기 전용이면 Storage Object Viewer 선택)
SAVE를 클릭합니다
서비스 계정의 HMAC 키 생성
Cloud Storage → Settings → Interoperability로 이동합니다:“Access keys” 섹션이 보이지 않으면 Enable interoperability access를 클릭하십시오.“Access keys for service accounts” 아래에서 Create a key for a service account를 클릭합니다:앞서 생성한 서비스 계정을 선택합니다(예: clickhouse-gcs-access@your-project.iam.gserviceaccount.com).Create key를 클릭합니다:HMAC 키가 표시됩니다.
Access Key와 Secret은 즉시 저장하십시오. Secret은 이후 다시 확인할 수 없습니다.아래에 예시 키가 표시됩니다:ClickHouse Cloud에서 HMAC 키 사용하기
이제 HMAC 자격 증명을 사용해 ClickHouse Cloud에서 GCS에 액세스할 수 있습니다. 이를 위해 GCS 테이블 함수를 사용하십시오:GCS용 ClickPipes의 HMAC 인증
ClickPipes는 Google Cloud Storage에 인증하기 위해 HMAC(Hash-based Message Authentication Code) 키를 사용합니다.GCS ClickPipe를 설정할 때:- ClickPipe 설정 중
Authentication method에서Credentials를 선택합니다 - 앞선 단계에서 획득한 HMAC 자격 증명을 입력합니다
현재 서비스 계정 인증은 지원되지 않으므로 HMAC 키를 사용해야 합니다
GCS 버킷 URL은
https://storage.googleapis.com/<bucket>/<path> 형식이어야 합니다(gs:// 형식은 지원되지 않음)roles/storage.objectViewer 역할이 부여된 서비스 계정에 연결되어 있어야 하며, 이 역할에는 다음 권한이 포함됩니다:storage.objects.list: 버킷의 객체 목록을 조회storage.objects.get: 객체를 가져오거나 읽기
권장 사항
환경별로 별도의 서비스 계정 사용
clickhouse-gcs-dev@project.iam.gserviceaccount.comclickhouse-gcs-staging@project.iam.gserviceaccount.comclickhouse-gcs-prod@project.iam.gserviceaccount.com
최소 권한 원칙 적용
- 읽기 전용 액세스에는 Storage Object Viewer를 사용하세요
- 프로젝트 전체가 아니라 특정 버킷에만 액세스 권한을 부여하세요
- 버킷 수준 조건을 사용하여 특정 경로로의 액세스를 제한하는 방안을 고려하세요
HMAC 키를 정기적으로 교체하십시오
- 새 HMAC 키 생성
- 새 키로 ClickHouse 구성 업데이트
- 새 키가 정상적으로 작동하는지 확인
- 기존 HMAC 키 삭제
Cloud Audit Logs로 액세스 모니터링
- IAM & Admin → Audit Logs로 이동합니다
- 목록에서 Cloud Storage를 찾습니다
Admin Read,Data Read,Data Write logs를 활성화합니다- 이 로그를 사용해 액세스 패턴을 모니터링하고 이상 징후를 탐지합니다