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 controlo de acesso table não estiver ativado num cluster, qualquer utilizador com permissões CAN ATTACH TO num cluster ou permissões de Execução num bloco de notas poderá ler as propriedades de configuração do Spark de dentro do bloco de notas. 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 limit quem pode ler os logs somente para usuários com a permissão CAN MANAGE, set
spark.databricks.acl.needAdminPermissionToViewLogs
paratrue
.
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 Set e use variáveis de ambiente com scripts init.
Por exemplo:
Você set 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