Gerenciamento de segredos
Às vezes, o acesso aos dados exige que o senhor se autentique em uma fonte de dados externa por meio do site JDBC. Em vez de inserir suas credenciais diretamente em um Notebook, o senhor pode usar os segredos do Databricks para armazenar suas credenciais e consultá-las no Notebook e no Job. Este artigo oferece uma visão geral dos segredos do site Databricks.
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 escopo secreto.
Acesse os segredos usando Databricks utilidades, consulte Utilidades de segredos (dbutils.secrets).
Para obter um exemplo completo 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.
Aviso
Os administradores, criadores de segredos e usuários com permissão podem ler os segredos do Databricks. Embora o site Databricks faça um esforço para redigir valores secretos que possam ser exibidos no Notebook, não é possível impedir que esses usuários leiam os segredos. Veja a redação secreta.
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 escopo secreto, o senhor pode atribuir permissões para conceder aos usuários acesso para ler, gravar e gerenciar escopos secretos.
Criar um Secret Scope apoiado pelo Databricks
Esta seção descreve como criar um escopo secreto usando a ferramenta What is the Databricks CLI ? (versão 0.205 e acima). 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.
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.
Listar Secret Scopes
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 Secret Scope
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 a ferramenta What is the 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 aplicativo What is the 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.
Ao criar um segredo em um escopo apoiado pelo Databricks, o senhor 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
Para ler um segredo em um Notebook ou Job, o senhor deve usar os utilitários Secrets (dbutils.secrets). Por exemplo:
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 What is the 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 de 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á.
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 isso, o Databricks redige todos os valores secretos que são lidos usando dbutils.secrets.get()
. Quando exibidos na saída da célula do Notebook, 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]
.
Aviso
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.