Controle o acesso externo aos dados no Unity Catalog

Prévia

Esse recurso está em Pré-lançamento público.

Este artigo descreve como controlar o acesso aos dados em Databricks quando os mecanismos de processamento externo usam Unity Catalog open APIs ou Iceberg APIs para acessar esses dados, especificamente quando os mecanismos usam a funcionalidade de venda de credenciais Unity Catalog para obter acesso.

Os controles de acesso descritos neste artigo abrangem cenários em que credenciais temporárias são usadas para ler dados dos catálogos do site Unity Catalog usando mecanismos e interfaces externos, como, por exemplo, o senhor:

  • APIs REST do Iceberg

  • Microsoft Fabric

  • DuckDB

  • Apache Spark e Trino

Observação

O Unity Catalog implementa as APIs REST do Iceberg por meio do Delta Lake UniForm, uma maneira alternativa de fornecer aos clientes do Iceberg acesso somente leitura às tabelas do Delta no Unity Catalog. Consulte Usar o UniForm para ler tabelas Delta com clientes Iceberg.

Visão geral da venda de credenciais e da concessão de acesso externo ao mecanismo

Quando quiser usar um mecanismo externo para acessar dados registrados no metastore do Unity Catalog, o senhor deve solicitar uma credencial de curta duração usando a API REST do Unity Catalog. O processo pelo qual o Unity Catalog concede essa credencial é chamado de venda automática de credenciais.

Para que seja concedida uma credencial temporária, o Databricks principal (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 Unity Catalog que contém o esquema também deve ser ativado explicitamente para acesso externo.

Quando a credencial temporária é concedida ao principal privilegiado, ele recebe uma cadeia de caracteres access token de curta duração e um URL do local de armazenamento cloud que os usuários do mecanismo externo podem usar para acessar o objeto de dados (tabela) do local de armazenamento cloud. A forma como a credencial e os tokens são usados pelo mecanismo externo é específica do mecanismo externo e não é abordada aqui.

O mecanismo externo e a configuração do Databricks Unity Catalog também devem atender a requisitos específicos de rede que são enumerados nas seções a seguir.

Requisitos

Esta seção lista as configurações de rede, as opções de metastore do Unity Catalog, os tipos de tabela e as permissões necessárias para o acesso seguro aos objetos de dados do Unity Catalog de mecanismos externos usando as APIs abertas do Unity Catalog ou as APIs REST do Iceberg.

Requisitos de rede

  • Para acessar o Databricks workspace usando o Unity Catalog Open APIs ou Iceberg REST APIs, o URL workspace deve estar acessível ao mecanismo que executa a solicitação. Isso inclui espaços de trabalho que usam listas de acesso IP ou o serviço Google Private Connect.

  • Para acessar o local de armazenamento subjacente do cloud para objetos de dados registrados no Unity Catalog, os URLs de armazenamento gerados pelas credenciais temporárias do Unity Catalog API devem estar acessíveis ao mecanismo que executa a solicitação. Isso significa que o mecanismo deve ser permitido no firewall e nas listas de controle de acesso à rede para a conta de armazenamento subjacente cloud.

Requisitos do metastore e do objeto de dados do Unity Catalog

  • O metastore deve estar habilitado para acesso externo a dados.

  • Somente tabelas são suportadas durante a visualização pública.

    • Tabelas externas suportam leitura e gravação.

    • As tabelas gerenciar só podem ser lidas.

  • Os seguintes tipos de tabela não são suportados:

    • Tabelas com filtros de linha ou máscaras de coluna.

    • Tabelas compartilhadas usando o Delta Sharing.

    • tabelas federadas de lakehouse (tabelas estrangeiras).

    • Exibições

    • Visualizações materializadas

    • Delta Live Tables tabelas de transmissão

    • Tabelas online

    • Índices de pesquisa vetorial

Requisitos de permissão

O diretor 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 principal.

    Esse privilégio sempre deve ser concedido explicitamente. Somente o proprietário do catálogo principal pode concedê-lo. Para evitar a exfiltração acidental, ALL PRIVILEGES não inclui o privilégio EXTERNAL USE SCHEMA, e os proprietários de esquemas não têm esse privilégio em default.

  • SELECT permissão na tabela, USE CATALOG em seu catálogo principal e USE SCHEMA em seu esquema pai.

Habilitar o acesso externo a dados no metastore

Para permitir que mecanismos externos acessem dados em uma metastore, um administrador da metastore deve habilitar o acesso externo aos dados da metastore. Essa opção é desativada pelo site default para evitar acesso externo não autorizado.

  1. Em um Databricks workspace anexado ao metastore, clique em Ícone de catálogo Catalog.

  2. Clique no ícone de Ícone de engrenagem engrenagem na parte superior do painel Catálogo e selecione Metastore.

  3. Em Details (Detalhes ) tab, ative External data access (Acesso a dados externos).

Solicite uma credencial temporária para acesso externo a dados

Para solicitar uma credencial temporária para acesso a dados externos, um usuário do workspace que atenda aos requisitos listados acima deve usar o /api/2.1/unity-catalog/temporary-table-credentials API.

Observação

O senhor pode recuperar uma lista de tabelas que suportam a venda automática de credenciais invocando a API ListTables com a opção include_manifest_capabilities ativada. Somente as tabelas marcadas como HAS_DIRECT_EXTERNAL_ENGINE_READ_SUPPORT ou HAS_DIRECT_EXTERNAL_ENGINE_WRITE_SUPPORT são elegíveis 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 da Databricks.