Gerenciamento de segredos
Às vezes, o acesso aos dados exige que você se autentique em fontes de dados externas por meio do JDBC. Em vez de inserir diretamente suas credenciais em um notebook, você pode usar os segredos do Azure Databricks para armazenar suas credenciais e referenciá-las em notebooks e trabalhos. Este artigo fornece uma visão geral dos segredos do Azure Databricks.
Visão geral dos segredos
Para configurar e usar segredos, você:
- Criar um escopo secreto. Um escopo de segredos é a coleção de segredos identificada por um nome.
- Adicionar segredos ao escopo
- Atribua permissões no escopo do segredo.
- Acesse segredos usando o Databricks Utilities, consulte Utilitário de segredos (dbutils.secrets).
Para obter um exemplo de ponta a ponta 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 ou variável de ambiente do Spark, consulte Usar um segredo em uma propriedade de configuração ou variável de ambiente do Spark.
Aviso
Administradores, criadores de segredo e usuários que receberam permissão podem ler os segredos do Azure Databricks. Embora o Databricks se esforce para redigir valores secretos que podem ser exibidos em notebooks, não é possível impedir que esses usuários leiam segredos. Consulte Redação secreta.
Gerenciar escopos secretos
Um escopo de segredos é a coleção de segredos identificada por um nome. A Databricks recomenda alinhar escopos secretos a funções ou aplicativos em vez de indivíduos.
Há dois tipos de escopo secreto:
- Com suporte do Azure Key Vault: você pode fazer referência a segredos armazenados em um Azure Key Vault usando escopos secretos com suporte do Azure Key Vault. O escopo secreto com suporte do Azure Key Vault é uma interface somente leitura para o Key Vault. Você deve gerenciar segredos em escopos de segredo com suporte do Azure Key Vault no Azure.
- Com suporte do Databricks: um escopo de segredo com suporte do Databricks é armazenado em um banco de dados criptografado de propriedade e gerenciado pelo 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 de script.
Criar um escopo de segredo com backup Azure Key Vault
Esta seção descreve como criar um escopo de segredos com suporte do Azure Key Vault usando o portal do Azure e a interface do usuário do workspace do Azure Databricks. Você também pode criar um escopo de segredo com suporte do Azure Key Vault usando a CLI do Databricks.
Requisitos
- Você deve ter uma instância do Azure Key Vault. Se você não tem uma instância do de cofre de chaves, siga as instruções em Criar um Key Vault usando o portal do Azure.
- Você deve ter a função Colaborador, Colaborador ou Proprietário do Key Vault na instância do cofre de chaves do Azure que deseja usar para dar suporte ao escopo secreto.
Observação
A criação de um escopo de segredo com suporte do Azure Key Vault requer a função 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.
Se o cofre de chaves existir em um locatário diferente do workspace do Azure Databricks, o usuário do Azure AD que cria o escopo de segredos deverá ter permissão para criar entidades de serviço no locatário do cofre de chaves. Caso contrário, o seguinte erro ocorrerá:
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 na guia Configuração do Access.
Defina o Modelo de permissão como Política de acesso do key vault.
Observação
A criação de uma função de escopo de segredo com suporte do Azure Key Vault concede as permissões Obter e Listar à ID do aplicativo para o serviço Azure Databricks usando as políticas de acesso do cofre de chaves. O modelo de permissão de controle de acesso baseado em função do Azure não é compatível com o Azure Databricks.
Em Configurações, selecione Rede.
Em Firewalls e redes virtuais, defina Permitir acesso de: a Permitir acesso público de redes virtuais e endereços IP específicos.
Em Exceção, selecione Permitir que serviços confiáveis da Microsoft contornem este firewall.
Observação
Você também pode definir Permitir acesso de: para Permitir acesso público de todas as redes.
Criar um escopo de segredo com backup Azure Key Vault
Ir para
https://<databricks-instance>#secrets/createScope
. Substitua<databricks-instance>
pela URL do workspace da sua implantação do Azure Databricks. Essa URL diferencia maiúsculas de minúsculas. Por exemplo,scope
emcreateScope
deve usar uma maiúsculaS
).Insira o nome do escopo de segredos. Os nomes de escopo secreto não diferenciam maiúsculas de minúsculas.
Em Gerenciar Entidade de Segurança , selecione Criador ou Todos os usuários do workspace para especificar quais usuários têm a permissão MANAGE no escopo do segredo.
A permissão MANAGE permite que os usuários leiam, gravem e concedam permissões no escopo. Sua conta deve ter o plano Premium para escolher Creator.
Insira o Nome DNS (por exemplo,
https://databrickskv.vault.azure.net/
) e a ID do Recurso, por exemplo:/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
Essas propriedades estão disponíveis na guia Configurações > Propriedades de um Azure Key Vault no portal do Azure.
Clique em Criar.
Use o comando
databricks secrets list-scopes
da CLI do Databricks para verificar se o escopo foi criado com sucesso.
Criar um escopo de segredo com suporte do Databricks
Esta seção descreve como criar um escopo secreto usando a interface O que é a CLI do Databricks? (versão 0.205 e superior). Você também pode usar a API de Segredos.
Nomes de escopo secreto:
- Deve ser exclusivo dentro de um workspace.
- Deve consistir em caracteres alfanuméricos, traços,
@
sublinhados e pontos, e não pode exceder 128 caracteres. - Não diferenciam maiúsculas de minúsculas.
Os nomes de escopo secretos são considerados não confidenciais e podem ser lidos por todos os usuários no workspace.
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 MANAGE atribuída ao usuário que criou o escopo. Depois de criar um escopo de segredo com suporte do Databricks, você pode adicionar segredos a ele.
Listar escopos de segredo
Para listar os escopos existentes em um workspace usando a CLI:
databricks secrets list-scopes
Você também pode listar escopos secretos usando a API Secrets.
Excluir um escopo de segredo
A exclusão de um escopo de segredo 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 de segredos usando a API de Segredos.
Gerenciar segredos
Um segredo é um par de 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 a interface O que é a CLI do Databricks? (versão 0.205 e superior). Você também pode usar a API de Segredos. Os nomes secretos não diferenciam maiúsculas de minúsculas.
Criar um segredo
O método usado para criar um segredo depende do fato de você estar usando um escopo com suporte do Azure Key Vault ou um escopo com suporte do Databricks.
Criar um segredo em um escopo com suporte do Azure Key Vault
Para criar um segredo no Azure Key Vault, use o portal do Azure ou a API REST do Azure Set Secret . Para obter um exemplo, consulte Etapa 4: Adicionar o segredo do cliente ao Azure Key Vault.
Criar um segredo em um escopo com suporte do Databricks
Esta seção descreve como criar segredos usando a interface O que é a CLI do Databricks? (versão 0.205 e superior). Você também pode usar a API de Segredos. Os nomes secretos não diferenciam maiúsculas de minúsculas.
Ao criar um segredo em um escopo com suporte do Databricks, você pode especificar o valor do segredo de uma das três maneiras:
- Especifique o valor como uma cadeia de caracteres usando o sinalizador –string-value.
- Insira o segredo quando solicitado de forma interativa (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 <secret_scope> <secret_key>
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 de chave de segredos. Use o utilitário Secrets (dbutils.secrets) em um notebook ou trabalho para listar esses metadados. Por exemplo:
dbutils.secrets.list('my-scope')
Ler um segredo
Crie segredos usando a API REST ou a CLI, mas use o utilitário Secrets (dbutils.secrets) em um notebook ou trabalho para ler um segredo.
Excluir um segredo
Para excluir um segredo de um escopo com a CLI do Databricks:
databricks secrets delete-secret <scope-name> <key-name>
Você também pode usar a API de Segredos.
Para excluir um segredo de um escopo com suporte do Azure Key Vault, use a API REST do Azure SetSecret ou 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, grave segredos no escopo e gerencie permissões no escopo.
Observação
As ACLs secretas estão no nível do escopo. Se você usar escopos com suporte Azure Key Vault, os usuários que recebem acesso ao escopo terão acesso a todos os segredos no Azure Key Vault. Para restringir o acesso, utilize instâncias separadas do Azure Key Vault.
Esta seção descreve como gerenciar o controle de acesso secreto usando O que é a 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 de segredo, confira ACLs de segredo
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 uma solicitação Put para uma entidade de segurança que já tenha uma permissão aplicada substitui o nível de permissão existente.
O principal
campo especifica uma entidade de segurança existente do Azure Databricks. Um usuário é especificado usando seu endereço de email, uma entidade de serviço usando o valor applicationId
e um grupo usando o respectivo nome de grupo. Para obter mais informações, consulte Entidade de segurança.
Exibir permissões de escopo secreto
Para exibir todas as permissões de escopo de segredo para um determinado escopo de segredo:
databricks secrets list-acls <scope-name>
Para obter as permissões de escopo secreto aplicadas a uma entidade de segurança para um determinado escopo secreto:
databricks secrets get-acl <scope-name> <principal>
Se não houver ACL para a entidade de segurança e o escopo fornecidos, essa solicitação falhará.
Excluir uma permissão de escopo secreto
Para excluir uma permissão de escopo secreto aplicada a uma entidade de segurança para um determinado escopo secreto:
databricks secrets delete-acl <scope-name> <principal>
Redação secreta
Armazenar credenciais como Azure Databricks segredos facilita a proteção de suas credenciais quando você executa blocos de anotações e trabalhos. No entanto, é fácil imprimir acidentalmente um segredo para os buffers de saída padrão ou exibir o valor durante a atribuição de variáveis.
Para evitar isso, o Azure Databricks redige todos os valores de segredo que são lidos usando dbutils.secrets.get()
. Quando exibido na saída da célula do bloco de anotações, os valores secretos são substituídos por [REDACTED]
.
Por exemplo, se você definir uma variável como um valor de segredo usando dbutils.secrets.get()
e imprimir essa variável, essa variável será substituída por [REDACTED]
.
Aviso
A redação secreta para saída de célula do bloco de anotações aplica-se somente a literais. A funcionalidade de redação de segredo não impede transformações deliberadas e arbitrárias de um literal de segredo. Para garantir o controle adequado dos 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 notebook compartilhados.