안전하게 Iceberg 데이터에 액세스하기
ClickHouse Cloud는 ARN 기반 AWS IAM 신뢰 관계를 사용하여 객체 스토리지(일반적으로 S3)에 저장된 Iceberg 데이터에 대해 안전한 역할 기반 접근을 지원합니다. 이 가이드는 S3 데이터에 안전하게 액세스하기와 동일한 보안 설정 패턴을 따르며, ClickHouse에 Iceberg 전용 설정을 추가합니다.
개요
- ClickHouse Cloud 서비스 역할 ID(IAM)를 가져옵니다.
- ClickHouse가 수임할 수 있도록 AWS 계정에 IAM 역할을 생성합니다.
- 역할에 Iceberg 전용 객체 및 카탈로그 정책을 연결합니다.
- 역할 기반 자격 증명으로 Iceberg 테이블 함수 또는 IcebergS3 테이블 엔진을 사용합니다.
ClickHouse 서비스 역할 ID(ARN) 가져오기
1. ClickHouse Cloud 계정에 로그인합니다.
2. Iceberg 데이터를 쿼리할 ClickHouse 서비스를 선택합니다.
3. 설정 탭으로 이동합니다.
4. 네트워크 보안 정보 섹션까지 스크롤합니다.
IAM Assume Role 설정
1. AWS에 로그인하고 IAM 서비스로 이동합니다.
2. Roles를 선택한 다음 Create role을 선택합니다.
Trusted entity type에서 Custom trust policy를 선택하고 3단계의 값에 따라 입력합니다.
3. Trust 정책과 IAM 정책을 추가합니다.
{service-role-id}를 ClickHouse 인스턴스의 Service Role ID (IAM)로 바꾸십시오.
읽기/쓰기 워크로드의 경우 IAM 정책에 s3:PutObject, s3:DeleteObject, 그리고 Iceberg의 메타데이터를 수정하는 작업이 포함되어야 합니다. 위 예시는 보수적인 읽기 전용 구성입니다.
더 강한 격리가 필요하다면 요청이 ClickHouse Cloud VPC 엔드포인트에서 시작되도록 요구하십시오. 이 옵션에 대한 자세한 내용은 Secure S3 advanced action control을 참조하십시오.
4. 역할 생성을 완료합니다.
a. Next를 선택한 다음, 권한 할당 화면에서 Next를 다시 선택합니다.
b. 이름(예: iceberg-role-for-clickhouse)과 설명을 추가합니다.
c. 태그를 추가합니다(선택 사항).
d. 정책을 검토합니다.
e. Create role을 선택합니다.
5. 생성 후 새 IAM Role Arn을 복사합니다.
ClickHouse Cloud에서 Iceberg 액세스 구성
옵션 A: role ARN을 사용하는 Iceberg 테이블 함수
NOSIGN 설정과 역할 기반 자격 증명을 사용하여 icebergS3 테이블 함수를 사용하십시오. ClickHouse Cloud는 역할을 수임하기 위해 STS를 호출합니다.
옵션 B: 영구적 Iceberg 테이블 엔진
옵션 C: Glue 카탈로그 + IcebergS3
주의: Glue 카탈로그를 사용하는 경우 IAM 역할에 S3와 Glue에 대한 읽기 및 목록 조회 권한이 모두 있는지 확인하십시오.
옵션 D: Glue용 DataLake Catalog
DataLake Catalog for Glue는 버전 26.2에서 지원될 예정입니다.
접속 확인
- 간단한 쿼리를 실행하십시오:
AccessDenied또는InvalidAccessKeyId와 같은 IAM 오류가 발생했는지 확인하세요.
문제 해결
- ClickHouse Cloud 서비스 설정에서 역할 ARN을 확인하십시오.
- 지연 시간과 비용을 줄이려면 버킷/객체가 Iceberg 쿼리와 동일한 지역에 있는지 확인하십시오.
- Iceberg 테이블 경로가 유효한 Iceberg 메타데이터 위치(테이블 루트 아래의
metadata/v1/...파일)를 가리키는지 확인하십시오. - 카탈로그 모드에서는 AWS Glue 콘솔에서 Glue 메타데이터와 파티션 표시 여부를 확인하십시오.
