Configure uma integração de catálogo para o Unity Catalog¶
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.
Nota
Para configurar uma integração de catálogo para conexão com o Databricks Unity Catalog por meio de um endereço IP privado, em vez da internet pública, consulte Configurar uma integração de catálogo Apache Iceberg™ REST com conectividade privada de saída.
Para um tutorial que aborda como conectar o Snowflake a um catálogo no Databricks Unity Catalog usando um banco de dados vinculado a catálogo gravável com credenciais fornecidas por catálogo, consulte Tutorial: Configurar acesso bidirecional a tabelas Apache Iceberg™ no Databricks Unity Catalog.
Você pode criar uma integração de catálogo para o Unity Catalog em que o espaço de trabalho do Databricks esteja hospedado em um dos seguintes provedores de nuvem:
AWS
Azure
Google Cloud
You can configure a catalog integration for Unity Catalog that uses OAuth or bearer authentication:
Configure an OAuth catalog integration¶
Etapa 1: Encontre o URL do seu espaço de trabalho do Databricks¶
O URL do espaço de trabalho do Databricks é o URL que você usa para acessar seu espaço de trabalho do Databricks. Você precisa encontrar esse URL porque vai especificá-lo mais tarde quando criar uma integração de catálogo.
Encontre o URL do seu espaço de trabalho do Databricks.
Para obter instruções sobre como encontrar o URL, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Nomes de instâncias, URLs e IDs de espaço de trabalho
Azure Databricks: Azure Databricks: Determinar o URL por espaço de trabalho
Databricks no Google Cloud: Databricks no Google Cloud: Nomes de instâncias, URLs e IDs de espaço de trabalho
Copie o URL do seu espaço de trabalho do Databricks para um editor de texto.
Etapa 2: Adicionar uma entidade de serviço ao Databricks¶
Para adicionar uma entidade de serviço, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Adicionar entidades de serviço à sua conta
Azure Databricks: Azure Databricks: Adicionar entidades de serviço à sua conta
Databricks no Google Cloud: Databricks no Google Cloud: Adicionar entidades de serviço à sua conta
Copie o valor de ID do aplicativo da sua entidade de serviço em um editor de texto e salve-o com segurança. Você especificará esse valor mais tarde quando criar uma integração de catálogo no Snowflake.
Etapa 3: Criar um segredo OAuth para sua entidade de serviço¶
Para criar um segredo OAuth para sua entidade de serviço, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Criar um segredo OAuth
Azure Databricks: Azure Databricks: Criar um segredo OAuth
Databricks no Google Cloud: Databricks no Google Cloud: Criar um segredo OAuth
Copie o valor do segredo que você gerou em um editor de texto e salve-o com segurança. Você especificará esse valor mais tarde quando criar uma integração de catálogo no Snowflake.
Importante
O segredo do cliente só é exibido uma vez. Certifique-se de copiá-lo antes de fechar a caixa de diálogo.
Etapa 4: Habilitar o acesso do Snowflake ao seu catálogo no Unity Catalog¶
Nesta etapa, você usa o Databricks para habilitar o acesso do Snowflake ao seu catálogo no Unity Catalog.
Para habilitar o acesso do Snowflake ao seu catálogo no Unity Catalog por meio de credenciais fornecidas, primeiro habilite o acesso a dados externos no nível do metastore. Em seguida, você precisa conceder à entidade de serviço os privilégios do Unity Catalog para seu catálogo.
Habilitar o acesso a dados externos no metastore (somente credenciais fornecidas)¶
Se estiver criando uma integração de catálogo que usa credenciais fornecidas, no Databricks, é necessário habilitar o acesso a dados externos no metastore. Se estiver criando uma integração de catálogo que usa um volume externo, é possível pular esta etapa.
Para obter instruções sobre como habilitar o acesso a dados externos no metastore, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Habilitar o acesso a dados externos no metastore
Azure Databricks: Azure Databricks: Habilitar o acesso a dados externos no metastore
Databricks no Google Cloud: Databricks no Google Cloud: Habilitar o acesso a dados externos no metastore
Atribuir sua entidade de serviço a um espaço de trabalho¶
Em seguida, você precisa atribuir sua entidade de serviço ao seu espaço de trabalho do Databricks.
Para obter instruções, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Atribuir uma entidade de serviço a um espaço de trabalho
Azure Databricks: Azure Databricks: Atribuir uma entidade de serviço a um espaço de trabalho
Databricks no Google Cloud: Databricks no Google Cloud: Atribuir uma entidade de serviço a um espaço de trabalho
Conceder à entidade de serviço acesso ao seu catálogo¶
Em seguida, você deve conceder à sua entidade de serviço os privilégios do Unity Catalog. Você precisa conceder esses privilégios à sua entidade de serviço para permitir que o Snowflake acesse o catálogo com base nos privilégios especificados.
Privilégios para funcionalidade completa¶
Para habilitar a funcionalidade completa no Snowflake, você deve conceder os seguintes privilégios:
Nota
Se quiser restringir o acesso ao Snowflake, consulte Privilégios e objetos protegidos do Unity Catalog na documentação do Databricks.
Privilégio |
Descrição |
|---|---|
|
Permite que o Unity Catalog gere e forneça credenciais temporárias com escopo ao Snowflake para acesso a dados de tabela no armazenamento em nuvem. Nota Esse privilégio só é necessário quando você cria uma integração de catálogo que usa credenciais fornecidas. Ele não é necessário quando você cria uma integração de catálogo que usa um volume externo. Portanto, se estiver usando um volume externo, remova-o do bloco de código de exemplo. |
|
Permite que o Snowflake adicione, atualize e exclua dados de uma tabela. |
|
Permite que o Snowflake consulte tabelas e acesse metadados das tabelas. Necessário para todas as operações no Snowflake, incluindo a leitura de dados e a descoberta de tabelas no banco de dados vinculado a catálogo. |
|
Permite que o Snowflake acesse o catálogo. Necessário para se conectar e interagir com objetos no Unity Catalog. |
|
Permite que o Snowflake acesse os esquemas (namespaces) no catálogo. Necessário para visualizar e trabalhar com tabelas em esquemas específicos. |
Privilégios Grant¶
É possível conceder privilégios usando o Catalog Explorer ou o SQL.
Para conceder permissões usando o Databricks Catalog Explorer, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Conceder permissões em um objeto
Azure Databricks: Azure Databricks: Conceder permissões em um objeto
Databricks no Google Cloud: Databricks no Google Cloud: Conceder permissões em um objeto
Importante
No campo Principals, você deve inserir o nome da sua entidade de serviço, não o endereço de e-mail de um usuário ou o nome de um grupo.
Para conceder à sua entidade de serviço os privilégios do Unity Catalog, você deve especificar o ID do aplicativo para sua entidade de serviço.
Por exemplo, a seguinte instrução concede os privilégios do catálogo example_sales_catalog a uma entidade de serviço com o ID de aplicativo 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`;
Para obter mais informações sobre como conceder privilégios do Unity Catalog à sua entidade de serviço, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Conceder privilégios do Unity Catalog a uma entidade e Databricks no AWS: Conceder permissões em um objeto usando SQL
Azure Databricks: Azure Databricks: Conceder privilégios do Unity Catalog a uma entidade e Azure Databricks: Conceder permissões em um objeto usando SQL
Databricks no Google Cloud: Databricks no Google Cloud: Conceder privilégios do Unity Catalog a uma entidade e Databricks no Google Cloud: Conceder permissões em um objeto usando SQL
Etapa 5: Criação de uma integração de catálogo¶
O exemplo a seguir cria uma integração de catálogo REST que usa OAuth:
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;
Onde:
<databricks_workspace_url>especifica o URL do seu espaço de trabalho do Databricks. Para encontrar esse URL, consulte Etapa 1: Encontre o URL do seu espaço de trabalho do Databricks.Veja a seguir um exemplo de URL de espaço de trabalho do Databricks para cada plataforma de nuvem:
Databricks no AWS:
https://dbc-a1a1a1a1-a1a1.cloud.databricks.comAzure Databricks:
https://adb-1111111111111111.1.azuredatabricks.netDatabricks no Google Cloud:
https://1111111111111111.1.gcp.databricks.com
<catalog_name>especifica o nome do seu catálogo no Unity Catalog ao qual você deseja conectar o Snowflake. Você encontra esse nome no espaço de trabalho do Databricks em Data > Catalogs.ACCESS_DELEGATION_MODE = VENDED_CREDENTIALSconfigura a integração de catálogo para usar as credenciais fornecidas do Unity Catalog.Nota
Se estiver criando uma integração de catálogo que usa um volume externo, você deverá excluir o parâmetro
ACCESS_DELEGATION_MODE.<client_id>especifica o ID do cliente OAuth da sua entidade de serviço do Databricks. Você copiou esse valor quando adicionou uma entidade de serviço ao Databricks.Nota
No Databricks, esse valor é chamado ID do aplicativo, e não ID do cliente.
<oauth_secret>especifica o segredo OAuth da sua entidade de serviço do Databricks. Você copiou esse valor quando criou um segredo OAuth para sua entidade de serviço.
Etapa 6: Verificar a integração do seu catálogo¶
Para verificar a configuração da sua integração de catálogo, chame a função SYSTEM$VERIFY_CATALOG_INTEGRATION.
Para obter mais informações, incluindo um exemplo, consulte Usar SYSTEM$VERIFY_CATALOG_INTEGRATION para verificar a configuração da integração de catálogo.
Próximos passos¶
Depois de configurar uma integração de catálogo para o seu catálogo no Unity Catalog, use o comando CREATE DATABASE (vinculado a catálogo) para criar um banco de dados vinculado a catálogo especificando a integração de catálogo que você criou. O Snowflake é sincronizado automaticamente com seu catálogo no Unity Catalog para detectar esquemas e tabelas Iceberg, e registra as tabelas remotas no banco de dados vinculado a catálogo.
Ao criar seu banco de dados vinculado a catálogo, você especifica a integração de catálogo.
For example:
CREATE OR REPLACE DATABASE my_linked_db
LINKED_CATALOG = (
CATALOG = 'unity_catalog_int_oauth_vended_credentials'
);
Nota
Se você estiver usando um volume externo, deverá incluir o parâmetro
EXTERNAL_VOLUMEcom a instrução CREATE DATABASE. Para obter mais informações, consulte CREATE DATABASE (vinculado a catálogo).Para obter mais informações sobre como trabalhar com bancos de dados vinculados a catálogo, consulte Usar um banco de dados vinculado a catálogo para tabelas Apache Iceberg™.
Configure a bearer token catalog integration¶
Etapa 1: Encontre o URL do seu espaço de trabalho do Databricks¶
O URL do espaço de trabalho do Databricks é o URL que você usa para acessar seu espaço de trabalho do Databricks. Você precisa encontrar esse URL porque vai especificá-lo mais tarde quando criar uma integração de catálogo.
Encontre o URL do seu espaço de trabalho do Databricks.
Para obter instruções sobre como encontrar o URL, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Nomes de instâncias, URLs e IDs de espaço de trabalho
Azure Databricks: Azure Databricks: Determinar o URL por espaço de trabalho
Databricks no Google Cloud: Databricks no Google Cloud: Nomes de instâncias, URLs e IDs de espaço de trabalho
Copie o URL do seu espaço de trabalho do Databricks para um editor de texto.
Etapa 2: Adicionar um token de acesso pessoal (PAT) ao Databricks¶
Você precisa adicionar um token de acesso pessoal (Personal Access Token, PAT) porque deverá especificá-lo quando criar uma integração de catálogo que usa um token de portador para autenticação.
Para adicionar um PAT ao Databricks, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Autenticar com tokens de acesso pessoal do Databricks (legado)
Azure Databricks: Azure Databricks: Autenticar com tokens de acesso pessoal do Azure Databricks (legado)
Databricks no Google Cloud: Databricks no Google Cloud: Autenticar com tokens de acesso pessoal do Databricks (legado)
Copie o valor do seu PAT em um editor de texto e salve-o com segurança. Você especificará esse valor mais tarde quando criar uma integração de catálogo no Snowflake.
Etapa 3: Habilitar o acesso do Snowflake ao seu catálogo no Unity Catalog¶
Nesta etapa, você usa o Databricks para habilitar o acesso do Snowflake ao seu catálogo no Unity Catalog.
Para habilitar o acesso do Snowflake ao seu catálogo no Unity Catalog por meio de credenciais fornecidas, primeiro habilite o acesso a dados externos no nível do metastore. Em seguida, você precisa conceder ao seu usuário Databricks os privilégios do Unity Catalog para seu catálogo, que o PAT herda.
Habilitar o acesso a dados externos no metastore (somente credenciais fornecidas)¶
Se estiver criando uma integração de catálogo que usa credenciais fornecidas, no Databricks, é necessário habilitar o acesso a dados externos no metastore. Se estiver criando uma integração de catálogo que usa um volume externo, é possível pular esta etapa.
Para obter instruções sobre como habilitar o acesso a dados externos no metastore, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Habilitar o acesso a dados externos no metastore
Azure Databricks: Azure Databricks: Habilitar o acesso a dados externos no metastore
Databricks no Google Cloud: Databricks no Google Cloud: Habilitar o acesso a dados externos no metastore
Conceder ao usuário Databricks acesso ao seu catálogo¶
Em seguida, você deve conceder ao seu usuário Databricks os privilégios do Unity Catalog. Você precisa conceder esses privilégios ao seu usuário Databricks para permitir que o Snowflake acesse o catálogo com base nos privilégios especificados. Quando você usa um PAT para autenticação, ele herda todos os privilégios concedidos ao usuário Databricks que criou o PAT.
Privilégios para funcionalidade completa¶
Para habilitar a funcionalidade completa no Snowflake, você deve conceder os seguintes privilégios:
Nota
Se quiser restringir o acesso ao Snowflake, consulte Privilégios e objetos protegidos do Unity Catalog na documentação do Databricks.
Privilégio |
Descrição |
|---|---|
|
Permite que o Unity Catalog gere e forneça credenciais temporárias com escopo ao Snowflake para acesso a dados de tabela no armazenamento em nuvem. Nota Esse privilégio só é necessário quando você cria uma integração de catálogo que usa credenciais fornecidas. Ele não é necessário quando você cria uma integração de catálogo que usa um volume externo. Portanto, se estiver usando um volume externo, remova-o do bloco de código de exemplo. |
|
Permite que o Snowflake adicione, atualize e exclua dados de uma tabela. |
|
Permite que o Snowflake consulte tabelas e acesse metadados das tabelas. Necessário para todas as operações no Snowflake, incluindo a leitura de dados e a descoberta de tabelas no banco de dados vinculado a catálogo. |
|
Permite que o Snowflake acesse o catálogo. Necessário para se conectar e interagir com objetos no Unity Catalog. |
|
Permite que o Snowflake acesse os esquemas (namespaces) no catálogo. Necessário para visualizar e trabalhar com tabelas em esquemas específicos. |
Privilégios Grant¶
É possível conceder privilégios usando o Catalog Explorer ou o SQL.
Para conceder permissões usando o Databricks Catalog Explorer, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Conceder permissões em um objeto
Azure Databricks: Azure Databricks: Conceder permissões em um objeto
Databricks no Google Cloud: Databricks no Google Cloud: Conceder permissões em um objeto
Para conceder ao seu usuário Databricks os privilégios do Unity Catalog, você deve especificar o ID desse usuário Databricks.
Por exemplo, a seguinte instrução concede os privilégios do catálogo example_sales_catalog ao usuário Databricks j.smith@example.com.
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`;
Para obter mais informações sobre como conceder privilégios do Unity Catalog ao usuário Databricks, consulte o tópico de acordo com o local onde sua conta Databricks está hospedada:
Databricks no AWS: Databricks no AWS: Conceder privilégios do Unity Catalog a uma entidade e Databricks no AWS: Conceder permissões em um objeto usando SQL
Azure Databricks: Azure Databricks: Conceder privilégios do Unity Catalog a uma entidade e Azure Databricks: Conceder permissões em um objeto usando SQL
Databricks no Google Cloud: Databricks no Google Cloud: Conceder privilégios do Unity Catalog a uma entidade e Databricks no Google Cloud: Conceder permissões em um objeto usando SQL
Etapa 4: Criação de uma integração de catálogo¶
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;
Onde:
<databricks_workspace_url>especifica o URL do seu espaço de trabalho do Databricks. Para encontrar esse URL, consulte Etapa 1: Encontre o URL do seu espaço de trabalho do Databricks.Veja a seguir um exemplo de URL de espaço de trabalho do Databricks para cada plataforma de nuvem:
Databricks no AWS:
https://dbc-a1a1a1a1-a1a1.cloud.databricks.comAzure Databricks:
https://adb-1111111111111111.1.azuredatabricks.netDatabricks no Google Cloud:
https://1111111111111111.1.gcp.databricks.com
<catalog_name>especifica o nome do seu catálogo no Unity Catalog ao qual você deseja conectar o Snowflake. Você encontra esse nome no espaço de trabalho do Databricks em Data > Catalogs.ACCESS_DELEGATION_MODE = VENDED_CREDENTIALSconfigura a integração de catálogo para usar as credenciais fornecidas do Unity Catalog.Nota
Se estiver criando uma integração de catálogo que usa um volume externo, você deverá excluir o parâmetro
ACCESS_DELEGATION_MODE.<personal_access_token>specifies your Databricks personal access token (PAT). An example of a PAT isaaaa111aaaa111a1a1a1a111111a111a1111.
Etapa 5: Verificar a integração do seu catálogo¶
Para verificar a configuração da sua integração de catálogo, chame a função SYSTEM$VERIFY_CATALOG_INTEGRATION.
Para obter mais informações, consulte Usar SYSTEM$VERIFY_CATALOG_INTEGRATION para verificar a configuração de integração do seu catálogo.
Próximos passos¶
Depois de configurar uma integração de catálogo para o seu catálogo no Unity Catalog, use o comando CREATE DATABASE (vinculado a catálogo) para criar um banco de dados vinculado a catálogo especificando a integração de catálogo que você criou. O Snowflake é sincronizado automaticamente com seu catálogo no Unity Catalog para detectar esquemas e tabelas Iceberg, e registra as tabelas remotas no banco de dados vinculado a catálogo.
Ao criar seu banco de dados vinculado a catálogo, você especifica a integração de catálogo.
For example:
CREATE OR REPLACE DATABASE my_linked_db
LINKED_CATALOG = (
CATALOG = 'unity_catalog_int_bearer_vended_credentials'
);
Nota
Se você estiver usando um volume externo, deverá incluir o parâmetro
EXTERNAL_VOLUMEcom a instrução CREATE DATABASE. Para obter mais informações, consulte CREATE DATABASE (vinculado a catálogo).Para obter mais informações sobre como trabalhar com bancos de dados vinculados a catálogo, consulte Usar um banco de dados vinculado a catálogo para tabelas Apache Iceberg™.