Unityカタログのカタログ統合構成

Use the CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) command to create a REST catalog integration that uses vended credentials or an external volume to connect to Databricks Unity Catalog.

注釈

Databricksワークスペースが以下のクラウドプロバイダーのいずれかでホストされているUnity Catalogのカタログ統合を作成できます。

  • AWS

  • Azure

  • Google Cloud

You can configure a catalog integration for Unity Catalog that uses OAuth or bearer authentication:

Configure an OAuth catalog integration

ステップ1:Databricksワークスペース URL を確認する

Databricksワークスペース URL は、Databricksワークスペースにアクセスするために使用する URL です。カタログ統合を作成する時に後で指定するため、この URL を確認する必要があります。

  1. Databricksワークスペースの URL を確認します。

    この URL を確認する方法については、Databricksアカウントがホストされている場所のトピックをご参照ください。

  2. Databricksワークスペースの URL をテキストエディターにコピーします。

ステップ2:Databricksにサービスプリンシパルを追加する

  1. サービスプリンシパルを追加するには、Databricksアカウントがホストされている場所のトピックをご参照ください。

  2. サービスプリンシパルの アプリケーション ID 値をテキストエディターにコピーし、安全に保存します。この値は、後でSnowflakeでカタログ統合を作成するときに指定します。

ステップ3:サービスプリンシパルの OAuth シークレットを作成する

  1. サービスプリンシパルの OAuth シークレットを作成するには、Databricksアカウントがホストされている場所のトピックをご参照ください。

  2. 生成した シークレット 値をテキストエディターにコピーし、安全に保存します。この値は、後でSnowflakeでカタログ統合を作成するときに指定します。

    重要

    クライアントシークレットが表示されるのは1回だけです。ダイアログを閉じる前に必ずコピーしてください。

ステップ4:SnowflakeがUnity Catalogのカタログにアクセスできるようにする

このステップでは、Databricksを使用して、SnowflakeがUnity Catalogのカタログにアクセスできるようにします。

ベンディング認証情報を通じてUnity CatalogのカタログにSnowflakeがアクセスできるようにするには、まずメタストアレベルで、メタストアの外部データアクセスを有効にする必要があります。次に、サービスプリンシパルにカタログに対するUnity Catalog権限を付与する必要があります。

メタストアで外部データアクセスを有効にする(ベンディングされた認証情報のみ)

ベンディングされた認証情報を使用するカタログ統合を作成する場合は、Databricksのメタストアで外部データアクセスを有効にする必要があります。外部ボリュームを使用するカタログ統合を作成する場合は、このステップを省略できます。

メタストアで外部データアクセスを有効にする方法については、Databricksアカウントがホストされている場所のトピックをご参照ください。

ワークスペースにサービスプリンシパルを割り当てる

次に、サービスプリンシパルをDatabricksワークスペースに割り当てる必要があります。

手順については、Databricksアカウントがホストされている場所のトピックをご参照ください。

サービスプリンシパルにカタログへのアクセスを付与する

次に、サービスプリンシパルにUnity Catalog権限を付与する必要があります。指定した権限に基づいてSnowflakeがカタログにアクセスできるようにするには、これらの権限をサービスプリンシパルに付与する必要があります。

全機能の権限

Snowflakeで全機能を有効にするには、次の権限を付与する必要があります。

注釈

Snowflakeのアクセスを制限する場合は、Databricksドキュメントで Unity Catalogの特権とセキュリティ保護可能なオブジェクト をご参照ください。

権限

説明

EXTERNAL USE SCHEMA

クラウドストレージ内のテーブルデータにアクセスできるように、Unity CatalogがSnowflakeに仮のスコープ付き認証情報を生成して提供できるようにします。

注釈

この権限は、ベンディングされた認証情報を使用するカタログ統合を作成する場合にのみ必要です。外部ボリュームを使用するカタログ統合を作成する場合は必要ないため、外部ボリュームを使用している場合は、サンプルコードブロックから削除します。

MODIFY

Snowflakeがテーブルでデータを追加、更新、削除できるようにします。

SELECT

Snowflakeがテーブルをクエリし、テーブルメタデータにアクセスできるようにします。カタログリンクデータベースでのデータの読み取りやテーブルの検出など、Snowflakeのすべての操作に必要です。

USE CATALOG

Snowflakeにカタログへのアクセスを許可します。Unity Catalogのオブジェクトに接続して操作するために必要です。

USE SCHEMA

Snowflakeにカタログ内のスキーマ(名前空間)へのアクセスを許可します。特定のスキーマのテーブルを表示および操作するために必要です。

権限を付与する

カタログエクスプローラーまたは SQL を使用して権限を付与できます。

