Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um âmbito de segredos do espaço de trabalho é uma coleção nomeada de segredos num único espaço de trabalho. As permissões de escopo de segredos controlam quem pode ler, escrever e gerir os segredos nele contidos. As permissões aplicam-se a todo o scope, não a segredos individuais, por isso um utilizador que consegue ler um segredo num scope pode lê-los todos. Para comparar os âmbitos de segredos do workspace com os segredos do Unity Catalog, veja Escolher onde armazenar um segredo.
Para usar um escopo secreto da workspace:
- Crie um âmbito de segredo.
- Adicione segredos credenciais ao escopo.
- Atribua permissões no âmbito.
- Faz referência aos segredos no teu código, ou numa propriedade de configuração do Spark ou variável de ambiente. Consulte Usar um segredo numa propriedade de configuração do Spark ou numa variável de ambiente.
Warning
Administradores de espaços de trabalho, criadores de segredos e utilizadores que receberam permissão podem aceder e ler segredos do Azure Databricks. Embora o Azure Databricks tente ocultar valores secretos nas saídas dos notebooks, não é possível impedir totalmente que estes utilizadores vejam conteúdos secretos. Sempre atribua permissões de acesso secretas cuidadosamente para proteger informações confidenciais.
Gerenciar escopos secretos
O Azure Databricks recomenda alinhar os âmbitos de segredos a funções ou aplicações 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. Um escopo secreto suportado pelo Azure Key Vault é uma interface de apenas leitura para o Key Vault. Geres os segredos do mesmo no Azure.
- Databricks-backed: um escopo secreto com suporte da Databricks é armazenado num banco de dados criptografado de propriedade e gerido pela Azure Databricks.
Important
Os âmbitos de segredos armazenados no Azure Key Vault suportam apenas o modelo de permissões da política de acesso do Vault, não o controlo de acesso baseado em papéis (RBAC) do Azure. Os novos cofres de chaves do Azure usam o RBAC do Azure por defeito. Se o seu cofre de chaves usar o Azure RBAC, mude o modelo de permissões para Vault access policy antes de criar um escopo secreto apoiado pelo Azure Key Vault.
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
Crie um âmbito de segredos com suporte do Azure Key Vault no portal do Azure e na IU da área de trabalho do Azure Databricks. Também pode usar a linha de comando do Databricks.
Requirements
- 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.
Note
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 num tenant diferente do workspace do Azure Databricks, o utilizador do Microsoft Entra ID que cria o escopo secreto deve ter permissão para criar principais de serviço no tenant 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
Inicie sessão no portal Azure, encontre 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 . Os novos cofres de chaves passam a usar, por predefinição, o controlo de acesso baseado em papéis do Azure, que os escopos de segredos apoiados no Azure Key Vault não suportam.
Note
Criar um escopo secreto suportado pelo Azure Key Vault concede permissões Get e List ao ID da aplicação do serviço Azure Databricks usando políticas de acesso ao Vault.
Em Configurações, selecione Rede.
Em Firewalls e redes virtuais , defina Permitir acesso de: para Permitir acesso público a partir de redes virtuais e endereços IP específicos.
Em Exceção, marque Permitir que serviços confiáveis da Microsoft ignorem esse firewall.
Note
Você também pode definir Permitir acesso de: para Permitir acesso público de todas as redes.
Criar um âmbito secreto apoiado pelo Azure Key Vault
Vá para
https://<databricks-instance>#secrets/createScope. Substitua<databricks-instance>pelo URL workspace da sua implementação Azure Databricks. Este URL diferencia maiúsculas de minúsculas. Por exemplo,scopeemcreateScopedeve ser escrito em maiúsculasS.
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
Crie um escopo secreto com a CLI Databricks (versão 0.205 e superior) ou a API Secrets.
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 secreto
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.
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.
Criar um segredo num escopo suportado por Databricks
Crie um segredo com a CLI Databricks (versão 0.205 e superior), o SDK Databricks para Python num notebook, ou a API Secrets. 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 com a flag
--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
Leia um segredo com a CLI Databricks (versão 0.205 e superior), ou num notebook com a utilidade Secrets (dbutils.secrets).
CLI do Databricks
Para ler o valor de um segredo usando a CLI Databricks, deve decodificar o valor codificado base64. Você pode usar jq para extrair o valor e base64 --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 mostra metadados sobre os segredos, como os nomes das chaves. Para listar estes metadados num notebook ou job, use a utilidade Secrets (dbutils.secrets). 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 defeito, o utilizador que cria um scope secreto tem a MANAGE permissão sobre ele, que lhe permite ler segredos no scope, escrever segredos no scope e gerir as suas permissões.
Note
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.
Gerir permissões de escopo secreto com a CLI Databricks (versão 0.205 e superior) ou a Secrets API. Para níveis de permissão secretos, veja ACLs secretos.
Conceder permissões a um usuário em um escopo secreto
Note
Conceder permissões num âmbito de segredos requer o plano Premium.
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.
Por exemplo, para permitir que um grupo como datascience leia os segredos num escopo, conceda-lhe READ:
databricks secrets put-acl <scope-name> <group> READ
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 ajuda a protegê-las quando executas notebooks e jobs. No entanto, ainda pode acidentalmente imprimir um segredo em buffers de saída padrão ou mostrar o valor durante a atribuição de variáveis.
Para evitar isto, o Azure Databricks tenta ocultar valores secretos que são lidos com dbutils.secrets.get() e referenciados numa 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].
Warning
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 controlar segredos, use listas de controlo de acesso para limitar 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 ocultar todos os comandos da linguagem de consulta de dados SQL (DQL) 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 de linguagem de manipulação de dados SQL (DML), o Azure Databricks permite pesquisas de segredos se o segredo for considerado seguro. Por exemplo, um segredo é seguro quando envolvido numa função criptográfica como sha() ou aes_encrypt(), que impedem que valores brutos sejam armazenados sem encriptação.
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.
Recursos adicionais
| Resource | Description |
|---|---|
| Gestão de segredos | Compare os escopos secretos do workspace com os segredos do Unity Catalog e veja onde pode usar cada um. |
| Utilize um segredo numa propriedade de configuração do Spark ou variável de ambiente | Referencie segredos nas propriedades de configuração do Spark e variáveis de ambiente. |