카탈로그 만들기
카탈로그 만들기
일반적으로 사용 가능(GA) — 정부 리전에서는 사용할 수 없어요.
Snowflake Open Catalog 서비스 관리자가 카탈로그를 만들어요.
카탈로그를 만드는 단계는 클라우드 스토리지 제공자에 따라 달라져요.
카탈로그를 만들 때 외부 클라우드 스토리지에 대한 정보를 입력하면 Snowflake Open Catalog가 그 정보를 사용해 스토리지 구성을 만들어요. 이 구성은 스토리지에 대한 IAM(Identity and Access Management) 엔터티를 저장해요. Open Catalog는 IAM 엔터티를 사용해 테이블 데이터, Apache Iceberg™ 메타데이터, 매니페스트 파일에 접근하기 위해 스토리지 위치에 안전하게 연결해요.
지침은 다음 섹션을 참조하세요:
- Amazon Simple Storage Service(Amazon S3)로 카탈로그 만들기
- Cloud Storage from Google로 카탈로그 만들기
- Azure로 카탈로그 만들기
출처: Create a catalog
본문
Amazon Simple Storage Service(Amazon S3)로 카탈로그 만들기
사전 요구 사항
- Snowflake 계정을 호스팅하는 것과 같은 리전에 있는 S3 스토리지 버킷.
Open Catalog는 마침표를 포함하는 버킷 이름(예: my.s3.bucket)을 지원할 수 없어요. Open Catalog는 가상 호스트 스타일 경로와 HTTPS를 사용해 S3의 데이터에 접근해요. 하지만 S3는 이름에 마침표가 있는 가상 호스트 스타일 버킷에 대해 SSL을 지원하지 않아요.
데이터 복구 기능은 스토리지 제공자를 참조하세요.
- IAM 정책과 역할을 만들고 관리할 수 있는 AWS 권한.
AWS 관리자가 아니라면 AWS 관리자에게 이러한 작업을 수행하도록 요청하세요.
1단계: S3 위치에 대한 접근을 부여하는 IAM 정책 만들기
AWS Management Console에서 Open Catalog에 대한 접근 권한을 구성하려면 다음 절차를 따르세요:
- AWS Management Console에 로그인하세요.
- 홈 대시보드에서 IAM을 선택하세요.
- 탐색 창에서 Account settings를 선택하세요.
- Security Token Service(STS) 아래의 Endpoints 목록에서 계정이 위치한 Open Catalog 리전을 찾고, STS status가 비활성(inactive)이면 토글을 Active로 설정하세요.
- 탐색 창에서 Policies를 선택하세요.
- Create Policy를 선택하세요.
- Policy editor에서 JSON을 선택하세요.
- Open Catalog가 S3 위치에 데이터를 읽고 쓸 수 있는 필요한 권한을 제공하는 정책을 추가하세요.
*my_bucket*을 실제 버킷 이름으로 바꾸세요. 버킷 내 경로도 지정할 수 있어요. 예:*my_bucket*/*path*."s3:prefix":조건을["*"]로 설정하면 지정된 버킷의 모든 접두사에 접근을 부여하고,["*path*/*"]로 설정하면 버킷의 지정된 경로에 접근을 부여해요.- 정부 리전의 버킷인 경우 버킷 ARN은
arn:aws-us-gov:s3:::접두사를 사용해요.
다음 예제 정책은 지정된 버킷의 모든 위치에 접근을 부여해요:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
],
"Resource": "arn:aws:s3:::<my_bucket>/*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::<my_bucket>",
"Condition": {
"StringLike": {
"s3:prefix": [
"*"
]
}
}
}
]
}
- Next를 선택하세요.
- Policy name에 정책 이름을 입력하세요(예:
open_catalog_access). - 선택 사항: Description에 설명을 입력하세요.
- Create policy를 선택하세요.
2단계: S3 버킷에 대한 권한을 부여하는 IAM 역할 만들기
- AWS Management Console의 IAM(Identity and Access Management) 대시보드에서 탐색 창의 Roles를 선택하세요.
- Create role을 선택하세요.
- 신뢰할 엔터티 유형에서 AWS account를 선택하세요.
- An AWS account 아래에서 This account를 선택하세요. 이후 단계에서 신뢰 관계를 수정하고 Open Catalog에 접근을 부여해요.
- 선택 사항: 외부 ID를 만들려면 Require external ID 체크박스를 선택하고 external ID를 입력하세요. 예:
open_catalog_external_id.
카탈로그를 만들 때 외부 ID를 만들지 않으면 Open Catalog가 사용할 외부 ID를 생성해요. 외부 ID는 Open Catalog 같은 서드파티에 AWS 리소스(예: S3 버킷)에 대한 접근을 부여하는 데 사용돼요.
- Next를 선택하세요.
- 이전 단계에서 만든 정책을 선택한 다음 Next를 선택하세요.
- 역할에 대한 역할 이름과 설명을 입력한 다음 Create role을 선택하세요.
이제 S3 위치에 대한 IAM 정책을 만들고, IAM 역할을 만들고, 정책을 역할에 연결했어요.
- 역할 요약 페이지를 보려면 View role을 선택하세요.
- 역할의 ARN(Amazon Resource Name) 값을 찾아 기록하세요.
3단계: Open Catalog에서 카탈로그 만들기
- Open Catalog에 로그인하세요.
- Open Catalog 홈 페이지의 Catalogs 영역에서 + Create를 선택하세요.
- Create Catalog 대화 상자에서 필드를 완성하세요:
- Name에 카탈로그 이름을 입력하세요. 카탈로그 이름은 대소문자를 구분해요.
- 선택 사항: 외부 카탈로그를 만들려면 External 토글을 On으로 설정하세요. 외부 카탈로그에 대한 정보는 카탈로그 유형을 참조하세요.
- Storage Provider에 S3를 선택하세요.
- 선택 사항: 카탈로그에 대해 아웃바운드 프라이빗 연결을 활성화하려면 Private Link 토글을 Enabled로 설정하세요.
- Default base location에 AWS S3 스토리지 버킷의 기본 기준 위치를 입력하세요.
- 선택 사항: 카탈로그가 둘 이상의 위치에 저장된 객체를 포함한다면 **Additional locations (optional)**에 각 추가 위치를 쉼표로 구분해 나열하세요.
- S3 role ARN에 Open Catalog용으로 만든 IAM 역할의 ARN을 입력하세요.
- 선택 사항: IAM 역할을 만들 때 외부 ID를 만들었다면 External ID에 외부 ID를 입력하세요.
- Create를 선택하세요.
외부 카탈로그의 경우 자격 증명 공급은 기본적으로 비활성화돼요. 하지만 카탈로그에 대해 활성화할 수 있어요. 자세한 내용은 외부 카탈로그에 대한 자격 증명 공급 활성화를 참조하세요.
4단계: Open Catalog 계정의 AWS IAM 사용자 검색
- Open Catalog 홈 페이지의 Catalogs 영역에서 만든 카탈로그를 선택하세요.
- Storage Details 아래에서 IAM user arn을 복사하세요. 예:
arn:aws:iam::123456789001:user/abc1-b-self1234.
Open Catalog는 전체 Open Catalog 계정에 대해 단일 IAM 사용자를 프로비저닝해요. 계정의 모든 S3 스토리지 구성은 그 IAM 사용자를 사용해요.
IAM 역할을 만들 때 외부 ID를 지정하지 않았다면 Open Catalog가 사용할 외부 ID를 생성해요. 생성된 외부 ID로 IAM 역할 신뢰 정책을 업데이트할 수 있도록 값을 기록하세요.
5단계: IAM 사용자에게 버킷 객체 접근 권한 부여
- AWS Management Console에 로그인하세요.
- 홈 대시보드에서 IAM을 검색해 선택하세요.
- 탐색 창에서 Roles를 선택하세요.
- 스토리지 구성용으로 만든 IAM 역할을 선택하세요.
- Trust relationships 탭을 선택하세요.
- Edit trust policy를 선택하세요.
- 기록한 카탈로그 스토리지 세부 정보로 정책 문서를 수정하세요:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "<open_catalog_user_arn>"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<open_catalog_external_id>"
}
}
}
]
}
여기서:
open_catalog_user_arn은 기록한 IAM 사용자 ARN이에요.open_catalog_external_id는 외부 ID예요. 역할을 만들 때 외부 ID를 지정하고 스토리지 구성을 만들 때 같은 ID를 사용했다면 값을 그대로 두세요. 그렇지 않으면 기록한 값으로sts:ExternalId를 업데이트하세요.
새 스토리지 구성을 만들고 자체 외부 ID를 제공하지 않는다면 이 정책 문서를 업데이트해야 해요. 보안상의 이유로 새로 만들거나 다시 만든 스토리지 구성은 다른 외부 ID를 가지며 이 신뢰 정책을 업데이트하지 않으면 신뢰 관계를 해석할 수 없어요.
- 변경 사항을 저장하려면 Update policy를 선택하세요.
Cloud Storage from Google로 카탈로그 만들기
이 섹션은 카탈로그를 만들고 스토리지 구성을 사용해 Cloud Storage 버킷에 대한 제한된 접근을 Open Catalog에 부여하는 방법을 다뤄요.
조직의 관리자가 Google Cloud 계정에서 IAM 사용자에게 권한을 부여해요.
- 이 주제의 지침을 완료하려면 Google Cloud에서 IAM 정책과 역할을 만들고 관리할 권한이 있어야 해요. Google Cloud 관리자가 아니라면 Google Cloud 관리자에게 이러한 작업을 수행하도록 요청하세요.
- 데이터 복구 기능은 스토리지 제공자를 참조하세요.
1단계: 카탈로그 만들기
- Open Catalog에 로그인하세요.
- Open Catalog 홈 페이지의 Catalogs 영역에서 + Create를 선택하세요.
- Create Catalog 대화 상자에서 필드를 완성하세요:
- Name에 카탈로그 이름을 입력하세요. 카탈로그 이름은 대소문자를 구분해요.
- 선택 사항: 외부 카탈로그를 만들려면 External 토글을 On으로 설정하세요. 외부 카탈로그에 대한 정보는 카탈로그 유형을 참조하세요.
- Storage Provider에 GCS를 선택하세요.
- Default base location에 Cloud Storage 버킷의 기본 기준 위치를 입력하세요.
- 선택 사항: 카탈로그가 둘 이상의 위치에 저장된 객체를 포함한다면 **Additional locations (optional)**에 각 추가 스토리지 위치를 쉼표로 구분해 나열하세요.
- Create를 선택하세요.
외부 카탈로그의 경우 자격 증명 공급은 기본적으로 비활성화돼요. 하지만 카탈로그에 대해 활성화할 수 있어요. 자세한 내용은 외부 카탈로그에 대한 자격 증명 공급 활성화를 참조하세요.
2단계: Open Catalog 계정의 Google Cloud 서비스 계정 검색
- Open Catalog 홈 페이지의 Catalogs 영역에서 만든 카탈로그를 선택하세요.
- Storage Details 아래에서 GCP_SERVICE_ACCOUNT ID를 복사하세요. 예:
[email protected].
Open Catalog는 전체 Open Catalog 계정에 대해 단일 Google Cloud 서비스 계정을 프로비저닝하고 Google Cloud에서 스토리지에 접근할 때 그 서비스 계정을 사용해요.
3단계: 서비스 계정에 버킷 객체 접근 권한 부여
이 단계에서 Google Cloud 콘솔에서 Open Catalog에 대한 IAM 접근 권한을 구성해요.
커스텀 IAM 역할 만들기
버킷에 접근하고 객체를 가져오는 데 필요한 권한이 있는 커스텀 역할을 만들어요.
- 프로젝트 편집자로 Google Cloud 콘솔에 로그인하세요.
- 홈 대시보드의 탐색 메뉴에서 IAM & Admin > Roles를 선택하세요.
- Create Role을 선택하세요.
- Title에 커스텀 역할의 제목을 입력하세요.
- 선택 사항: Description에 커스텀 역할의 설명을 입력하세요.
- Add Permissions를 선택하세요.
- Filter에서 Service를 선택한 다음 storage를 선택하세요.
- 권한 목록을 필터링하고 목록에서 다음을 선택하세요:
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.getstorage.objects.list
- Add를 선택하세요.
- Create를 선택하세요.
Google Cloud 서비스 계정에 커스텀 역할 할당
이 절차 동안 Google Cloud 콘솔에 남아 있으세요.
- 홈 대시보드의 탐색 메뉴에서 Cloud Storage > Buckets를 선택하세요.
- 버킷 목록을 필터링하고 Open Catalog 스토리지 구성에서 지정한 버킷을 선택하세요.
- Permissions > View by principals를 선택한 다음 Grant access를 선택하세요.
- Add principals 아래에 앞서 복사한 서비스 계정 ID를 붙여넣으세요.
- Assign roles 아래에서 앞서 만든 커스텀 IAM 역할을 선택한 다음 Save를 선택하세요.
Azure 스토리지로 카탈로그 만들기
이 섹션은 스토리지 구성을 사용해 Open Catalog에 Microsoft Azure 컨테이너에 대한 제한된 접근을 부여하는 방법을 다뤄요. Open Catalog는 스토리지 구성에 대해 다음 Azure 클라우드 스토리지 서비스를 지원해요:
- Blob storage
- Data Lake Storage Gen2
- General-purpose v1
- General-purpose v2
조직의 관리자가 Azure 계정에서 IAM 사용자에게 권한을 부여해요.
- 이 주제의 지침을 완료하려면 Azure에서 IAM 정책과 역할을 만들고 관리할 권한이 필요해요. Azure 관리자가 아니라면 Azure 관리자에게 이러한 작업을 수행하도록 요청하세요.
- 데이터 복구 기능은 스토리지 제공자를 참조하세요.
1단계: 카탈로그 만들기
- Open Catalog에 로그인하세요.
- Open Catalog 홈 페이지의 Catalogs 영역에서 + Create를 선택하세요.
- Create Catalog 대화 상자에서 필드를 완성하세요:
- Name에 카탈로그 이름을 입력하세요. 카탈로그 이름은 대소문자를 구분해요.
- 선택 사항: 외부 카탈로그를 만들려면 External 토글을 On으로 설정하세요. 외부 카탈로그에 대한 정보는 카탈로그 유형을 참조하세요.
- Storage Provider에 AZURE를 선택하세요.
- 선택 사항: 카탈로그에 대해 아웃바운드 프라이빗 연결을 활성화하려면 Private Link 토글을 Enabled로 설정하세요.
- Default base location에 이 목록에서 적용 가능한 형식을 컨테이너의 기본 엔드포인트 경로에 적용해 Azure 스토리지 컨테이너의 기본 기준 위치를 입력하세요:
| 엔드포인트 유형 | 형식 | 기본 기준 위치 예제 |
|---|---|---|
| Blob | abfss://container_name>@<storage_account_name>.blob.core.windows.net/<directory_name/ |
abfss://my_container1@my_storageaccount1.blob.core.windows.net/my_directory1/ |
| Azure Data Lake Storage(ADLS) | abfss://container_name>@<storage_account_name>.dfs.core.windows.net/<directory_name/ |
abfss://my_container2@my_storageaccount2.dfs.core.windows.net/my_directory2/ |
- 이 경로와 컨테이너 이름은 Microsoft Azure 컨테이너를 만들 때 복사했던 것이에요.
- 컨테이너의 기본 엔드포인트 경로에서 스토리지 계정 이름은
https://와 경로의 첫 번째 마침표 사이의 텍스트예요. https://가 아닌abfss://접두사를 사용하세요.
- 선택 사항: 카탈로그가 둘 이상의 위치에 저장된 객체를 포함한다면 Additional locations (optional) 필드에 각 추가 스토리지 위치를 쉼표로 구분해 나열하세요.
- Tenant ID에 Azure 테넌트 ID를 입력하세요.
- Create를 선택하세요.
외부 카탈로그의 경우 자격 증명 공급은 기본적으로 비활성화돼요. 하지만 카탈로그에 대해 활성화할 수 있어요. 자세한 내용은 외부 카탈로그에 대한 자격 증명 공급 활성화를 참조하세요.
2단계: 스토리지 위치 값 복사
- Open Catalog 홈 페이지의 Catalogs 영역에서 만든 카탈로그를 선택하세요.
- Storage Details 아래에서 다음 값을 복사하세요:
| 속성 | 설명 |
|---|---|
AZURE_CONSENT_URL |
Microsoft 권한 요청 페이지의 URL. |
AZURE_MULTI_TENANT_APP_NAME |
계정용으로 만든 Snowflake 클라이언트 애플리케이션의 이름. 이 섹션의 이후 단계에서 이 애플리케이션에 허용 스토리지 위치에서 액세스 토큰을 얻을 권한을 부여해요. |
이 값을 다음 단계에서 사용해요.
3단계: Azure 서비스 주체에 액세스 토큰 권한 부여
- 웹 브라우저에서 Microsoft 권한 요청 페이지(Azure 동의 URL)로 이동하세요.
- Accept를 선택하세요. 이 동작은 Open Catalog 계정용으로 만든 Azure 서비스 주체가 테넌트 내 지정된 리소스에서 액세스 토큰을 얻을 수 있게 해요. 액세스 토큰을 얻는 것은 컨테이너에 대해 서비스 주체에 적절한 권한을 부여한 경우에만 성공해요. Microsoft 권한 요청 페이지는 Snowflake 기업 사이트(snowflake.com)로 리다이렉트돼요.
- Microsoft Azure 포털에 로그인하세요.
- Azure Services > Storage Accounts를 여세요.
- Open Catalog 서비스 주체가 접근해야 하는 스토리지 계정의 이름을 선택하세요.
- Access Control(IAM) > Add role assignment을 선택하세요.
- Open Catalog 서비스 주체에 부여할 원하는 역할(예: Storage Blob Data Contributor 역할)을 선택하세요. Storage Blob Data Contributor 역할은 Open Catalog 서비스 주체에 읽기 및 쓰기 접근을 부여하고 스토리지 위치에 쓰기 접근을 부여해요.
Open Catalog는 사용자 위임 공유 액세스 서명(SAS) 토큰을 발급해요. 스토리지 blob에 접근하기 위한 SAS 토큰은 blob이나 디렉터리가 아닌 컨테이너 수준에서 범위가 지정돼요. 선택한 역할은 사용자 위임 키를 만들 권한이 있어야 해요. 이러한 역할 목록은 RBAC로 권한 할당을 참조하세요.
- Next를 선택하세요.
- + Select members를 선택하세요.
- 한 시간 후에 Open Catalog 서비스 주체(Azure 다중 테넌트 앱 이름 속성)를 검색해 선택하세요. 속성 값에서 밑줄 앞의 문자열을 검색하세요.
- 이 섹션에서 Microsoft 요청 페이지를 통해 요청한 Open Catalog 서비스 주체를 Azure가 만드는 데는 한 시간 이상 걸릴 수 있어요. 서비스 주체를 즉시 사용할 수 없으면 한두 시간 기다렸다가 다시 검색하세요.
- 서비스 주체를 삭제하면 인증 실패로 인해 카탈로그가 작동을 멈춰요.
- Select를 선택하세요.
- Review + assign을 선택하세요.
역할을 할당할 때 변경 사항이 적용되는 데 최대 10분이 걸릴 수 있어요. 자세한 내용은 Microsoft Azure 문서의 증상 - 역할 할당 변경이 감지되고 있지 않음을 참조하세요.