Controlar o acesso externo aos dados no Catálogo do Unity
Importante
Esse recurso está em uma versão prévia.
Dica
Para obter informações sobre como ler dados do Azure Databricks usando o Microsoft Fabric, consulte Usar o Microsoft Fabric para ler dados registrados no Catálogo do Unity.
Este artigo descreve como controlar o acesso aos dados no Azure Databricks quando os mecanismos de processamento externos usam APIs abertas do Catálogo do Unity ou APIs do Iceberg para acessar esses dados, especificamente quando os mecanismos usam a funcionalidade de venda automática de credenciais do Catálogo do Unity para obter acesso.
Os controles de acesso descritos neste artigo abrangem cenários em que credenciais temporárias são usadas para ler dados de seus catálogos do Catálogo do Unity usando mecanismos e interfaces externos, como:
- APIs REST do Iceberg
- Microsoft Fabric
- DuckDB
- Apache Spark e Trino
Observação
O Catálogo do Unity implementa APIs REST Iceberg via Delta Lake UniForm, uma maneira alternativa de fornecer aos clientes do Iceberg acesso somente leitura às tabelas Delta no Catálogo do Unity. Confira Usar o UniForm para fazer a leitura das Tabelas do Delta com clientes do Iceberg.
Visão geral da venda de credenciais e da concessão de acesso ao mecanismo externo
Quando você quiser usar um mecanismo externo para acessar dados registrados no metastore do Catálogo do Unity, deverá solicitar uma credencial de curta duração usando a API REST do Catálogo do Unity. O processo pelo qual o Unity Catalog concede essa credencial é chamado de venda de credenciais.
Para receber uma credencial temporária, a entidade de segurança do Azure Databricks (usuário, grupo ou entidade de serviço) que faz a solicitação deve ter o privilégio EXTERNAL USE SCHEMA
no esquema que contém a tabela que deseja acessar do mecanismo externo. O metastore do Catálogo do Unity que contém o esquema também deve ser habilitado explicitamente para acesso externo.
Quando a entidade privilegiada recebe a credencial temporária, ela recebe uma cadeia de caracteres de token de acesso de curta duração e uma URL do local de armazenamento em nuvem que os usuários do mecanismo externo podem usar para acessar o objeto de dados (tabela) do local de armazenamento em nuvem. A forma como a credencial e o token são usados pelo mecanismo externo é específica para o mecanismo externo e não é abordada aqui.
O mecanismo externo e a configuração do Catálogo do Azure Databricks Unity também devem atender aos requisitos de rede específicos enumerados nas seções a seguir.
Requisitos
Esta seção lista as configurações de rede, as opções de metastore do Catálogo do Unity, os tipos de tabela e as permissões necessárias para acesso seguro a objetos de dados do Catálogo do Unity de mecanismos externos usando as APIs abertas do Catálogo do Unity ou as APIs REST do Iceberg.
Requisitos de rede
- Para acessar o workspace do Azure Databricks usando APIs Abertas do Catálogo do Unity ou APIs REST do Iceberg, a URL do workspace deve estar acessível ao mecanismo que executa a solicitação. Isso inclui workspaces que usam listas de acesso IP ou Link Privado do Azure.
- Para acessar o local de armazenamento em nuvem subjacente para objetos de dados registrados no Catálogo do Unity, as URLs de armazenamento geradas pela API de credenciais temporárias do Catálogo do Unity devem estar acessíveis ao mecanismo que executa a solicitação. Isso significa que o mecanismo deve ser permitido nas listas de firewall e controle de acesso à rede para as contas de armazenamento em nuvem subjacentes.
Requisitos de metastore e objeto de dados do Catálogo do Unity
- O metastore deve ser habilitado para acesso a dados externos.
- Somente tabelas são compatíveis durante a visualização pública.
- As tabelas externas dão suporte à leitura e gravação.
- As tabelas gerenciadas só podem ser lidas.
- Não há suporte para os seguintes tipos de dados:
- Tabelas com filtros de linha ou máscaras de coluna.
- Tabelas compartilhadas usando o Compartilhamento Delta.
- Tabelas federadas do Lakehouse (tabelas estrangeiras).
- Exibições
- Exibições materializadas
- Tabelas de streaming do Delta Live Tables
- Tabelas Online
- Índices de busca em vetores
Requisitos de permissão
A entidade de segurança que solicita a credencial temporária deve ter:
O privilégio
EXTERNAL USE SCHEMA
no esquema que o contém ou em seu catálogo pai.Esse privilégio deve sempre ser concedido explicitamente. Somente o proprietário do catálogo pai pode concedê-lo. Para evitar exfiltração acidental, o
ALL PRIVILEGES
não inclui o privilégio e os proprietários do esquemaEXTERNAL USE SCHEMA
não têm esse privilégio por padrão.Permissão
SELECT
na tabela,USE CATALOG
em seu catálogo pai eUSE SCHEMA
em seu esquema pai.
Habilitar o acesso a dados externos no metastore
Para permitir que mecanismos externos acessem dados em um metastore, um administrador de metastore deve habilitar o acesso a dados externos para o metastore. Essa opção está desabilitada por padrão para impedir o acesso externo não autorizado.
- Em um espaço de trabalho do Azure Databricks anexado ao metastore, clique em Catálogo.
- Clique no ícone de engrenagem na parte superior do painel Catálogo e selecione Metastore.
- Na guia Detalhes, habilite Acesso a dados externos.
Solicitar uma credencial temporária para acesso a dados externos
Para solicitar uma credencial temporária para acesso a dados externos, um usuário do workspace que atenda aos requisitos listados acima deve usar a API /api/2.1/unity-catalog/temporary-table-credentials
.
Observação
Você pode recuperar uma lista de tabelas que dão suporte à venda automática de credenciais invocando a API ListTables com a opção include_manifest_capabilities
habilitada. Somente as tabelas marcadas HAS_DIRECT_EXTERNAL_ENGINE_READ_SUPPORT
ou HAS_DIRECT_EXTERNAL_ENGINE_WRITE_SUPPORT
qualificadas para referência na API temporary-table-credentials. Consulte GET /api/2.1/unity-catalog/tables.
Por exemplo:
curl -X POST -H "Authentication: Bearer $OAUTH_TOKEN" \
https://<workspace-instance>/api/2.1/unity-catalog/temporary-table-credentials \
-d '{"table_id": "<string>", "operation_name": "<READ|READ_WRITE>"}'
Para obter detalhes, consulte POST /api/2.1/unity-catalog/temporary-table-credentials na referência da API REST do Azure Databricks.