Gestão secreta
Ao acessar fontes de dados externas por meio do site JDBC, a autenticação geralmente é necessária. Em vez de inserir as credenciais diretamente no Notebook, o senhor pode armazená-las com segurança usando os segredos do Databricks e fazer referência a elas no Notebook e no Job. Essa abordagem aprimora a segurança e simplifica o gerenciamento de credenciais. Esta página fornece uma visão geral dos segredos da Databricks.
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 segredos, você:
- Criar um escopo secreto. Um escopo secreto é uma coleção de segredos identificados por um nome.
- Adicione segredos ao escopo
- Atribuir permissões no Secret Scope.
- Referencie segredos em seu código.
Para obter um exemplo de ponta a ponta de como usar segredos em seu fluxo de trabalho, consulte o tutorial: Criar e usar um segredo 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.
Os administradores do espaço de trabalho, os criadores de segredos e os usuários que receberam permissão podem acessar e ler os segredos do Databricks. Embora o Databricks tente redigir valores secretos nos resultados 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 o Secret Scope
Um Secret Scope é uma coleção de segredos identificados por um nome. A Databricks recomenda alinhar Secret Scopes a funções ou aplicativos, e não a indivíduos.
O escopo secreto é armazenado em um banco de dados criptografado de propriedade e gerenciado por Databricks.
Depois de criar um Secret Scope, o senhor pode atribuir permissões para conceder aos usuários acesso para ler, gravar e gerenciar o Secret Scope.
Criar um escopo secreto
Esta seção descreve como criar um Secret Scope usando o Databricks CLI (versão 0.205 e acima) ou na interface do usuário Databricks workspace . O senhor também pode usar a API Secrets.
Nomes secretos do escopo:
- Deve ser exclusivo em um workspace.
- Deve consistir em caracteres alfanuméricos, traços, sublinhado,
@
e pontos, e não pode exceder 128 caracteres. - Não diferenciam maiúsculas de minúsculas.
Os nomes do escopo secreto são considerados não confidenciais e podem ser lidos por todos os usuários no site workspace.
- Databricks CLI
- Databricks workspace UI
Para criar um escopo usando a CLI do Databricks:
databricks secrets create-scope <scope-name>
Em default, os escopos são criados com permissão de gerenciar para o usuário que criou o escopo. Depois de criar um escopo secreto com suporte do site Databricks, o senhor pode adicionar segredos a ele.
-
Vá para
https://<databricks-instance>#secrets/createScope
. Substitua<databricks-instance>
pelo URLworkspace de sua implantação Databricks. Esse URL diferencia maiúsculas de minúsculas. Por exemplo,scope
emcreateScope
deve usar uma letra maiúsculaS
). -
Digite o nome do escopo secreto. Os nomes do escopo secreto não diferenciam maiúsculas de minúsculas.
-
Em gerenciar Principal , selecione Creator (Criador ) ou All workspace users (Todos os usuários ) para especificar quais usuários têm a permissão de gerenciar no Secret Scope (Escopo secreto).
A permissão gerenciar permite que os usuários leiam, gravem e concedam permissões no escopo. Seu account deve ter o plano Premium ou acima para escolher o Creator .
-
Clique em Criar .
-
Use o comando Databricks CLI
databricks secrets list-scopes
para verificar se o escopo foi criado com êxito.
Lista Escopo secreto
Para listar os escopos existentes em um espaço de trabalho usando a CLI:
databricks secrets list-scopes
O senhor também pode listar o Secret Scope usando o site Secrets API.
Excluir um escopo secreto
A exclusão de um escopo secreto exclui todos os segredos e ACLs aplicados ao escopo. Para excluir um escopo usando o site CLI, execute o seguinte:
databricks secrets delete-scope <scope-name>
O senhor também pode excluir um Secret Scope usando o site Secrets API.
gerenciar segredos
Um segredo é um par key-valor que armazena material confidencial usando um nome key que é exclusivo dentro de um escopo secreto.
Esta seção descreve como criar um escopo secreto usando o comando Databricks CLI (versão 0.205 e acima). O senhor também pode usar a API Secrets. Os nomes secretos não diferenciam maiúsculas de minúsculas.
Crie um segredo
Esta seção descreve como criar um segredo usando o Databricks CLI (versão 0.205 e acima) ou em um Notebook usando o Databricks SDK para Python. O senhor também pode usar a API Secrets. Os nomes secretos não diferenciam maiúsculas de minúsculas.
- Databricks CLI
- Databricks SDK for Python
Quando o senhor cria um segredo em um escopo apoiado pelo Databricks, pode especificar o valor do segredo de uma das três maneiras:
- Especifique o valor como uma cadeia de caracteres usando o sinalizador -strings-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 <scope-name> <key-name>
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.secrets.put_secret("<secret_scope>","<key-name>",string_value ="<secret>")
Leia um segredo
Esta seção descreve como ler um segredo usando o Databricks CLI (versão 0.205 e acima) ou em um Notebook usando Secrets utilidades (dbutils.secrets).
- Databricks CLI
- Secrets utility (dbutils.secrets)
Para ler o valor de um segredo usando a CLI da Databricks, o senhor deve decodificar o valor codificado em base64. Você pode usar jq
para extrair o valor e base --decode
para decodificá-lo:
databricks secrets get-secret <scope-name> <key-name> | jq -r .value | base64 --decode
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 da chave secreta. O senhor usa os utilitários Secrets (dbutils.secrets) em um Notebook ou Job para listar esses metadados. Por exemplo:
dbutils.secrets.list('my-scope')
Excluir um segredo
Para excluir um segredo de um escopo com a CLI do Databricks:
databricks secrets delete-secret <scope-name> <key-name>
O senhor também pode usar a API Secrets.
gerenciar as permissões do Secret Scope
Em default, o usuário que cria o Secret Scope recebe a permissão de gerenciar. Isso permite que o criador do escopo leia segredos no escopo, grave segredos no escopo e gerencie permissões no escopo.
Esta seção descreve como gerenciar o controle de acesso secreto usando o Databricks CLI (versão 0.205 e acima). O senhor também pode usar a API Secrets. Para níveis de permissão secretos, consulte ACLs secretas
Conceder permissões a um usuário em um Secret Scope
Para conceder permissões a um usuário em um Secret Scope usando o site Databricks CLI:
databricks secrets put-acl <scope-name> <principal> <permission>
Fazer uma solicitação de venda para um diretor que já tem uma permissão aplicada substitui o nível de permissão existente.
O campo principal
especifica uma entidade principal existente do Databricks. Um usuário é especificado usando seu endereço email, uma entidade de serviço usando seu valor applicationId
e um grupo usando seu nome de grupo. Para obter mais informações, consulte Principal.
visualizar as permissões do Secret Scope
Para view todas as permissões do Secret Scope para um determinado Secret Scope:
databricks secrets list-acls <scope-name>
Para obter as permissões do escopo secreto aplicadas a um principal para um determinado escopo secreto:
databricks secrets get-acl <scope-name> <principal>
Se não houver ACL para o principal e o escopo fornecidos, essa solicitação falhará.
Excluir uma permissão do Secret Scope
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
O armazenamento de credenciais como segredos do Databricks facilita a proteção de suas credenciais quando o senhor executa o Notebook e o Job. No entanto, é fácil imprimir acidentalmente um segredo nos buffers de saída padrão ou exibir o valor durante a atribuição de variáveis.
Para evitar que isso aconteça, o Databricks redige todos os valores secretos que são lidos usando dbutils.secrets.get()
e 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 depois imprimir essa variável, essa variável será substituída por [REDACTED]
.
A redação secreta para a saída de células do Notebook se aplica somente a 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 dos segredos, o senhor deve usar listas de controle de acesso para limitar as permissões de execução do comando. Isso impede o acesso não autorizado a contextos compartilhados do Notebook.