このドキュメントでは、SAP Business Data Cloud(BDC)がデータをコピーせずに BigQuery データにアクセスできるように Google Cloud を構成する方法について説明します。これを行うには、Lakehouse for Apache Iceberg ランタイム カタログまたは Knowledge Catalog データ プロダクトに Apache Iceberg REST カタログ エンドポイントを設定して、SAP と共有します。
この統合とそのユースケースの概要については、SAP BDC 統合についてをご覧ください。
始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 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 を設定するをご覧ください。
- Workload Identity 連携(WIF): SAP BDC 認証発行元を信頼するように WIF を構成する準備をします。これについては、次のセクションで説明します。
必要なロール
Workload Identity 連携を構成してデータを公開するために必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。
-
Workload Identity 連携の管理:
Identity and Access Management(IAM)Workload Identity プール管理者 (
roles/iam.workloadIdentityPoolAdmin) -
データ プロダクトの公開:
BigLake 管理者 (
roles/biglake.admin) -
カタログ メタデータの表示(WIF プリンシパルに付与):
BigLake 閲覧者 (
roles/biglake.viewer) -
サービス割り当ての使用(WIF プリンシパルに付与):
Service Usage 消費者 (
roles/serviceusage.serviceUsageConsumer)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
全般的なワークフロー
データを SAP BDC に公開する手順は次のとおりです。
- Workload Identity 連携を構成する: Workload Identity 連携プールとプロバイダを作成して、SAP BDC OIDC 発行元との信頼を確立します。
- 連携プリンシパルにロールを付与する: カタログ メタデータの表示とサービス割り当ての使用を行う権限をフェデレーション ID に付与します。
- データを公開する:
gcloudCLI を使用して、Apache Iceberg REST カタログまたは Knowledge Catalog データ プロダクトを SAP BDC に公開します。
Workload Identity 連携を構成する
エクスポートされたサービス アカウント キーを必要とせずに SAP BDC が Lakehouse リソースにアクセスできるようにするには、Workload Identity 連携(WIF)を構成します。 これにより、 Google Cloud と SAP BDC OIDC 発行元との間に信頼が確立されます。
WIF プールとプロバイダを設定する手順は次のとおりです。
発行元の URI を取得する
Delta Sharing 接続カタログから OIDC 発行元 URI を取得します。この URI は、WIF プロバイダを構成するために必要です。
gcloud alpha biglake delta-sharing catalogs describe CONNECTION_CATALOG_ID \ --project="PROJECT_ID"
コマンド出力で、発行元 URI を含む federatedIdentityIssuer フィールドを見つけます。
Workload Identity プールを作成する
外部 ID をグループ化する Workload Identity プールを作成します。
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 を使用して Apache Iceberg REST カタログを公開できます。また、gcloud CLI を使用して Iceberg テーブルを含む Knowledge Catalog データ プロダクトを公開することもできます。 Google Cloud コンソールでは、データ プロダクトの公開はサポートされていません。 Google Cloud
Iceberg REST カタログ
公開する前に、Iceberg テーブルに主キーと少なくとも 1 行が含まれていることを確認してください。SAP BDC では、クエリに両方が必要です。
コンソール
コンソールで、[Lakehouse ランタイム カタログ] ページに移動します。 Google Cloud
ナビゲーション パネルで、プロジェクトを開き、公開に使用する [Delta カタログ](接続カタログ)を選択します。
[データ プロダクトを公開] をクリックします。
公開する Iceberg REST カタログの選択など、必要な共有の詳細を入力します。
[公開] をクリックします。
gcloud
Apache Iceberg REST カタログ エンドポイントが存在することを確認し、その詳細を取得します。
gcloud alpha biglake iceberg catalogs describe ICEBERG_CATALOG_ID \ --project="PROJECT_ID"
Apache Iceberg REST カタログを SAP BDC に公開します。接続カタログ、Iceberg カタログ、基盤となる Cloud Storage バケットはすべて同じリージョンに存在する必要があります。
gcloud alpha 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 プール ID。PROVIDER_ID: WIF プロバイダ ID。TITLE_TEXTとSHORT_DESCRIPTION_TEXT: SAP BDC での共有に必要な表示値。DETAILED_DESCRIPTION_TEXT: 詳細な説明(省略可)。簡単な説明と詳細な説明に同じテキストを入力しないでください。SAP によって拒否されます。詳細な説明に簡単な説明が部分文字列として含まれている場合も、公開オペレーションは拒否されます。たとえば、簡単な 説明がSales Dataの場合、詳細な説明Longer Sales Data detailsはSales Dataが含まれているため拒否されます。ただし、「Longer Sales Information」という詳細な説明は受け入れられます。
Knowledge Catalog データ プロダクト
代わりに、Knowledge Catalog データ プロダクトを公開することもできます。データ プロダクトとは、特定のビジネス上の問題を解決するためにパッケージ化された、データアセット(テーブルやビューなど)のキュレートされた論理グループです。カタログ全体を公開するのではなく、特定の Apache Iceberg テーブルを選択してデータ プロダクトにグループ化し、そのキュレートされたコレクションを SAP BDC に公開できます。
データ プロダクトを作成します。
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"
データ プロダクトでアセットを構成する場合、テーブル アセットには主キーと少なくとも 1 行が必要です。1 つのデータ プロダクト内のすべてのデータアセットは、同じ Apache Iceberg REST カタログに属している必要があります。データ プロダクトには最大 50 個のテーブルを含めることができ、公開するには少なくとも 1 つの有効なデータアセットを含める必要があります。Iceberg テーブルは、 Google Cloud コンソールにすぐに表示されない場合があります。
省略可: データ プロダクトのアセットを確認します。
gcloud alpha dataplex data-products data-assets list \ --data_product="DATA_PRODUCT_ID" \ --location="LOCATION" \ --project="PROJECT_ID"
データ プロダクトを SAP BDC に公開します。接続カタログ、データ プロダクト、基盤となるリソースが同じリージョンにあることを確認します。
gcloud alpha 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 プール ID。PROVIDER_ID: WIF プロバイダ ID。DATA_PRODUCT_ID: Knowledge Catalog データ プロダクトの ID。LOCATION: Knowledge Catalog データ プロダクトのロケーション。SAP_SHARE_NAME: SAP BDC での共有の名前。
SAP BDC の データにアクセスする Google Cloud
データを SAP BDC に公開すると、SAP 環境でネイティブに Google Cloud データ にアクセスできます。SAP でデータ プロダクトをリモートテーブルとしてインストールして 使用する方法については、SAP ドキュメントのデータ プロダクト のインストール をご覧ください。
次のステップ
- SAP BDC 用のクロスクラウド Lakehouse のトラブルシューティングを行う。
- SAP ドキュメント でデータ プロダクトをインストールする。