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.
注釈
パブリックインターネット経由の代わりに、プライベート IP アドレスを介してDatabricks Unity Catalogに接続するためのカタログ統合を構成するには、 アウトバウンドプライベート接続による Apache Iceberg™ REST のカタログ統合の構成 をご参照ください。
カタログ提供の認証情報を持つ書き込み可能なカタログリンクデータベースを使用して、SnowflakeをDatabricks Unity Catalogのカタログに接続する方法を説明するチュートリアルについては、 チュートリアル:Databricks Unity Catalogで Apache Iceberg™ テーブルへの双方向アクセスを設定する をご参照ください。
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 を確認する必要があります。
Databricksワークスペースの URL を確認します。
この URL を確認する方法については、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:ワークスペースインスタンス名、 URLs および IDs <https://docs.databricks.com/aws/workspace/workspace-details#workspace-instance-names-urls-and-ids>`_
Azure Databricks:Azure Databricks:ワークスペースごとの URL を判断する
**Google CloudのDatabricks **:Google CloudのDatabricks:ワークスペースインスタンス名、 URLs および IDs
Databricksワークスペースの URL をテキストエディターにコピーします。
ステップ2:Databricksにサービスプリンシパルを追加する¶
サービスプリンシパルを追加するには、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:アカウントにサービスプリンシパルを追加する <https://docs.databricks.com/aws/admin/users-groups/manage-service-principals?language=Account%C2%A0console#-add-service-principals-to-your-account>`_
Azure Databricks:Azure Databricks:アカウントにサービスプリンシパルを追加する
**Google CloudのDatabricks **:Google CloudのDatabricks:アカウントにサービスプリンシパルを追加する
サービスプリンシパルの アプリケーション ID 値をテキストエディターにコピーし、安全に保存します。この値は、後でSnowflakeでカタログ統合を作成するときに指定します。
ステップ3:サービスプリンシパルの OAuth シークレットを作成する¶
サービスプリンシパルの OAuth シークレットを作成するには、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:OAuth シークレットを作成する <https://docs.databricks.com/aws/dev-tools/auth/oauth-m2m#-step-1-create-an-oauth-secret>`_
Azure Databricks:Azure Databricks:OAuth シークレットを作成する
**Google CloudのDatabricks **:Google CloudのDatabricks:OAuth シークレットを作成する
生成した シークレット 値をテキストエディターにコピーし、安全に保存します。この値は、後でSnowflakeでカタログ統合を作成するときに指定します。
重要
クライアントシークレットが表示されるのは1回だけです。ダイアログを閉じる前に必ずコピーしてください。
ステップ4:SnowflakeがUnity Catalogのカタログにアクセスできるようにする¶
このステップでは、Databricksを使用して、SnowflakeがUnity Catalogのカタログにアクセスできるようにします。
ベンディング認証情報を通じてUnity CatalogのカタログにSnowflakeがアクセスできるようにするには、まずメタストアレベルで、メタストアの外部データアクセスを有効にする必要があります。次に、サービスプリンシパルにカタログに対するUnity Catalog権限を付与する必要があります。
メタストアで外部データアクセスを有効にする(ベンディングされた認証情報のみ)¶
ベンディングされた認証情報を使用するカタログ統合を作成する場合は、Databricksのメタストアで外部データアクセスを有効にする必要があります。外部ボリュームを使用するカタログ統合を作成する場合は、このステップを省略できます。
メタストアで外部データアクセスを有効にする方法については、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:メタストアで外部データアクセスを有効にする <https://docs.databricks.com/aws/en/external-access/admin#enable-external-data-access-on-the-metastore>`_
Azure Databricks:Azure Databricks:メタストアで外部データアクセスを有効にする
**Google CloudのDatabricks **:Google CloudのDatabricks:メタストアで外部データアクセスを有効にする
ワークスペースにサービスプリンシパルを割り当てる¶
次に、サービスプリンシパルをDatabricksワークスペースに割り当てる必要があります。
手順については、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:ワークスペースにサービスプリンシパルを割り当てる <https://docs.databricks.com/aws/en/admin/users-groups/manage-service-principals?language=Account%C2%A0console#assign-a-service-principal-to-a-workspace>`_
Azure Databricks:Azure Databricks:ワークスペースにサービスプリンシパルを割り当てる
**Google CloudのDatabricks **:Google CloudのDatabricks:ワークスペースにサービスプリンシパルを割り当てる
サービスプリンシパルにカタログへのアクセスを付与する¶
次に、サービスプリンシパルにUnity Catalog権限を付与する必要があります。指定した権限に基づいてSnowflakeがカタログにアクセスできるようにするには、これらの権限をサービスプリンシパルに付与する必要があります。
全機能の権限¶
Snowflakeで全機能を有効にするには、次の権限を付与する必要があります。
注釈
Snowflakeのアクセスを制限する場合は、Databricksドキュメントで Unity Catalogの特権とセキュリティ保護可能なオブジェクト をご参照ください。
権限 |
説明 |
|---|---|
|
クラウドストレージ内のテーブルデータにアクセスできるように、Unity CatalogがSnowflakeに仮のスコープ付き認証情報を生成して提供できるようにします。 注釈 この権限は、ベンディングされた認証情報を使用するカタログ統合を作成する場合にのみ必要です。外部ボリュームを使用するカタログ統合を作成する場合は必要ないため、外部ボリュームを使用している場合は、サンプルコードブロックから削除します。 |
|
Snowflakeがテーブルでデータを追加、更新、削除できるようにします。 |
|
Snowflakeがテーブルをクエリし、テーブルメタデータにアクセスできるようにします。カタログリンクデータベースでのデータの読み取りやテーブルの検出など、Snowflakeのすべての操作に必要です。 |
|
Snowflakeにカタログへのアクセスを許可します。Unity Catalogのオブジェクトに接続して操作するために必要です。 |
|
Snowflakeにカタログ内のスキーマ(名前空間)へのアクセスを許可します。特定のスキーマのテーブルを表示および操作するために必要です。 |
権限を付与する¶
カタログエクスプローラーまたは SQL を使用して権限を付与できます。
Databricksカタログエクスプローラーを使用して権限を付与するには、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:オブジェクトに対する権限を付与する <https://docs.databricks.com/aws/en/data-governance/unity-catalog/manage-privileges#-grant-permissions-on-an-object>`_
Azure Databricks:Azure Databricks:オブジェクトに対する権限を付与する
**Google CloudのDatabricks **:Google CloudのDatabricks:オブジェクトに対する権限を付与する
重要
Principals フィールドで、ユーザーのメールアドレスやグループの名前ではなく、サービスプリンシパルの名前を入力する必要があります。
サービスプリンシパルにUnity Catalog権限を付与するには、サービスプリンシパルのアプリケーション ID を指定する必要があります。
たとえば、次のステートメントは example_sales_catalog カタログ権限をアプリケーション ID ( 1aaa1a1a-11a1-1111-1111-1a11111aaa1a )を持つサービスプリンシパルに付与します。
GRANT EXTERNAL USE SCHEMA ON CATALOG example_sales_catalog TO `1aaa1a1a-11a1-1111-1111-1a11111aaa1a`;
GRANT MODIFY ON CATALOG example_sales_catalog TO `1aaa1a1a-11a1-1111-1111-1a11111aaa1a`;
GRANT SELECT ON CATALOG example_sales_catalog TO `1aaa1a1a-11a1-1111-1111-1a11111aaa1a`;
GRANT USE CATALOG ON CATALOG example_sales_catalog TO `1aaa1a1a-11a1-1111-1111-1a11111aaa1a`;
GRANT USE SCHEMA ON CATALOG example_sales_catalog TO `1aaa1a1a-11a1-1111-1111-1a11111aaa1a`;
サービスプリンシパルにUnity Catalog権限を付与する方法の詳細については、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:プリンシパルにUniity Catalog権限を付与する <https://docs.databricks.com/aws/en/external-access/admin#grant-a-principal-unity-catalog-privileges>`_ および ` AWS のDatabricks:SQL を使用してオブジェクトに対する権限を付与する <https://docs.databricks.com/aws/en/data-governance/unity-catalog/manage-privileges?language=SQL#-grant-permissions-on-an-object>`_
Azure Databricks:Azure Databricks:プリンシパルにUniity Catalog権限を付与する および ` AzureのDatabricks:SQL を使用してオブジェクトに対する権限を付与する <https://learn.microsoft.com/en-us/azure/databricks/data-governance/unity-catalog/manage-privileges/#sql-2>`_
**Google CloudのDatabricks **:Google CloudのDatabricks:プリンシパルにUniity Catalog権限を付与する および Google CloudのDatabricks:SQL を使用してオブジェクトに対する権限を付与する
ステップ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;
条件:
<databricks_workspace_url>はDatabricksワークスペースの URL を指定します。この URL を見つけるには、 ステップ1:Databricksワークスペース URL を確認する をご参照ください。こちらは、各クラウドプラットフォームのDatabricksワークスペース URL の例です。
<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:カタログ統合を確認する¶
カタログ統合の構成を確認するには、 SYSTEM$VERIFY_CATALOG_INTEGRATION 関数を呼び出します。
例などの詳細については、 SYSTEM$VERIFY_CATALOG_INTEGRATION を使用してカタログ統合構成を確認する をご参照ください。
次のステップ¶
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'
);
注釈
外部ボリュームを使用している場合は、
EXTERNAL_VOLUMEパラメーターを CREATEDATABASE ステートメントに含める必要があります。詳細については、 CREATE DATABASE(カタログリンク) をご参照ください。カタログリンクデータベースの操作の詳細については、 Apache Iceberg™ テーブルにはカタログリンクデータベースを使用します をご参照ください。
Configure a bearer token catalog integration¶
ステップ1:Databricksワークスペース URL を確認する¶
Databricksワークスペース URL は、Databricksワークスペースにアクセスするために使用する URL です。カタログ統合を作成する時に後で指定するため、この URL を確認する必要があります。
Databricksワークスペースの URL を確認します。
この URL を確認する方法については、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:ワークスペースインスタンス名、 URLs および IDs <https://docs.databricks.com/aws/workspace/workspace-details#workspace-instance-names-urls-and-ids>`_
Azure Databricks:Azure Databricks:ワークスペースごとの URL を判断する
**Google CloudのDatabricks **:Google CloudのDatabricks:ワークスペースインスタンス名、 URLs および IDs
Databricksワークスペースの URL をテキストエディターにコピーします。
ステップ2:Databricksで個人用アクセストークン( PAT )を追加する¶
認証にベアラートークンを使用するカタログ統合を作成する時に指定する必要があるため、個人用アクセストークン( PAT )を追加する必要があります。
Databricksに PAT を追加するには、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:Databricksの個人用アクセストークンで認証する(レガシー) <https://docs.databricks.com/aws/en/dev-tools/auth/pat>`_
Azure Databricks:Azure Databricks:Azure Databricksの個人用アクセストークンで認証する(レガシー)
**Google CloudのDatabricks **:Google CloudのDatabricks:Databricksの個人用アクセストークンで認証する(レガシー)
PAT の値をテキストエディターにコピーし、安全に保存します。この値は、後でSnowflakeでカタログ統合を作成するときに指定します。
ステップ3:SnowflakeがUnity Catalogのカタログにアクセスできるようにする¶
このステップでは、Databricksを使用して、SnowflakeがUnity Catalogのカタログにアクセスできるようにします。
ベンディング認証情報を通じてUnity CatalogのカタログにSnowflakeがアクセスできるようにするには、まずメタストアレベルで、メタストアの外部データアクセスを有効にする必要があります。次に、Databricksユーザーにカタログに対するUnity Catalog権限を付与する必要があります。これは PAT が継承します。
メタストアで外部データアクセスを有効にする(ベンディングされた認証情報のみ)¶
ベンディングされた認証情報を使用するカタログ統合を作成する場合は、Databricksのメタストアで外部データアクセスを有効にする必要があります。外部ボリュームを使用するカタログ統合を作成する場合は、このステップを省略できます。
メタストアで外部データアクセスを有効にする方法については、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:メタストアで外部データアクセスを有効にする <https://docs.databricks.com/aws/en/external-access/admin#enable-external-data-access-on-the-metastore>`_
Azure Databricks:Azure Databricks:メタストアで外部データアクセスを有効にする
**Google CloudのDatabricks **:Google CloudのDatabricks:メタストアで外部データアクセスを有効にする
Databricksユーザーにカタログへのアクセスを付与する¶
次に、DatabricksユーザーUnity Catalog権限を付与する必要があります。指定した権限に基づいてSnowflakeがカタログにアクセスできるようにするには、これらの権限をDatabricksユーザーに付与する必要があります。認証に PAT を使用する場合、 PAT を作成したDatabricksユーザーに付与されたすべての権限を継承します。
全機能の権限¶
Snowflakeで全機能を有効にするには、次の権限を付与する必要があります。
注釈
Snowflakeのアクセスを制限する場合は、Databricksドキュメントで Unity Catalogの特権とセキュリティ保護可能なオブジェクト をご参照ください。
権限 |
説明 |
|---|---|
|
クラウドストレージ内のテーブルデータにアクセスできるように、Unity CatalogがSnowflakeに仮のスコープ付き認証情報を生成して提供できるようにします。 注釈 この権限は、ベンディングされた認証情報を使用するカタログ統合を作成する場合にのみ必要です。外部ボリュームを使用するカタログ統合を作成する場合は必要ないため、外部ボリュームを使用している場合は、サンプルコードブロックから削除します。 |
|
Snowflakeがテーブルでデータを追加、更新、削除できるようにします。 |
|
Snowflakeがテーブルをクエリし、テーブルメタデータにアクセスできるようにします。カタログリンクデータベースでのデータの読み取りやテーブルの検出など、Snowflakeのすべての操作に必要です。 |
|
Snowflakeにカタログへのアクセスを許可します。Unity Catalogのオブジェクトに接続して操作するために必要です。 |
|
Snowflakeにカタログ内のスキーマ(名前空間)へのアクセスを許可します。特定のスキーマのテーブルを表示および操作するために必要です。 |
権限を付与する¶
カタログエクスプローラーまたは SQL を使用して権限を付与できます。
Databricksカタログエクスプローラーを使用して権限を付与するには、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:オブジェクトに対する権限を付与する <https://docs.databricks.com/aws/en/data-governance/unity-catalog/manage-privileges#-grant-permissions-on-an-object>`_
Azure Databricks:Azure Databricks:オブジェクトに対する権限を付与する
**Google CloudのDatabricks **:Google CloudのDatabricks:オブジェクトに対する権限を付与する
DatabricksユーザーにUnity Catalog権限を付与するには、Databricksユーザーのユーザー ID を指定する必要があります。
たとえば、次のステートメントは example_sales_catalog カタログ権限を j.smith@example.com Databricksユーザーに付与します。
GRANT EXTERNAL USE SCHEMA ON CATALOG example_sales_catalog TO `j.smith@example.com`;
GRANT MODIFY ON CATALOG example_sales_catalog TO `j.smith@example.com`;
GRANT SELECT ON CATALOG example_sales_catalog TO `j.smith@example.com`;
GRANT USE CATALOG ON CATALOG example_sales_catalog TO `j.smith@example.com`;
GRANT USE SCHEMA ON CATALOG example_sales_catalog TO `j.smith@example.com`;
DatabricksユーザーにUnity Catalog権限を付与する方法の詳細については、Databricksアカウントがホストされている場所のトピックをご参照ください。
AWS のDatabricks:` AWS のDatabricks:プリンシパルにUniity Catalog権限を付与する <https://docs.databricks.com/aws/en/external-access/admin#grant-a-principal-unity-catalog-privileges>`_ および ` AWS のDatabricks:SQL を使用してオブジェクトに対する権限を付与する <https://docs.databricks.com/aws/en/data-governance/unity-catalog/manage-privileges?language=SQL#-grant-permissions-on-an-object>`_
Azure Databricks:Azure Databricks:プリンシパルにUniity Catalog権限を付与する および ` AzureのDatabricks:SQL を使用してオブジェクトに対する権限を付与する <https://learn.microsoft.com/en-us/azure/databricks/data-governance/unity-catalog/manage-privileges/#sql-2>`_
**Google CloudのDatabricks **:Google CloudのDatabricks:プリンシパルにUniity Catalog権限を付与する および Google CloudのDatabricks:SQL を使用してオブジェクトに対する権限を付与する
ステップ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;
条件:
<databricks_workspace_url>はDatabricksワークスペースの URL を指定します。この URL を見つけるには、 ステップ1:Databricksワークスペース URL を確認する をご参照ください。こちらは、各クラウドプラットフォームのDatabricksワークスペース URL の例です。
<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 isaaaa111aaaa111a1a1a1a111111a111a1111。
ステップ5:カタログ統合を確認する¶
カタログ統合の構成を確認するには、 SYSTEM$VERIFY_CATALOG_INTEGRATION 関数を呼び出します。
詳細については、 SYSTEM$VERIFY_CATALOG_INTEGRATION を使用してカタログ統合構成を確認する をご参照ください。
次のステップ¶
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'
);
注釈
外部ボリュームを使用している場合は、
EXTERNAL_VOLUMEパラメーターを CREATEDATABASE ステートメントに含める必要があります。詳細については、 CREATE DATABASE(カタログリンク) をご参照ください。カタログリンクデータベースの操作の詳細については、 Apache Iceberg™ テーブルにはカタログリンクデータベースを使用します をご参照ください。