Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Ao acessar fontes de dados externas por meio do JDBC, a autenticação geralmente é necessária. Em vez de inserir credenciais diretamente em blocos de anotações, você pode armazenar credenciais com segurança usando segredos do Databricks e consultá-las em seus blocos de anotações e trabalhos. Essa abordagem aumenta a segurança e simplifica o gerenciamento de credenciais. Esta página fornece uma visão geral dos segredos do Databricks.
Nota
A Databricks recomenda o uso do Unity Catalog para configurar o acesso aos dados no armazenamento em nuvem. Consulte Conectar-se ao armazenamento de objetos na nuvem usando o Unity Catalog.
Visão geral dos segredos
Para configurar e usar informações confidenciais:
- Crie um âmbito de segredo. Um escopo secreto é uma coleção de segredos identificados por um nome.
- Adicionar segredos ao escopo
- Atribua permissões no escopo secreto.
- Referencie segredos no seu código.
Para obter um exemplo completo de como usar segredos em seus fluxos de trabalho, consulte Tutorial: Criar e usar um segredo do Databricks. Para usar um segredo em uma propriedade de configuração do Spark ou variável de ambiente, consulte Usar um segredo em uma propriedade de configuração do Spark ou variável de ambiente.
Aviso
Administradores de espaço de trabalho, criadores de segredos e usuários que receberam permissão podem acessar e ler segredos do Databricks. Embora o Databricks tente redigir valores secretos nas saídas do notebook, não é possível impedir totalmente que esses usuários visualizem conteúdos secretos. Sempre atribua permissões de acesso secretas cuidadosamente para proteger informações confidenciais.
Gerenciar escopos secretos
Um escopo secreto é uma coleção de segredos identificados por um nome. O Databricks recomenda alinhar escopos secretos a funções ou aplicativos em vez de indivíduos.
Existem dois tipos de âmbito secreto:
- Suportado pelo Cofre de Chaves do Azure: pode-se referenciar segredos armazenados num Cofre de Chaves do Azure usando âmbitos secretos suportados pelo Cofre de Chaves do Azure. O escopo secreto baseado no Cofre de Chaves do Azure é uma interface de leitura única para o Cofre de Chaves. Você deve gerenciar segredos em escopos secretos apoiados pelo Cofre de Chaves do Azure no Azure.
- Databricks-backed: um escopo secreto com suporte da Databricks é armazenado num banco de dados criptografado de propriedade e gerido pela Azure Databricks.
Depois de criar um escopo secreto, você pode atribuir permissões para conceder aos usuários acesso para ler, gravar e gerenciar escopos secretos.
Criar um escopo secreto apoiado pelo Cofre de Chaves do Azure
Esta seção descreve como criar um escopo secreto apoiado pelo Cofre de Chaves do Azure usando o portal do Azure e a interface do usuário do espaço de trabalho do Azure Databricks. Você também pode criar um escopo secreto apoiado pelo Cofre de Chaves do Azure usando a CLI do Databricks.
Requisitos
- Você deve ter uma instância do cofre de chaves do Azure. Se você não tiver uma instância do cofre de chaves, siga as instruções em Criar um cofre de chaves usando o portal do Azure.
- Você deve ter a função de Colaborador do Cofre de Chaves, Colaborador ou Proprietário no cofre de chaves do Azure que deseja usar para gerir o escopo secreto.
Nota
A criação de um escopo secreto apoiado pelo Cofre de Chaves do Azure requer a função de Colaborador ou Proprietário na instância do cofre de chaves do Azure, mesmo que o serviço Azure Databricks tenha recebido acesso ao cofre de chaves anteriormente.
Se o cofre de chaves existir em um locatário diferente do espaço de trabalho do Azure Databricks, o usuário do Azure AD que cria o escopo secreto deverá ter permissão para criar entidades de serviço no locatário do cofre de chaves. Caso contrário, ocorrerá o seguinte erro:
Unable to grant read/list permission to Databricks service principal to KeyVault 'https://xxxxx.vault.azure.net/': Status code 403, {"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."},"requestId":"XXXXX","date":"YYYY-MM-DDTHH:MM:SS"}}
Configurar sua instância do cofre de chaves do Azure para o Azure Databricks
Faça logon no Portal do Azure, localize e selecione a instância do cofre de chaves do Azure.
Em Configurações, clique no separador Configuração de acesso.
Definir o modelo de permissão para a política de acesso ao Vault .
Nota
A criação de um âmbito secreto suportado pelo Cofre de Chaves do Azure concede as permissões Obter e Listar à ID da aplicação para o serviço Azure Databricks através de políticas de acesso ao Cofre de Chaves. O modelo de permissão de controle de acesso baseado em função do Azure não é suportado com o Azure Databricks.
Em Configurações , selecione Rede .
No Firewalls e redes virtuais, configure para Permitir acesso de: a Permitir acesso público a partir de redes virtuais específicas e endereços IP.
Em Exceção, marque Permitir que serviços confiáveis da Microsoft ignorem esse firewall.
Nota
Também pode definir Permitir acesso de: para Permitir acesso público a partir de todas as redes.
Criar um âmbito secreto apoiado pelo Azure Key Vault
Aceda a
https://<databricks-instance>#secrets/createScope. Substitua<databricks-instance>pela URL do espaço de trabalho da sua implantação do Azure Databricks. Este URL diferencia maiúsculas de minúsculas. Por exemplo,scopeemcreateScopedeve usar um maiúsculoS).
Introduza o nome do escopo secreto. Os nomes dos âmbitos de segredos são insensíveis a maiúsculas e minúsculas.
Em Gerir Principal, selecione Criador ou Todos os usuários do espaço de trabalho para especificar quais usuários têm a permissão GERIR no âmbito secreto.
A permissão GERENCIAR permite que os usuários leiam, gravem e concedam permissões no escopo. A tua conta deve ter o plano Premium para escolher Criador.
Insira o Nome DNS (por exemplo,
https://databrickskv.vault.azure.net/) e o ID do Recurso, por exemplo:/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKVEssas propriedades estão disponíveis na > de Configurações de um Cofre da Chave do Azure em seu portal do Azure.
Clique em Criar.
Use o comando Databricks CLI
databricks secrets list-scopespara verificar se o escopo foi criado com êxito.
Criar um escopo secreto apoiado por Databricks
Esta seção descreve como criar um escopo secreto usando o da CLI do Databricks (versão 0.205 e superior). Você também pode usar a API de Segredos.
Nomes de escopo secretos:
- Deve ser exclusivo dentro de um espaço de trabalho.
- Deve consistir em caracteres alfanuméricos, traços,
@sublinhados e pontos, e não pode exceder 128 caracteres. - São insensíveis a maiúsculas e minúsculas.
Os nomes de escopo secretos são considerados não confidenciais e legíveis por todos os usuários no espaço de trabalho.
Para criar um escopo usando a CLI do Databricks:
databricks secrets create-scope <scope-name>
Por padrão, os escopos são criados com a permissão GERENCIAR para o usuário que criou o escopo. Depois de criar um escopo secreto apoiado por Databricks, você pode adicionar segredos a ele.
Listar âmbitos secretos
Para listar os escopos existentes em um espaço de trabalho usando a CLI:
databricks secrets list-scopes
Você também pode listar escopos secretos usando a API Secrets.
Eliminar um âmbito de segredo
A exclusão de um escopo secreto exclui todos os segredos e ACLs aplicados ao escopo. Para excluir um escopo usando a CLI, execute o seguinte:
databricks secrets delete-scope <scope-name>
Você também pode excluir um escopo secreto usando a API Secrets.
Gerir segredos
Um segredo é um par chave-valor que armazena material confidencial usando um nome de chave exclusivo dentro de um escopo secreto.
Esta seção descreve como criar um escopo secreto usando o da CLI do Databricks (versão 0.205 e superior). Você também pode usar a API de Segredos. Os nomes dos segredos não são sensíveis a maiúsculas e minúsculas.
Criar um segredo
O método para criar um segredo depende se você está usando um escopo apoiado pelo Azure Key Vault ou um escopo apoiado por Databricks.
Criar um segredo em um escopo apoiado pelo Cofre de Chaves do Azure
Para criar um segredo no Azure Key Vault, use o portal do Azure ou a API REST do Azure Definir Segredo. Para obter um exemplo, consulte Etapa 4: Adicionar o segredo do cliente ao Cofre de Chaves do Azure.
Criar um segredo num escopo suportado por Databricks
Esta seção descreve como criar um segredo usando o da CLI do Databricks (versão 0.205 e superior) ou em um bloco de anotações usando o SDK do Databricks para Python. Você também pode usar a API de Segredos. Os nomes dos segredos não são sensíveis a maiúsculas e minúsculas.
CLI do Databricks
Ao criar um segredo em um escopo apoiado por Databricks, você pode especificar o valor secreto de uma das três maneiras:
- Especifique o valor como uma cadeia de caracteres usando o sinalizador –string-value.
- Insira o segredo quando solicitado interativamente (segredos de linha única).
- Passe o segredo usando a entrada padrão (segredos de várias linhas).
Por exemplo:
databricks secrets put-secret --json '{
"scope": "<scope-name>",
"key": "<key-name>",
"string_value": "<secret>"
}'
Se você estiver criando um segredo de várias linhas, poderá passar o segredo usando a entrada padrão. Por exemplo:
(cat << EOF
this
is
a
multi
line
secret
EOF
) | databricks secrets put-secret <scope-name> <key-name>
Databricks SDK para Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")
Ler um segredo
Esta seção descreve como ler um segredo usando a CLI do Databricks (versão 0.205 e superior) ou em um bloco de anotações usando o utilitário Secrets (dbutils.secrets).
CLI do Databricks
Para ler o valor de um segredo usando a CLI Databricks, você deve decodificar o valor codificado base64. Você pode usar jq para extrair o valor e base --decode decodificá-lo:
databricks secrets get-secret <scope-name> <key-name> | jq -r .value | base64 --decode
Utilitário de Segredos (dbutils.secrets)
password = dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")
Listar segredos
Para listar segredos em um determinado escopo:
databricks secrets list-secrets <scope-name>
A resposta exibe informações de metadados sobre os segredos, como os nomes das chaves dos segredos. Use o utilitário Secrets (dbutils.secrets) em um bloco de anotações ou trabalho para listar esses metadados. Por exemplo:
dbutils.secrets.list('my-scope')
Eliminar um segredo
Para eliminar um segredo dentro de um escopo com a ajuda da CLI do Databricks:
databricks secrets delete-secret <scope-name> <key-name>
Você também pode usar a API de Segredos.
Para remover um segredo de um escopo apoiado pelo Cofre de Chaves do Azure, use a SetSecret API REST do Azure ou a interface do usuário do portal do Azure.
Gerenciar permissões de escopo secreto
Por padrão, o usuário que cria os escopos secretos recebe a permissão MANAGE. Isso permite que o criador do escopo leia segredos no escopo, escreva segredos no escopo e gerencie permissões no escopo.
Nota
As ACLs secretas estão no nível do escopo. Se você usar escopos apoiados pelo Cofre da Chave do Azure, os usuários aos quais é concedido acesso ao escopo terão acesso a todos os segredos no Cofre da Chave do Azure. Para restringir o acesso, use instâncias separadas do cofre de chaves do Azure.
Esta seção descreve como gerenciar o controle de acesso secreto usando o da CLI do Databricks (versão 0.205 e superior). Você também pode usar a API de Segredos. Para obter níveis de permissão secretos, consulte ACLs secretas
Conceder permissões a um usuário em um escopo secreto
Para conceder permissões a um usuário em um escopo secreto usando a CLI do Databricks:
databricks secrets put-acl <scope-name> <principal> <permission>
Fazer um requerimento de PUT para um principal que já tem uma permissão aplicada sobrescreve o nível de permissão existente.
O campo principal especifica uma identidade existente do Azure Databricks. Um utilizador é especificado usando o seu endereço de email, um principal de serviço usando o seu applicationId valor, e um grupo usando o nome do grupo. Para obter mais informações, consulte Principal.
Exibir permissões de escopo secreto
Para exibir todas as permissões de escopo secreto para um determinado escopo secreto:
databricks secrets list-acls <scope-name>
Para obter as permissões de escopo secreto aplicadas a um principal num determinado escopo secreto:
databricks secrets get-acl <scope-name> <principal>
Se não existir uma ACL para o principal e o escopo determinados, esta solicitação falhará.
Excluir uma permissão de escopo secreto
Para excluir uma permissão de escopo secreto aplicada a um principal para um determinado escopo secreto:
databricks secrets delete-acl <scope-name> <principal>
Redação secreta
Armazenar credenciais como segredos do Azure Databricks facilita a proteção de suas credenciais quando você executa blocos de anotações e trabalhos. No entanto, é fácil imprimir acidentalmente um segredo em buffers de saída predefinidos ou exibir o valor durante a atribuição de uma variável.
Para evitar isso, o Azure Databricks redige todos os valores secretos que são lidos usando dbutils.secrets.get() quando referenciados em uma propriedade de configuração do Spark. Quando exibidos, os valores secretos são substituídos por [REDACTED].
Por exemplo, se você definir uma variável como um valor secreto usando dbutils.secrets.get() e, em seguida, imprimir essa variável, essa variável será substituída por [REDACTED].
Aviso
A redação aplica-se apenas a valores secretos literais. A funcionalidade de redação secreta não impede transformações deliberadas e arbitrárias de um literal secreto. Para garantir o controle adequado de segredos, você deve usar listas de controle de acesso para limitar as permissões para executar comandos. Isso impede o acesso não autorizado a contextos de bloco de anotações compartilhados.
Redação secreta em SQL
O Azure Databricks tenta redigir todos os comandos SQL DQL (Data Query Language) que invocam a função secreta, incluindo vistas referenciadas e funções definidas pelo utilizador. Quando a secret função é usada, a saída é substituída por [REDACTED] sempre que possível. Como a redação de notebook, isso só se aplica a valores literais, não a segredos transformados ou referenciados indiretamente.
Para comandos SQL DML (Data Manipulation Language), o Azure Databricks permite pesquisas secretas se o segredo for considerado seguro, por exemplo, quando encapsulado em uma função criptográfica como sha() ou aes_encrypt(), que impede que valores brutos sejam armazenados sem criptografia.
Validação secreta em SQL
O Azure Databricks também aplica a validação para bloquear comandos DML do SQL que podem resultar em segredos não criptografados sendo salvos em tabelas. O analisador de consultas tenta identificar e prevenir esses cenários, o que ajuda a evitar o armazenamento acidental de informações confidenciais em texto sem formatação.