Databricksカタログエクスプローラーを使用して権限を付与するには、Databricksアカウントがホストされている場所のトピックをご参照ください。

重要

Principals フィールドで、ユーザーのメールアドレスやグループの名前ではなく、サービスプリンシパルの名前を入力する必要があります。

ステップ5:カタログ統合を使用する

次の例は、 OAuth を使用する REST カタログ統合を作成します。

CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_oauth_vended_credentials
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
REST_CONFIG = (
  CATALOG_URI = '<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest'
  CATALOG_NAME = '<catalog_name>'
  ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
  TYPE = OAUTH
  OAUTH_TOKEN_URI = '<databricks_workspace_url>/oidc/v1/token'
  OAUTH_CLIENT_ID = '<client_id>'
  OAUTH_CLIENT_SECRET = '<oauth_secret>'
  OAUTH_ALLOWED_SCOPES = ('all-apis')
)
ENABLED = TRUE;
Copy

条件:

  • <databricks_workspace_url> はDatabricksワークスペースの URL を指定します。この URL を見つけるには、 ステップ1:Databricksワークスペース URL を確認する をご参照ください。

    こちらは、各クラウドプラットフォームのDatabricksワークスペース URL の例です。

    • AWS のDatabricks: https://dbc-a1a1a1a1-a1a1.cloud.databricks.com

    • Azure Databricks: https://adb-1111111111111111.1.azuredatabricks.net

    • **Google CloudのDatabricks **: https://1111111111111111.1.gcp.databricks.com

  • <catalog_name> は、Snowflakeを接続するUnity Catalogのカタログ名を指定します。この名前は、 Data> Catalogs のDatabricksワークスペースにあります。

  • ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS はUnity Catalogのベンディングされた認証情報を使用するようにカタログ統合を構成します。

    注釈

    外部ボリュームを使用するカタログ統合を作成する場合は、 ACCESS_DELEGATION_MODE パラメーターを除外する必要があります。

  • <client_id> はDatabricksサービスプリンシパルの OAuth クライアント ID を指定します。Databricksでサービスプリンシパルを追加した ときにこの値をコピーしました。

    注釈

    Databricksでは、この値はクライアント ID ではなく *アプリケーション ID*と呼ばれます。

  • <oauth_secret> はDatabricksサービスプリンシパルの OAuth シークレットを指定します。サービスプリンシパルの OAuth シークレットを作成した ときにこの値をコピーしました。

ステップ6:カタログ統合を確認する

次のステップ

Unity Catalogでカタログ用のカタログ統合を構成したら、 CREATE DATABASE(カタログリンク) コマンドを使用し、作成したカタログ統合を指定することでカタログリンクデータベースを作成します。その後、SnowflakeはUnity Catalogのカタログと自動的に同期してスキーマとIcebergテーブルを検出し、リモートテーブルをカタログリンクデータベースに登録します。

カタログリンクデータベースを作成する時に、カタログ統合を指定します。

For example:

CREATE OR REPLACE DATABASE my_linked_db
   LINKED_CATALOG = (
      CATALOG = 'unity_catalog_int_oauth_vended_credentials'
   );
Copy

注釈

Configure a bearer token catalog integration

ステップ1:Databricksワークスペース URL を確認する

Databricksワークスペース URL は、Databricksワークスペースにアクセスするために使用する URL です。カタログ統合を作成する時に後で指定するため、この URL を確認する必要があります。

  1. Databricksワークスペースの URL を確認します。

    この URL を確認する方法については、Databricksアカウントがホストされている場所のトピックをご参照ください。

  2. Databricksワークスペースの URL をテキストエディターにコピーします。

ステップ2:Databricksで個人用アクセストークン( PAT )を追加する

認証にベアラートークンを使用するカタログ統合を作成する時に指定する必要があるため、個人用アクセストークン( PAT )を追加する必要があります。

  1. Databricksに PAT を追加するには、Databricksアカウントがホストされている場所のトピックをご参照ください。

  2. PAT の値をテキストエディターにコピーし、安全に保存します。この値は、後でSnowflakeでカタログ統合を作成するときに指定します。

ステップ3:SnowflakeがUnity Catalogのカタログにアクセスできるようにする

このステップでは、Databricksを使用して、SnowflakeがUnity Catalogのカタログにアクセスできるようにします。

ベンディング認証情報を通じてUnity CatalogのカタログにSnowflakeがアクセスできるようにするには、まずメタストアレベルで、メタストアの外部データアクセスを有効にする必要があります。次に、Databricksユーザーにカタログに対するUnity Catalog権限を付与する必要があります。これは PAT が継承します。

