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.
Visualização
Esse recurso está em Public Preview.
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 clustering ou permissões de execução em um Notebook pode ler o clustering 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 em Job, modo de acesso dedicado e clustering de modo de acesso padrão.No clustering de modo de acesso compartilhado sem isolamento, 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 clustering devem ter permissão CAN READ no escopo secreto.
- O senhor deve ser o proprietário do clustering 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 clustering para obter o segredo novamente.
- O senhor deve ter a permissão CAN MANAGE no clustering para excluir uma propriedade de configuração secreta Spark ou 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:
- Python
- SQL
spark.conf.get("spark.password")
SELECT ${spark.password};
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 clustering. Embora os segredos armazenados na variável de ambiente sejam acessíveis a todos os usuários do clustering, eles são redigidos a partir da exibição de texto simples, semelhante a outras referências secretas.
variável de ambiente que os segredos de referência são acessíveis a partir de um clustering-scoped init script. Consulte Definir e usar a variável de ambiente com o script 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