GCS 데이터에 안전하게 액세스하기
이 가이드는 Google Cloud Storage(GCS)에 안전하게 인증을 수행하고 ClickHouse Cloud에서 데이터에 접근하는 방법을 설명합니다.
소개
ClickHouse Cloud는 Google Cloud 서비스 계정에 연결된 HMAC(Hash-based Message Authentication Code) 키를 사용하여 GCS에 연결합니다. 이 방식은 쿼리에 자격 증명을 직접 포함하지 않고도 GCS 버킷에 안전하게 액세스할 수 있도록 합니다.
동작 방식은 다음과 같습니다.
- 적절한 GCS 권한을 가진 Google Cloud 서비스 계정을 생성합니다.
- 해당 서비스 계정에 대한 HMAC 키를 생성합니다.
- 이 HMAC 자격 증명을 ClickHouse Cloud에 제공합니다.
- ClickHouse Cloud는 이 자격 증명을 사용하여 GCS 버킷에 액세스합니다.
이 방식은 서비스 계정에 대한 IAM 정책을 통해 GCS 버킷에 대한 모든 액세스를 관리할 수 있게 하여, 개별 버킷 정책을 수정하지 않고도 액세스 권한을 부여하거나 취소하기를 더 쉽게 만듭니다.
사전 준비 사항
이 가이드를 따라 진행하려면 다음이 필요합니다.
- 활성 상태인 ClickHouse Cloud 서비스
- Cloud Storage가 활성화된 Google Cloud 프로젝트
- GCP 프로젝트에서 서비스 계정을 만들고 HMAC 키를 생성할 수 있는 권한
설치 및 설정
Google Cloud 서비스 계정 생성하기
- Google Cloud 콘솔에서 IAM & Admin → Service Accounts로 이동합니다.

- 왼쪽 메뉴에서
Service accounts를 클릭한 다음,Create service account를 클릭합니다:

서비스 계정의 이름과 설명을 입력하세요. 예를 들면 다음과 같습니다:
Create and continue를 클릭하세요

서비스 계정에 Storage Object User 역할을 부여하세요:

이 역할은 GCS 객체에 대한 읽기 및 쓰기 액세스를 제공합니다
읽기 전용 액세스를 위해서는 Storage Object Viewer를 사용하세요
더 세밀한 제어를 위해서는 커스텀 역할을 생성할 수 있습니다
Continue를 클릭한 다음 Done을 클릭하세요
서비스 계정 이메일 주소를 기록해 두세요:

서비스 계정에 버킷 액세스 권한 부여하기
프로젝트 수준 또는 개별 버킷 수준에서 액세스 권한을 부여하실 수 있습니다.
옵션 1: 특정 버킷에 대한 액세스 권한 부여(권장)
Cloud Storage→Buckets로 이동하십시오- 액세스 권한을 부여할 버킷을 클릭하십시오
Permissions탭으로 이동하세요- 「Permissions」에서 이전 단계에서 생성한 principal에 대해
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」를 클릭하십시오
프로젝트 전체 권한이 아닌 ClickHouse가 접근해야 하는 특정 버킷에만 액세스 권한을 부여하세요.
서비스 계정용 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://는 사용할 수 없음).
HMAC 키는 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 키를 삭제합니다
Google Cloud는 HMAC 키 만료를 강제하지 않으므로, 로테이션 정책을 직접 구현해야 합니다.
Cloud Audit Logs로 액세스 모니터링
Cloud Storage에 대해 Cloud Audit Logs를 활성화하고 모니터링합니다.
- IAM & Admin → Audit Logs로 이동합니다.
- 목록에서 Cloud Storage를 찾습니다.
Admin Read,Data Read,Data Write logs를 활성화합니다.- 이러한 로그를 사용하여 액세스 패턴을 모니터링하고 이상 징후를 탐지합니다.