Segredos

Um segredo é um par chave-valor que armazena material secreto, com um nome de chave único dentro de um Secret Scope. Cada escopo é limitado a 1.000 segredos. O tamanho máximo permitido do valor secreto é 128 KB.

Consulte também a API Secrets.

Crie um segredo

Os nomes secretos não diferenciam maiúsculas de minúsculas.

Criar um segredo em um escopo apoiado pelo Databricks

Para criar um segredo num âmbito apoiado pelo Databricks utilizando o CLI do Databricks (versão 0.205 e acima):

databricks secrets put-secret --json '{
  "scope": "<scope-name>",
  "key": "<key-name>",
  "string_value": "<secret>"
}'

Se estiver criando um segredo de várias linhas, o senhor pode 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>

O senhor também pode fornecer um segredo de um arquivo. Para obter mais informações sobre como gravar segredos, consulte O que é a CLI do Databricks?

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. Você usa o Secrets russas (dbutils.secrets) em um Notebook ou Job para listar esses metadados. Por exemplo:

dbutils.secrets.list('my-scope')

Leia um segredo

Você cria segredos usando a API REST ou CLI, mas deve usar as utilidades de segredos (dbutils.secrets) em um Notebook ou Job 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 Secrets.

Use um segredo em uma propriedade de configuração ou variável de ambiente do Spark

Visualização

Esse recurso está em Public Preview.

Você pode fazer referência a um segredo em uma propriedade de configuração ou variável de ambiente do Spark. Os segredos recuperados são editados da saída do notebook e dos logs do driver e do executor do Spark.

Importante

Lembre-se das seguintes considerações de segurança ao fazer referência a segredos em uma propriedade de configuração do Spark ou variável de ambiente:

  • Se o controle de acesso da tabela não estiver ativado em clusters, qualquer usuário com permissões Can Attach To em clusters ou permissões de execução em um Notebook pode ler as propriedades de configuração do Spark de dentro do Notebook. Isso inclui usuários que não têm permissão direta para ler um segredo. Databricks recomenda habilitar o controle de acesso da tabela em todos os clusters ou gerenciar o acesso a segredos usando Secret Scope.

  • Mesmo quando o controle de acesso à tabela está ativado, usuários com permissões de "Can Attacch to" (Pode Anexar A) em um cluster ou permissões de "Executar" em um notebook podem ler variáveis de ambiente do cluster de dentro do notebook.O Databricks não recomenda armazenar segredos em variáveis de ambiente de cluster se elas não precisarem estar disponíveis para todos os usuários do cluster.

  • Os segredos não são removidos do driver Spark log stdout e stderr transmissão. Para proteger dados confidenciais, os drivers default, Spark logs podem ser visualizados apenas por usuários com permissão CAN MANAGE em Job, modo de acesso de usuário único e modo de acesso compartilhado clusters. Para permitir que os usuários com permissão CAN ATTACH TO ou CAN RESTART possam view o logs nesses clusters, defina a seguinte propriedade de configuração Spark na configuração cluster: spark.databricks.acl.needAdminPermissionToViewLogs false.

    No modo de acesso compartilhado sem isolamento clusters, o driver Spark logs pode ser visualizado por usuários com permissão CAN ATTACH TO ou CAN MANAGE. Para limitar quem pode ler os logs apenas aos usuários com a permissão CAN MANAGE, defina spark.databricks.acl.needAdminPermissionToViewLogs como true.

Requisitos e limitações

Os requisitos e limitações a seguir se aplicam à referência de segredos nas propriedades de configuração e variáveis de ambiente do Spark:

  • cluster Os proprietários devem ter permissão CAN READ no site Secret Scope.

  • Somente proprietários clusters podem adicionar uma referência a um segredo em uma propriedade de configuração ou variável de ambiente do Spark e editar o escopo e o nome existentes. Os proprietários alteram um segredo usando a API Secrets. Você deve reiniciar seus clusters para buscar o segredo novamente.

  • Os usuários com a permissão CAN MANAGE no cluster podem excluir uma propriedade de configuração secreta do Spark ou uma variável de ambiente.

Sintaxe para fazer referência a segredos em uma propriedade de configuração ou variável de ambiente do Spark

Pode referir-se a um segredo utilizando qualquer nome de variável válido ou propriedade de configuração Spark. O Databricks permite um comportamento especial para variáveis que fazem referência a segredos com base na sintaxe do valor que está sendo definido, e não no nome da variável.

A sintaxe da propriedade de configuração do Spark ou do valor da variável de ambiente deve ser. {{secrets/<scope-name>/<secret-name>}} O valor deve começar com {{secrets/ e terminar com }}.

As partes variáveis da propriedade de configuração Spark ou variável de ambiente são:

  • <scope-name>: o nome do escopo ao qual o segredo está associado.

  • <secret-name>: o nome exclusivo do segredo no escopo.

Por exemplo, {{secrets/scope1/key1}}.

Observação

  • Não deve haver espaços entre os colchetes. Se houver espaços, eles serão tratados como parte do escopo ou nome secreto.

Referenciar um segredo com uma propriedade de configuração do Spark

Você especifica uma referência a um segredo em uma propriedade de configuração do Spark no seguinte formato:

spark.<property-name> {{secrets/<scope-name>/<secret-name>}}

Qualquer configuração Spark <property-name> pode referenciar um segredo. Cada propriedade de configuração do Spark só pode referenciar um segredo, mas você pode configurar várias propriedades do Spark para referenciar segredos.

Por exemplo:

Você define uma configuração do Spark para fazer referência a um segredo:

spark.password {{secrets/scope1/key1}}

Para buscar o segredo no notebook e usá-lo:

spark.conf.get("spark.password")
SELECT ${spark.password};

Fazer referência a um segredo em uma variável de ambiente

Você especifica um caminho secreto em uma variável de ambiente no seguinte formato:

<variable-name>={{secrets/<scope-name>/<secret-name>}}

Você pode usar qualquer nome de variável válido ao referenciar um segredo. O acesso aos segredos referenciados nas variáveis de ambiente é determinado pelas permissões do usuário que configurou o cluster. Segredos armazenados em variáveis de ambiente são acessíveis por todos os usuários do cluster, mas são ocultados da exibição em texto simples, assim como segredos mencionados em outros lugares.

As variáveis de ambiente que fazem referência a segredos são acessíveis a partir de um script de inicialização com escopo de cluster. Consulte Definir e usar variáveis de ambiente com scripts de inicialização.

Por exemplo:

Você define uma variável de ambiente para referenciar um segredo:

SPARKPASSWORD={{secrets/scope1/key1}}

Para buscar o segredo em um script init, acesse $SPARKPASSWORD utilizando o seguinte padrão:

if [ -n "$SPARKPASSWORD" ]; then
  # code to use ${SPARKPASSWORD}
fi

gerenciar permissões de segredos

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 ou o provedor Databricks Terraform. Para obter níveis de permissão secretos, consulte ACLs secretas

Criar uma ACL secreta

Para criar um segredo ACL para um determinado Secret Scope usando o Databricks CLI (legado)

databricks secrets put-acl <scope-name> <principal> <permission>

Fazer uma solicitação de colocação para um principal que já tenha 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.

Exibir ACLs secretas

Para view todas as ACLs secretas de um determinado Secret Scope:

databricks secrets list-acls <scope-name>

Para obter o segredo ACL aplicado a um comitente para um determinado Secret Scope:

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 ACL secreta

Para excluir um segredo ACL aplicado a um principal para um determinado Secret Scope:

databricks secrets delete-acl <scope-name> <principal>