Partilhar via


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

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

Importante

Esta funcionalidade está em Pré-visualização Pública.

Considerações de segurança

O Databricks não recomenda o armazenamento de segredos em variáveis de ambiente de cluster se eles não estiverem disponíveis para todos os usuários no cluster. Tenha em mente as seguintes implicações de segurança ao fazer referência a segredos em uma propriedade de configuração ou variável de ambiente do Spark:

  • Qualquer usuário com permissões CAN ATTACH TO em um cluster ou Executar em um bloco de anotações pode ler variáveis de ambiente de cluster de dentro do bloco de anotações.

  • Se o controle de acesso à tabela não estiver habilitado em um cluster, qualquer usuário com permissões CAN ATTACH TO em um cluster ou Executar em um bloco de anotações poderá ler as propriedades de configuração do Spark de dentro do bloco de anotações. Isso inclui usuários que não têm permissão direta para ler um segredo.

  • Os segredos não são editados do registro stdout stderr e dos fluxos do driver do Spark. Para proteger dados confidenciais, por padrão, os logs de driver do Spark são visíveis apenas por usuários com permissão CAN MANAGE no trabalho, modo de acesso de usuário único e clusters de modo de acesso compartilhado.

    Em clusters do modo de acesso partilhado sem isolamento, os registos do do controlador do Spark podem ser visualizados por utilizadores com as permissões 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

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

  • Os proprietários de cluster devem ter a permissão CAN READ no escopo secreto.
  • Você deve ser proprietário de um cluster para adicionar ou editar um segredo em uma propriedade de configuração do Spark ou variável de ambiente.
  • Se um segredo for atualizado, reinicie o cluster para buscá-lo novamente.
  • Você deve ter a permissão CAN MANAGE no cluster para excluir uma propriedade de configuração secreta do Spark ou uma variável de ambiente.

Fazer referência a 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>}}

Substituir:

  • <scope-name> com o nome do escopo secreto.
  • <secret-name> com o nome exclusivo do segredo no escopo.
  • <property-name> com a propriedade de configuração do Spark

Cada propriedade de configuração do Spark só pode fazer referência a um segredo, mas você pode configurar várias propriedades do Spark para fazer referência a segredos.

Por exemplo:

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

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

Python

spark.conf.get("spark.password")

SQL

SELECT ${spark.password};

Referenciar 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 quando fizer referência a um segredo. O acesso a segredos referenciados em variáveis de ambiente é determinado pelas permissões do usuário que configurou o cluster. Embora os segredos armazenados em variáveis de ambiente sejam acessíveis a todos os usuários do cluster, eles são editados a partir da exibição de texto sem formatação, semelhante a outras referências secretas.

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

Por exemplo:

Você define uma variável de ambiente para fazer referência a um segredo:

SPARKPASSWORD={{secrets/scope1/key1}}

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

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