Bibliotecas Allowlist e scripts init em computação compartilhada

No Databricks Runtime 13.3 LTS e superior, você pode adicionar bibliotecas e scripts de inicialização ao allowlist Catálogo do Unity. Isso permite que os usuários aproveitem esses artefatos em computação configurada com o modo de acesso compartilhado.

Você pode permitir a lista de um diretório ou caminho de arquivo antes que esse diretório ou arquivo exista. Consulte Carregar arquivos para um volume do Catálogo Unity.

Nota

Você deve ser um administrador de metastore ou ter o MANAGE ALLOWLIST privilégio de modificar a lista de permissões. Consulte MANAGE ALLOWLIST.

Importante

As bibliotecas usadas como drivers JDBC ou fontes de dados personalizadas do Spark na computação compartilhada habilitada para Unity Catalog exigem ANY FILE permissões.

Algumas bibliotecas instaladas armazenam dados de todos os usuários em um diretório temporário comum. Essas bibliotecas podem comprometer o isolamento do usuário.

Como adicionar itens à lista de permissões

Você pode adicionar itens ao com o allowlist Catalog Explorer ou à API REST.

Para abrir a caixa de diálogo para adicionar itens à lista de permissões no Gerenciador de Catálogos, faça o seguinte:

  1. No seu espaço de trabalho do Azure Databricks, clique em Ícone do catálogoCatálogo.
  2. Clique Ícone de engrenagem para abrir os detalhes do metastore e a interface do usuário de permissões.
  3. Selecione JARs/Init Scripts permitidos.
  4. Clique em Adicionar.

Importante

Esta opção só é apresentada para utilizadores suficientemente privilegiados. Se você não puder acessar a interface do usuário allowlist, entre em contato com o administrador do metastore para obter assistência em bibliotecas allowlisting e scripts init.

Adicionar um script init à lista de permissões

Conclua as seguintes etapas na caixa de diálogo allowlist para adicionar um script init à allowlist:

  1. Em Tipo, selecione Script de inicialização.
  2. Em Tipo de origem, selecione Volume ou o protocolo de armazenamento de objetos.
  3. Especifique o caminho de origem a ser adicionado à lista de permissões. Consulte Como as permissões em caminhos são aplicadas na lista de permissões?.

Adicionar um JAR à lista de permissões

Conclua as seguintes etapas na caixa de diálogo allowlist para adicionar um JAR à allowlist:

  1. Em Tipo, selecione JAR.
  2. Em Tipo de origem, selecione Volume ou o protocolo de armazenamento de objetos.
  3. Especifique o caminho de origem a ser adicionado à lista de permissões. Consulte Como as permissões em caminhos são aplicadas na lista de permissões?.

Adicionar coordenadas Maven à lista de permissões

Conclua as seguintes etapas na caixa de diálogo allowlist para adicionar coordenadas Maven à allowlist:

  1. Em Tipo, selecione Maven.
  2. Em Tipo de origem, selecione Coordenadas.
  3. Insira as coordenadas no seguinte formato: groudId:artifactId:version.
    • Você pode incluir todas as versões de uma biblioteca permitindo o seguinte formato: groudId:artifactId.
    • Você pode incluir todos os artefatos em um grupo permitindo a listagem do seguinte formato: groupId.

Como as permissões em caminhos são aplicadas na lista de permissões?

Você pode usar a lista de permissões para conceder acesso a JARs ou scripts init armazenados em volumes e armazenamento de objetos do Unity Catalog. Se você adicionar um caminho para um diretório em vez de um arquivo, as permissões de lista de permissões serão propagadas para arquivos e diretórios contidos.

A correspondência de prefixo é usada para todos os artefatos armazenados em volumes do Catálogo Unity ou armazenamento de objetos. Para evitar a correspondência de prefixos em um determinado nível de diretório, inclua uma barra à direita (/). Por exemplo: /Volumes/prod-libraries/.

Você pode definir permissões nos seguintes níveis:

  1. O caminho base para o volume ou contêiner de armazenamento.
  2. Um diretório aninhado em qualquer profundidade do caminho base.
  3. Um único ficheiro.

Adicionar um caminho à lista de permissões significa apenas que o caminho pode ser usado para scripts init ou instalação JAR. O Azure Databricks ainda verifica se há permissões para acessar dados no local especificado.

A entidade de segurança usada deve ter READ VOLUME permissões no volume especificado. Consulte SELECT.

No modo de acesso de usuário único, a identidade da entidade atribuída (um usuário ou entidade de serviço) é usada.

No modo de acesso compartilhado:

  • As bibliotecas usam a identidade do instalador da biblioteca.
  • Os scripts de inicialização usam a identidade do proprietário do cluster.

Nota

O modo de acesso compartilhado sem isolamento não oferece suporte a volumes, mas usa a mesma atribuição de identidade que o modo de acesso compartilhado.

O Databricks recomenda configurar todos os privilégios de armazenamento de objetos relacionados a scripts de inicialização e bibliotecas com permissões somente leitura. Os usuários com permissões de gravação nesses locais podem potencialmente modificar o código em arquivos de biblioteca ou scripts de inicialização.

O Databricks recomenda o uso de entidades de serviço do Microsoft Entra ID para gerenciar o acesso a JARs ou scripts de inicialização armazenados no Azure Data Lake Storage Gen2. Use a seguinte documentação vinculada para concluir essa configuração:

  1. Crie uma entidade de serviço com permissões de leitura e lista nos blobs desejados. Consulte Acessar armazenamento usando um princípio de serviço & Microsoft Entra ID(Azure Ative Directory).

  2. Salve suas credenciais usando segredos. Veja Segredos.

  3. Defina as propriedades na configuração do Spark e as variáveis ambientais ao criar um cluster, como no exemplo a seguir:

    Configuração do Spark:

    spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
    spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
    spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
    spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<tenant-id>/oauth2/token
    

    Variáveis ambientais:

    SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
    
  4. (Opcional) Refatore scripts de inicialização usando azcopy ou a CLI do Azure.

    Você pode fazer referência a variáveis ambientais definidas durante a configuração do cluster em seus scripts de inicialização para passar credenciais armazenadas como segredos para validação.

Nota

As permissões de lista de permissões para JARs e scripts de inicialização são gerenciadas separadamente. Se você usar o mesmo local para armazenar ambos os tipos de objetos, deverá adicionar o local à lista de permissões de cada um.