メタストアで外部データアクセスを有効にする(ベンディングされた認証情報のみ)

ベンディングされた認証情報を使用するカタログ統合を作成する場合は、Databricksのメタストアで外部データアクセスを有効にする必要があります。外部ボリュームを使用するカタログ統合を作成する場合は、このステップを省略できます。

メタストアで外部データアクセスを有効にする方法については、Databricksアカウントがホストされている場所のトピックをご参照ください。

Databricksユーザーにカタログへのアクセスを付与する

次に、DatabricksユーザーUnity Catalog権限を付与する必要があります。指定した権限に基づいてSnowflakeがカタログにアクセスできるようにするには、これらの権限をDatabricksユーザーに付与する必要があります。認証に PAT を使用する場合、 PAT を作成したDatabricksユーザーに付与されたすべての権限を継承します。

全機能の権限

Snowflakeで全機能を有効にするには、次の権限を付与する必要があります。

注釈

Snowflakeのアクセスを制限する場合は、Databricksドキュメントで Unity Catalogの特権とセキュリティ保護可能なオブジェクト をご参照ください。

権限

説明

EXTERNAL USE SCHEMA

クラウドストレージ内のテーブルデータにアクセスできるように、Unity CatalogがSnowflakeに仮のスコープ付き認証情報を生成して提供できるようにします。

注釈

この権限は、ベンディングされた認証情報を使用するカタログ統合を作成する場合にのみ必要です。外部ボリュームを使用するカタログ統合を作成する場合は必要ないため、外部ボリュームを使用している場合は、サンプルコードブロックから削除します。

MODIFY

Snowflakeがテーブルでデータを追加、更新、削除できるようにします。

SELECT

Snowflakeがテーブルをクエリし、テーブルメタデータにアクセスできるようにします。カタログリンクデータベースでのデータの読み取りやテーブルの検出など、Snowflakeのすべての操作に必要です。

USE CATALOG

Snowflakeにカタログへのアクセスを許可します。Unity Catalogのオブジェクトに接続して操作するために必要です。

USE SCHEMA

Snowflakeにカタログ内のスキーマ(名前空間)へのアクセスを許可します。特定のスキーマのテーブルを表示および操作するために必要です。

権限を付与する

カタログエクスプローラーまたは SQL を使用して権限を付与できます。

Databricksカタログエクスプローラーを使用して権限を付与するには、Databricksアカウントがホストされている場所のトピックをご参照ください。

ステップ4:カタログ統合を使用する

The following example creates a REST catalog integration that uses a bearer token with vended credentials:

CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_bearer_vended_credentials
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  REST_CONFIG = (
    CATALOG_URI = '<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest'
    CATALOG_NAME = '<catalog_name>'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = BEARER
    BEARER_TOKEN = '<personal_access_token>'
  )
  ENABLED = TRUE;
Copy

条件:

  • <databricks_workspace_url> はDatabricksワークスペースの URL を指定します。この URL を見つけるには、 ステップ1:Databricksワークスペース URL を確認する をご参照ください。

    こちらは、各クラウドプラットフォームのDatabricksワークスペース URL の例です。

    • AWS のDatabricks: https://dbc-a1a1a1a1-a1a1.cloud.databricks.com

    • Azure Databricks: https://adb-1111111111111111.1.azuredatabricks.net

    • **Google CloudのDatabricks **: https://1111111111111111.1.gcp.databricks.com

  • <catalog_name> は、Snowflakeを接続するUnity Catalogのカタログ名を指定します。この名前は、 Data> Catalogs のDatabricksワークスペースにあります。

  • ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS はUnity Catalogのベンディングされた認証情報を使用するようにカタログ統合を構成します。

    注釈

    外部ボリュームを使用するカタログ統合を作成する場合は、 ACCESS_DELEGATION_MODE パラメーターを除外する必要があります。

  • <personal_access_token> specifies your Databricks personal access token (PAT). An example of a PAT is aaaa111aaaa111a1a1a1a111111a111a1111

ステップ5:カタログ統合を確認する

次のステップ

Unity Catalogでカタログ用のカタログ統合を構成したら、 CREATE DATABASE(カタログリンク) コマンドを使用し、作成したカタログ統合を指定することでカタログリンクデータベースを作成します。その後、SnowflakeはUnity Catalogのカタログと自動的に同期してスキーマとIcebergテーブルを検出し、リモートテーブルをカタログリンクデータベースに登録します。

カタログリンクデータベースを作成する時に、カタログ統合を指定します。

For example:

CREATE OR REPLACE DATABASE my_linked_db
   LINKED_CATALOG = (
      CATALOG = 'unity_catalog_int_bearer_vended_credentials'
   );
Copy

注釈