고객 버킷을 Iceberg 저장소로 연결하기
BYOB(Bring your own bucket)는 고객이 관리하는 저장소에 파일을 두고 Foundry 카탈로그가 관리형 Iceberg 테이블을 관리하는 구성입니다. AWS S3, Azure ADLS와 Google Cloud Storage를 지원합니다. Foundry 관리 저장소만 사용하면 이 추가 준비는 필요하지 않습니다.
버킷은 성능을 위해 Foundry와 같은 리전에 두는 것이 권장되지만 필수 조건은 아닙니다. 저장소의 네트워크 정책은 Foundry에서 연결할 수 있도록 구성하고 SSE를 적용합니다.
AWS S3
S3 버킷과 해당 버킷 및 암호화 KMS 키에 접근할 IAM 역할을 준비합니다.
| 권한 | 대상 |
|---|---|
s3:DeleteObject | 버킷의 객체 |
s3:GetObject | 버킷의 객체 |
s3:ListBucket | 버킷 |
s3:PutObject | 버킷의 객체 |
kms:Decrypt | 암호화에 사용하는 KMS 키 |
kms:Encrypt | 같은 KMS 키 |
kms:GenerateDataKey | 같은 KMS 키 |
sts:GetFederationToken | STS 작업 권한 |
이 역할을 맡을 수 있는 IAM 사용자 또는 OIDC 신원 제공자를 구성합니다. Data Connection 소스에는 해당 사용자의 인증 정보나 OIDC 토큰을 사용하는 인증 방식을 설정합니다. S3 소스의 지원 인증 방식을 적용합니다.
Foundry와 같은 리전의 S3 버킷은 추가 네트워크 구성이 필요합니다. Control Panel의 Network egress에서 Palantir VPC endpoint가 버킷에 접근할 수 있도록 명시적으로 허용합니다. 일반 외부 통신 허용과 버킷 엔드포인트 조건을 구분합니다.
Azure ADLS
저장소 계정과 컨테이너를 준비합니다. Iceberg BYOB의 ABFS 소스는 dfs.core.windows.net의 ADLS 엔드포인트를 사용해야 합니다. blob.core.windows.net 엔드포인트는 지원하지 않습니다.
Client credentials의 서비스 주체를 사용하는 구성에는 다음 권한이 필요합니다.
- 데이터를 저장할 컨테이너에
Storage Blob Data Contributor - 저장소 계정 수준에 최소 Delegator 권한
컨테이너 수준 권한만으로는 충분하지 않습니다. ABFS 소스에서 실제 인증 및 네트워크 구성을 준비합니다.
Google Cloud Storage
GCS 버킷과 IAM 서비스 계정을 준비합니다.
| 역할 | 적용 대상과 목적 |
|---|---|
Storage Object Admin | 버킷에 부여하여 Iceberg 메타데이터와 데이터 파일을 읽고, 쓰고, 삭제합니다. |
Service Account Token Creator | 서비스 계정 자체에 부여합니다. Foundry가 클라이언트에 짧은 수명의 범위 제한 인증 정보를 발급할 수 있게 합니다. |
GCS BYOB 소스는 JSON 서비스 계정 키 또는 그에 해당하는 PKCS8 인증 값을 사용합니다. 일반 GCS 소스의 다른 인증 방식이 이 BYOB 경로에도 모두 지원되는 것은 아닙니다.
같은 GCS 소스를 BYOB 저장소와 Lakehouse 카탈로그에 함께 사용할 수 없습니다. BYOB 소스에는 Catalog를 설정하지 않고, Lakehouse용 별도 소스에는 Catalog = Lakehouse Catalog를 설정합니다.
저장소 소스 구성
BYOB 용도 설정에는 소스의 Owner 권한이 필요합니다. 버킷 전체에 대한 강한 권한을 가진 소스이므로 관리자 전용 프로젝트 등 접근을 제한한 위치에 둡니다. 인증 정보 접근과 설정 변경 권한을 넓게 공유하면 기존 테이블 접근까지 영향을 받을 수 있습니다.
소스의 반출 허용 토글에는 별도 권한 조건도 적용됩니다. 기본 역할에서는 소스 Owner와 플랫폼 인스턴스의 Information Security Officer가 필요합니다. BYOB 소스를 편집할 권한과 Control Panel에서 Iceberg 저장 위치를 관리할 권한도 각각 확인합니다.
- 준비한 인증 정보로 S3, ABFS 또는 GCS 소스를 만듭니다.
- 필요하면 소스 URL에 테이블의 기본 경로 접두사를 지정합니다. 예를 들어 가상 주소
s3://example-bucket/base-path/처럼 구성합니다. - 기본 경로를 지정하지 않으면 Foundry는
foundry-iceberg를 기본 경로로 사용합니다. Iceberg 저장 위치로 등록한 뒤에는 이 경로를 바꾸지 않습니다. 기존 테이블 접근이 끊길 수 있습니다. - S3와 ADLS는 해당 소스가 제공하는 인증 방식, 예를 들어 access key and secret 또는 OIDC를 사용할 수 있습니다. GCS는 JSON credentials 또는 PKCS8 auth로 제한됩니다.
Enable exports to this source를 켭니다.Code import configuration은 꺼 둡니다. 관리형 Iceberg 테이블을 Code Repositories에서 사용해도 저장소 소스를 코드에 직접 가져올 필요가 없습니다.
일반 외부 연결 변환에서 소스를 직접 가져오는 설정과 관리형 Iceberg의 저장소 설정은 다릅니다. 코드에는 테이블 리소스를 연결하고 카탈로그가 저장소 접근을 중개합니다.
위임할 연결 범위
버킷에 구성한 모든 외부 통신 정책은 해당 버킷의 Iceberg 테이블을 사용하는 워크플로에도 제공됩니다. 그 워크플로의 사용자 코드가 정책의 목적지로 연결할 수 있으므로 저장소 소스에 불필요한 목적지 정책을 넣지 않습니다.
버킷의 원래 인증 정보를 Iceberg 클라이언트나 다른 도구에 직접 배포하지 않습니다. Foundry Iceberg 카탈로그가 권한 범위를 제한한 단기 인증 정보를 제공하는 credential vending을 사용합니다.
소스를 준비한 뒤 Control Panel 설정의 Configure buckets에서 저장 위치로 추가하고, 기본값 또는 프로젝트별 재정의를 지정합니다.