Gestão secreta
À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 Secret Scope.
- Acesse os segredos usando Databricks utilidades, consulte Utilidades de segredos (dbutils.secrets).
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, 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 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
To create a scope using the Databricks CLI:
databricks secrets create-scope <scope-name>
By default, scopes are created with MANAGE permission for the user who created the scope. After you have created a Databricks-backed secret scope, you can add secrets to it.
-
Go to
https://<databricks-instance>#secrets/createScope
. Replace<databricks-instance>
with the workspace URL of your Databricks deployment. This URL is case sensitive. For example,scope
increateScope
must use an uppercaseS
). -
Enter the name of the secret scope. Secret scope names are case insensitive.
-
In Manage Principal select Creator or All workspace users to specify which users have the MANAGE permission on the secret scope.
The MANAGE permission allows users to read, write, and grant permissions on the scope. Your account must have the Premium plan or above to choose Creator.
-
Click Create.
-
Use the Databricks CLI
databricks secrets list-scopes
command to verify that the scope was created successfully.
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
When you create a secret in a Databricks-backed scope, you can specify the secret value in one of three ways:
- Specify the value as a string using the –string-value flag.
- Input the secret when prompted interactively (single-line secrets).
- Pass the secret using standard input (multi-line secrets).
For example:
databricks secrets put-secret --json '{
"scope": "<scope-name>",
"key": "<key-name>",
"string_value": "<secret>"
}'
If you are creating a multi-line secret, you can pass the secret using standard input. For example:
(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 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 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]
.
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.