Bibliotecas de lista de permitidos e scripts de inicialização na computação compartilhada

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

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

Observação

Você precisa ser um administrador do metastore ou ter o privilégio MANAGE ALLOWLIST para modificar a lista de permitidos. Confira GERENCIAR LISTA DE PERMITIDOS.

Importante

Bibliotecas usadas como drivers JDBC ou fontes de dados personalizadas do Spark na computação compartilhada habilitada para Catálogo do Unity exigem permissões de ANY FILE.

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 permitidos

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

Para abrir a caixa de diálogo para adicionar itens à lista de permitidos em Catalog Explorer, faça o seguinte:

  1. Em seu Workspace do Azure Databricks, clique em Ícone do catálogo Catálogo.
  2. Clique no ícone de engrenagem para abrir a interface do usuário de detalhes e permissões do metastore.
  3. Selecione JARs permitidos/Scripts de inicialização.
  4. Clique em Adicionar.

Importante

Essa opção só é exibida para usuários com privilégios suficientes. Se você não puder acessar a interface do usuário da lista de permissões, entre em contato com o administrador do metastore para obter assistência em bibliotecas de lista de permissões e scripts de inicialização.

Adicionar um script de inicialização à lista de permitidos

Conclua as seguintes etapas na caixa de diálogo de lista de permissões para adicionar um script de inicialização à lista de permissões:

  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 permitidos. Confira Como as permissões nos caminhos são impostas na lista de permitidos?.

Adicionar um JAR à lista de permissões

Conclua as seguintes etapas na caixa de diálogo de lista de permissões para adicionar um JAR à lista de permissões:

  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 permitidos. Confira Como as permissões nos caminhos são impostas na lista de permitidos?.

Adicionar coordenadas Maven à lista de permissões

Conclua as seguintes etapas na caixa de diálogo de lista de permissões para adicionar coordenadas Maven à lista de permissões:

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

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

Use a lista de permitidos para permitir acesso a JARs ou a scripts de inicialização armazenados em volumes do Catálogo do Unity e no armazenamento de objetos. Se você adicionar um caminho para um diretório em vez de um arquivo, as permissões da lista de permitidos serão propagadas para os arquivos e os diretórios contidos.

A correspondência de prefixo é usada para todos os artefatos armazenados em volumes do Catálogo do Unity ou armazenamento de objetos. Para evitar a correspondência de prefixo em um determinado nível de diretório, inclua uma barra à direita (/). Por exemplo, /Volumes/prod-libraries/ não realizará correspondência de prefixo para arquivos prefixados comprod-libraries. Em vez disso, todos os arquivos e diretórios dentro de /Volumes/prod-libraries/ são adicionados à lista de permissões.

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 a qualquer profundidade do caminho base.
  3. Um único arquivo.

Adicionar um caminho à lista de permissões significa apenas que o caminho pode ser usado para scripts de inicialização 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. Confira SELECT.

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

No modo de acesso compartilhado:

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

Observação

O modo de acesso compartilhado sem isolamento não dá 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 e bibliotecas de inicialização com permissões somente leitura. Os usuários com permissões de gravação nesses locais podem potencialmente modificar código em arquivos de biblioteca ou scripts de inicialização.

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

  1. Crie uma entidade de serviço com permissões de leitura e lista em seus blobs desejados. Consulte Acessar o armazenamento usando uma entidade de serviço e o Microsoft Entra ID (Azure Active Directory).

  2. Salve suas credenciais usando segredos. Confira Segredos.

  3. Defina as propriedades na configuração do Spark e 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 de ambiente:

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

    Você pode referenciar 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.

Observação

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