Use um segredo em uma propriedade de configuração ou variável de ambiente do Spark
Este artigo fornece detalhes sobre como fazer referência a um segredo em uma propriedade de configuração Spark ou variável de ambiente. Os segredos recuperados são retirados da saída do Notebook e do driver Spark e executor logs.
Prévia
Esse recurso está em Pré-lançamento público.
Considerações de segurança
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. 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:
Qualquer usuário com permissões CAN ATTACH TO em um cluster ou permissões de execução em um Notebook pode ler cluster variável de ambiente de dentro do Notebook.
Se o controle de acesso à tabela não estiver habilitado em um cluster, qualquer usuário com permissões pode anexar em um cluster ou executar em um notebook poderá 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.
Os segredos não são removidos do driver Spark log
stdout
estderr
transmissão. Para proteger dados confidenciais, os drivers default, Spark e logs podem ser visualizados apenas por usuários com permissão CAN MANAGE no Job, modo de acesso de usuário único e modo de acesso compartilhado clusters.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 o logs a apenas usuários com a permissão CAN MANAGE, defina
spark.databricks.acl.needAdminPermissionToViewLogs
comotrue
.
Requisitos
Os requisitos a seguir se aplicam à referência de segredos em Spark propriedades de configuração e variáveis de ambiente:
Os proprietários de clusters devem ter permissão CAN READ no Secret Scope.
O senhor deve ser proprietário de um cluster para adicionar ou editar um segredo em uma propriedade de configuração ou variável de ambiente do Spark.
Se um segredo for atualizado, o senhor deverá reiniciar o cluster para obter o segredo novamente.
O senhor 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.
Referenciar um segredo com uma propriedade de configuração do Spark
O senhor 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 referenciar um segredo, mas você pode configurar várias propriedades do Spark para referenciar segredos.
Por exemplo:
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
O senhor 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 fazer referência a um segredo. O acesso aos segredos referenciados na variável de ambiente é determinado pelas permissões do usuário que configurou o cluster. Embora os segredos armazenados na variável de ambiente sejam acessíveis a todos os usuários do site cluster, eles são redigidos a partir da exibição de texto simples, 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 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