이 문서에서는 Google Cloud SAP Business Data Cloud (BDC)에서 데이터를 복사하지 않고 BigQuery 데이터에 액세스하도록 구성하는 방법을 설명합니다. 이를 위해 Lakehouse for Apache Iceberg 런타임 카탈로그 또는 SAP와 공유할 Knowledge Catalog Data Product에서 Apache Iceberg REST 카탈로그 엔드포인트를 설정합니다.
이 통합 및 사용 사례에 대한 개요는 SAP BDC 통합 정보를 참조하세요.
시작하기 전에
- 계정에 로그인합니다. Google Cloud 를 처음 사용하는 경우 Google Cloud, 계정을 만들어 실제 시나리오에서 Google Cloud 제품이 어떻게 작동하는지 평가합니다. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake and Dataplex APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake and Dataplex APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.- Cloud Storage 버킷: Iceberg 메타데이터 및 데이터 파일을 저장할 Cloud Storage 버킷을 만듭니다. 자세한 내용은 버킷 만들기를 참조하세요. 백엔드 버킷을 포함한 모든 리소스는 구성 파이프라인 오류를 방지하기 위해 동일한 리전에 있어야 합니다.
- Apache Iceberg REST 카탈로그: 공유하려는 네임스페이스와 테이블이 포함된 사용자 인증 정보 제공이 사용 설정된 Lakehouse 런타임 카탈로그에서 Apache Iceberg REST 카탈로그 엔드포인트를 설정합니다. 이 카탈로그는 Cloud Storage 버킷을 웨어하우스로 사용합니다. 자세한 내용은 Iceberg REST 카탈로그 설정을 참조하세요.
- Delta Sharing 연결 카탈로그: SAP BDC 연결을 위해 등록된 Delta Sharing 연결 카탈로그를 준비합니다. 이는 SAP BDC에서 BigQuery로 데이터를 공유하기 위한 초기 설정 중에 생성된 카탈로그와 동일합니다. 새 카탈로그를 만들 필요가 없습니다. 자세한 내용은 SAP BDC용 테두리 없는 Lakehouse 설정을 참조하세요.
- 워크로드 아이덴티티 제휴 (WIF): SAP BDC 인증 발급자를 신뢰하도록 WIF를 구성할 준비를 합니다. 이 작업은 다음 섹션에서 설정합니다.
필요한 역할
워크로드 아이덴티티 제휴를 구성하고 데이터를 게시하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청합니다.
-
워크로드 아이덴티티 제휴 관리:
Identity and Access Management (IAM) 워크로드 아이덴티티 풀 관리자 (
roles/iam.workloadIdentityPoolAdmin) -
데이터 제품 게시:
BigLake 관리자 (
roles/biglake.admin) -
카탈로그 메타데이터 보기 (WIF 주 구성원에게 부여됨):
BigLake 뷰어 (
roles/biglake.viewer) -
서비스 할당량 사용 (WIF 주 구성원에게 부여됨):
서비스 사용 소비자 (
roles/serviceusage.serviceUsageConsumer)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
일반 워크플로
SAP BDC에 데이터를 게시하려면 다음 단계를 따르세요.
- 워크로드 아이덴티티 제휴 구성: 워크로드 아이덴티티 제휴 풀 및 프로바이더를 만들어 SAP BDC OIDC 발급기관과 신뢰를 설정합니다.
- 제휴 주 구성원에게 역할 부여: 제휴 ID에 카탈로그 메타데이터를 보고 서비스 할당량을 사용할 수 있는 권한을 부여합니다.
- 데이터 게시:
gcloudCLI를 사용하여 Apache Iceberg REST 카탈로그 또는 Knowledge Catalog 데이터 제품을 SAP BDC에 게시합니다.
워크로드 아이덴티티 제휴 구성
내보낸 서비스 계정 키가 필요하지 않고 SAP BDC에서 Lakehouse 리소스에 액세스하도록 하려면 워크로드 아이덴티티 제휴 (WIF)를 구성합니다. 이렇게 하면 Google Cloud 와 SAP BDC OIDC 발급자 간에 신뢰가 설정됩니다.
다음 단계에 따라 WIF 풀 및 프로바이더를 설정합니다.
발급자 URI 가져오기
Delta Sharing 연결 카탈로그에서 OIDC 발급자 URI를 가져옵니다. 이 URI는 WIF 프로바이더를 구성하는 데 필요합니다.
gcloud biglake delta-sharing catalogs describe CONNECTION_CATALOG_ID \ --project="PROJECT_ID"
명령어 출력에서 발급자 URI가 포함된 federatedIdentityIssuer 필드를 찾습니다.
워크로드 아이덴티티 풀 만들기
워크로드 아이덴티티 풀을 만들어 외부 ID를 그룹화합니다.
gcloud iam workload-identity-pools create POOL_ID \ --location="global" \ --display-name="POOL_DISPLAY_NAME" \ --project="PROJECT_ID"
OIDC 제공업체 만들기
풀 내에서 OIDC 제공업체를 만들어 신뢰를 정의하고 토큰 클레임을 매핑합니다.
gcloud iam workload-identity-pools providers create-oidc PROVIDER_ID \ --location="global" \ --workload-identity-pool="POOL_ID" \ --issuer-uri="ISSUER_URI" \ --attribute-mapping="google.subject=assertion.sub.split('://')[1].split('.')[0]" \ --project="PROJECT_ID"
제휴 주 구성원에게 역할 부여
신뢰할 수 있는 풀의 제휴 ID가 필요한 Google API를 호출하도록 승인합니다. 특정 주체 UUID 또는 전체 풀을 승인할 수 있습니다.
특정 주체를 승인하려면 (권장):
gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/biglake.viewer" \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/WIF_SUBJECT" gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/serviceusage.serviceUsageConsumer" \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/WIF_SUBJECT"
WIF_SUBJECT를 워크로드에 대해 SAP 측 발급자가 발급한 UUID로 바꿉니다.
풀의 모든 ID를 승인하려면 (제한이 적고 테스트 환경에 적합):
gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/biglake.viewer" \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*" gcloud projects add-iam-policy-binding PROJECT_ID \ --role="roles/serviceusage.serviceUsageConsumer" \ --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*"
SAP BDC에 데이터 게시
콘솔 또는 Google Cloud CLI를 사용하여 Iceberg 테이블이 포함된 Apache Iceberg REST 카탈로그 또는 Knowledge Catalog 데이터 제품 을 게시할 수 있습니다. Google Cloud
Iceberg REST 카탈로그
게시하기 전에 Iceberg 테이블 메타데이터에서 identifier-field-ids를 사용하여 기본 키가 정의되어 있고 행이 하나 이상 있는지 확인합니다. SAP BDC는 쿼리에 둘 다 필요하기 때문입니다. identifier-field-ids에서 참조되는 모든 열은 Iceberg 스키마에서 required: true (null이 아님)로 설정해야 합니다. 테이블에 기본 키가 없거나 null 허용 키 필드가 포함되어 있는 경우 BigLake REST API를 사용하여 업데이트하려면
기본 키의 Iceberg 테이블 스키마 업데이트
를 참조하세요.
Console
Google Cloud 콘솔에서 Lakehouse 런타임 카탈로그 페이지로 이동합니다.
탐색 패널에서 프로젝트를 펼치고 게시하는 데 사용할 Delta 카탈로그 (연결 카탈로그)를 선택합니다.
데이터 제품 게시 를 클릭합니다.
게시할 Iceberg REST 카탈로그를 선택하는 등 필요한 공유 세부정보를 입력합니다.
게시 를 클릭합니다.
gcloud
Apache Iceberg REST 카탈로그 엔드포인트가 있는지 확인하고 세부정보를 가져옵니다.
gcloud biglake iceberg catalogs describe ICEBERG_CATALOG_ID \ --project="PROJECT_ID"
Apache Iceberg REST 카탈로그를 SAP BDC에 게시합니다. 연결 카탈로그, Iceberg 카탈로그, 기본 Cloud Storage 버킷은 모두 동일한 리전에 있어야 합니다.
gcloud biglake data-product-sharing publish \ --connection-catalog="projects/PROJECT_ID/catalogs/CONNECTION_CATALOG_ID" \ --share="SAP_SHARE_NAME" \ --sap-federated-identity-provider="projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID" \ --iceberg-catalog="projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID" \ --title="TITLE_TEXT" \ --short-description="SHORT_DESCRIPTION_TEXT" \ --description="DETAILED_DESCRIPTION_TEXT" \ --project="PROJECT_ID"
게시된 Apache Iceberg REST 카탈로그는 SAP BDC에서 검색할 수 있으며 SAP Datasphere에 원격 테이블로 설치할 수 있습니다.
다음을 바꿉니다.
CONNECTION_CATALOG_ID: SAP BDC에서 BigQuery로 데이터를 공유하기 위한 초기 설정 중에 생성된 등록된 Delta Sharing 연결 카탈로그입니다. 설정 안내에 언급된 Delta Sharing 카탈로그와 동일합니다. 게시-백을 위해 다른 카탈로그를 만들 필요가 없습니다.PROJECT_NUMBER: Google Cloud 프로젝트 번호--sap-federated-identity-provider플래그는 프로젝트 ID가 아닌 프로젝트 번호를 사용해야 합니다.POOL_ID: WIF 풀 IDPROVIDER_ID: WIF 제공업체 IDTITLE_TEXT및SHORT_DESCRIPTION_TEXT: SAP BDC의 공유에 필요한 표시 값입니다.DETAILED_DESCRIPTION_TEXT: 자세한 설명(선택사항)입니다. 간략한 설명과 자세한 설명에 동일한 텍스트를 입력하지 마세요. SAP에서 거부됩니다. 자세한 설명에 간략한 설명이 하위 문자열로 포함되어 있는 경우 게시 작업도 거부됩니다. 예를 들어 간략한 설명이Sales Data인 경우Sales Data가 포함되어 있으므로Longer Sales Data details의 자세한 설명은 거부됩니다. 하지만 'Longer Sales Information'의 자세한 설명은 허용됩니다.
Knowledge Catalog 데이터 제품
또는 Knowledge Catalog 데이터 제품을 게시할 수 있습니다. 데이터 제품은 특정 비즈니스 문제를 해결하기 위해 함께 패키징된 테이블 또는 뷰와 같은 데이터 애셋의 선별된 논리적 그룹화입니다. 전체 카탈로그를 게시하는 대신 특정 Apache Iceberg 테이블을 선택하고 데이터 제품으로 그룹화한 후 선별된 컬렉션을 SAP BDC에 게시할 수 있습니다.
Console
Google Cloud 콘솔에서 Knowledge Catalog 페이지로 이동합니다.
탐색 메뉴에서 데이터 제품 을 선택합니다.
게시할 데이터 제품을 클릭하여 세부정보 페이지를 엽니다.
공유 를 클릭하고 SAP에 게시를 선택합니다.
SAP에 데이터 제품 게시 창에서 다음 필드를 구성합니다.
- 공유 이름: SAP BDC의 공유 이름을 입력합니다.
- Delta 카탈로그: 등록된 Delta Sharing 연결 카탈로그를 선택합니다.
- 워크로드 아이덴티티: 워크로드 아이덴티티 풀 제공업체를 선택하거나 입력합니다.
게시 를 클릭합니다.
gcloud
데이터 제품을 만듭니다.
gcloud alpha dataplex data-products create DATA_PRODUCT_ID \ --location="LOCATION" \ --display-name="TITLE_TEXT" \ --description="SHORT_DESCRIPTION_TEXT" \ --owner-emails="OWNER_EMAIL" \ --project="PROJECT_ID"
--display-name은 SAP BDC의title에 매핑되고--description은short_description에 매핑됩니다.Lakehouse Iceberg 테이블 애셋을 데이터 제품에 연결합니다.
gcloud alpha dataplex data-products data-assets create DATA_ASSET_ID \ --data_product="DATA_PRODUCT_ID" \ --location="LOCATION" \ --resource="//biglake.googleapis.com/projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID/namespaces/NAMESPACE_NAME/tables/TABLE_NAME" \ --project="PROJECT_ID"
데이터 제품에서 애셋을 구성할 때 테이블 애셋에는 Iceberg 테이블 메타데이터에서
identifier-field-ids를 사용하여 기본 키가 정의되어 있어야 하며 (모든 식별자 열이required: true로 표시됨) 행이 하나 이상 있어야 합니다. 테이블에 기본 키가 없거나 null 허용 키 필드가 포함되어 있는 경우 BigLake REST API를 사용하여 업데이트하려면 기본 키의 Iceberg 테이블 스키마 업데이트 를 참조하세요. 단일 데이터 제품의 모든 데이터 애셋은 동일한 Apache Iceberg REST 카탈로그에 속해야 합니다. 데이터 제품에는 최대 50개의 테이블이 있을 수 있으며 게시하려면 유효한 데이터 애셋이 하나 이상 포함되어 있어야 합니다. Iceberg 테이블 은 콘솔에 즉시 표시되지 않을 수 있습니다. Google Cloud선택사항: 데이터 제품의 애셋을 확인합니다.
gcloud alpha dataplex data-products data-assets list \ --data_product="DATA_PRODUCT_ID" \ --location="LOCATION" \ --project="PROJECT_ID"
데이터 제품을 SAP BDC에 게시합니다. 연결 카탈로그, 데이터 제품, 기본 리소스가 동일한 리전에 있는지 확인합니다.
gcloud biglake data-product-sharing publish \ --connection-catalog="projects/PROJECT_ID/catalogs/CONNECTION_CATALOG_ID" \ --share="SAP_SHARE_NAME" \ --sap-federated-identity-provider="projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID" \ --data-product="projects/PROJECT_ID/locations/LOCATION/dataProducts/DATA_PRODUCT_ID" \ --project="PROJECT_ID"
게시된 데이터 제품은 SAP BDC에서 검색할 수 있으며 SAP Datasphere에 원격 테이블로 설치할 수 있습니다. SAP BDC에서 게시된 데이터 제품은 Knowledge Catalog 데이터 제품을 만들 때 설정된 제목과 간략한 설명을 상속합니다.
다음을 바꿉니다.
CONNECTION_CATALOG_ID: SAP BDC에서 BigQuery로 데이터를 공유하기 위한 초기 설정 중에 생성된 등록된 Delta Sharing 연결 카탈로그입니다. 설정 안내에 언급된 Delta Sharing 카탈로그와 동일합니다. 게시-백을 위해 다른 카탈로그를 만들 필요가 없습니다.PROJECT_NUMBER: Google Cloud 프로젝트 번호sap-federated-identity-provider는 프로젝트 ID가 아닌 프로젝트 번호를 사용해야 합니다.POOL_ID: WIF 풀 IDPROVIDER_ID: WIF 제공업체 IDDATA_PRODUCT_ID: Knowledge Catalog 데이터 제품의 IDLOCATION: Knowledge Catalog 데이터 제품의 위치SAP_SHARE_NAME: SAP BDC의 공유 이름
SAP BDC에서데이터 액세스 Google Cloud
SAP BDC에 데이터를 게시한 후 SAP 환경에서 기본적으로 Google Cloud 데이터 에 액세스할 수 있습니다. SAP에서 데이터 제품을 원격 테이블로 설치하고 사용하는 방법에 대한 자세한 내용은 SAP 문서의 데이터 제품 설치를 참조하세요.