SAP BDC にデータ プロダクトを公開する

Google Cloud を使用すると、BigQuery データをコピーせずに SAP Business Data Cloud(BDC)と共有できます。SAP BDC にデータを公開するには、Lakehouse ランタイム カタログで Apache Iceberg REST カタログ エンドポイントを構成するか、Knowledge Catalog データ プロダクトを設定します。

この統合とそのユースケースの概要については、SAP BDC 統合についてをご覧ください。

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the BigLake and Dataplex APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the BigLake and Dataplex APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the APIs

  6. Cloud Storage バケット: Iceberg のメタデータとデータファイルを保存する Cloud Storage バケットを作成します。手順については、バケットを作成するをご覧ください。構成パイプラインの障害を回避するには、バックエンド バケットを含むすべてのリソースが同じリージョンに存在する必要があります。
  7. Apache Iceberg REST カタログ エンドポイント: 共有する名前空間とテーブルを含む、認証情報の自動販売が有効になっている Lakehouse ランタイム カタログに Apache Iceberg REST カタログ エンドポイントを設定します。このカタログは、Cloud Storage バケットをウェアハウスとして使用します。手順については、Apache Iceberg REST カタログ エンドポイントを設定するをご覧ください。
  8. Delta Sharing 接続カタログ: SAP BDC 接続用に登録済みの Delta Sharing 接続カタログを準備します。これは、SAP BDC から BigQuery にデータを共有するための初期設定時に作成されたカタログと同じです。新しいカタログを作成する必要はありません。手順については、SAP Business Data Cloud のクロスクラウド接続を設定するをご覧ください。
  9. Workload Identity 連携(WIF): SAP BDC 認証発行者を信頼するように WIF を構成する準備をします。これは次のセクションで設定します。

必要なロール

Workload Identity 連携の構成とデータの公開に必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

全般的なワークフロー

SAP BDC にデータをパブリッシュする手順は次のとおりです。

  1. Workload Identity 連携を構成する: Workload Identity 連携プールとプロバイダを作成して、SAP BDC OIDC 発行者との信頼関係を確立します。
  2. 連携プリンシパルにロールを付与する: フェデレーション ID に、カタログ メタデータの表示とサービス割り当ての使用を許可する権限を付与します。
  3. データを公開する: gcloud CLI を使用して、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 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 にデータを公開する

Apache Iceberg REST カタログ エンドポイントまたは Iceberg テーブルを含む Knowledge Catalog データ プロダクトを公開するには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。

Iceberg REST カタログ

公開する前に、Iceberg テーブルのメタデータで identifier-field-ids を使用して主キーが定義されていること、および少なくとも 1 つの行があることを確認します。SAP BDC では、クエリに両方が必要です。identifier-field-ids で参照される列は、Iceberg スキーマで required: true(null 値不可)に設定する必要があります。テーブルに主キーがない場合、または null 値を許容するキーフィールドが含まれている場合は、主キーの Iceberg テーブル スキーマを更新するを参照して、BigLake REST API を使用して更新します。

コンソール

  1. Google Cloud コンソールで、[Lakehouse ランタイム カタログ] ページに移動します。

    [Lakehouse ランタイム カタログ] に移動

  2. ナビゲーション パネルでプロジェクトを開き、公開に使用する Delta Catalog(接続カタログ)を選択します。

  3. [データ プロダクトを公開] をクリックします。

  4. 公開する Iceberg REST カタログの選択など、必要な共有の詳細を入力します。

  5. [公開] をクリックします。

gcloud

  1. Apache Iceberg REST カタログ エンドポイントが存在することを確認し、その詳細を取得します。

    gcloud biglake iceberg catalogs describe ICEBERG_CATALOG_ID \
        --project="PROJECT_ID"
  2. 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 プール ID。
    • PROVIDER_ID: WIF プロバイダ ID。
    • TITLE_TEXT、SHORT_DESCRIPTION_TEXT: SAP BDC での共有に必要な表示値。
    • DETAILED_DESCRIPTION_TEXT: 詳細な説明(省略可)。簡単な説明と詳細な説明に同じテキストを入力しないでください。SAP によって拒否されます。詳細な説明に短い説明が部分文字列として含まれている場合も、公開オペレーションは拒否されます。たとえば、短い説明が Sales Data の場合、Longer Sales Data details の詳細な説明は Sales Data が含まれているため拒否されます。ただし、「長い販売情報」の詳細な説明は許可されます。

Knowledge Catalog のデータ プロダクト

または、Knowledge Catalog データ プロダクトを公開することもできます。データ プロダクトは、特定のビジネス上の問題を解決するためにパッケージ化された、データアセット(テーブルやビューなど)のキュレートされた論理グループです。カタログ全体を公開する代わりに、特定の Apache Iceberg テーブルを選択してデータ プロダクトにグループ化し、そのキュレートされたコレクションを SAP BDC に公開できます。

コンソール

  1. Google Cloud コンソールで、[Knowledge Catalog] ページに移動します。

    Knowledge Catalog に移動

  2. ナビゲーション メニューで [データ プロダクト] を選択します。

  3. 公開するデータ プロダクトをクリックして、詳細ページを開きます。

  4. [共有] をクリックし、[SAP に公開] を選択します。

  5. [SAP へのデータ プロダクトの公開] ペインで、次のフィールドを構成します。

    • 共有名: SAP BDC の共有の名前を入力します。
    • デルタカタログ: 登録済みの Delta Sharing 接続カタログを選択します。
    • Workload Identity: Workload Identity プール プロバイダを選択または入力します。
  6. [公開] をクリックします。

gcloud

  1. データ プロダクトを作成します。

    gcloud 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 にマッピングされます。

  2. Lakehouse で管理されている Apache Iceberg テーブル アセットをデータ プロダクトにリンクします。

    gcloud 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 としてマークされている)と、少なくとも 1 つの行が必要です。テーブルに主キーがない場合、または null 値を許容するキーフィールドが含まれている場合は、主キーの Iceberg テーブル スキーマを更新するを参照して、BigLake REST API を使用して更新します。1 つのデータ プロダクト内のすべてのデータアセットは、同じ Apache Iceberg REST カタログに属している必要があります。データ プロダクトに含めることができるテーブルは最大 50 個です。また、公開するには、少なくとも 1 つの有効なデータアセットが含まれている必要があります。Iceberg テーブルが Google Cloud コンソールにすぐに表示されないことがあります。

  3. 省略可: データ プロダクトのアセットを確認します。

    gcloud dataplex data-products data-assets list \
        --data-product="DATA_PRODUCT_ID" \
        --location="LOCATION" \
        --project="PROJECT_ID"
  4. データ プロダクトを 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 プール 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 ドキュメントのデータ プロダクトのインストールをご覧ください。

次のステップ