Você já passou pela situação de montar um Data Lake, tudo funcionando… até perceber que suas credenciais estavam expostas no código? 😬
Recentemente precisei montar containers do Azure Data Lake dentro de um notebook do Databricks — uma tarefa aparentemente simples. Mas, ao olhar o código com atenção, percebi que as chaves de acesso estavam em texto puro.
Foi aí que entendi: não basta o código rodar, ele precisa rodar com segurança.
E o melhor: existe uma maneira de fazer isso sem precisar do plano Premium da Azure, utilizando apenas Secret Scopes criados via Databricks CLI.
Neste artigo, compartilho o passo a passo completo e o que aprendi sobre como proteger credenciais no Databricks — um processo simples, mas que pode evitar grandes dores de cabeça no futuro.
Por que isso é importante
Em Engenharia de Dados, durante as etapas de desenvolvimento é comum armazenar chaves, tokens ou credenciais diretamente no código. Funciona? Funciona. Mas também abre brechas enormes de segurança: qualquer pessoa com acesso ao notebook pode visualizar dados sensíveis.
Foi justamente isso que me motivou a buscar uma solução que fosse: ✅ Segura ✅ Simples de implementar ✅ Compatível com o plano Standard da Azure
O resultado foi a configuração com Secret Scopes via CLI, que compartilho a seguir.
Entendendo os principais componentes
Antes de colocar a mão no código, vale entender o papel de cada parte dessa configuração:
- Azure Data Lake → o repositório central de dados, com containers como bronze, silver e gold.
- Storage Account → a conta de armazenamento onde os containers ficam hospedados.
- Databricks CLI → ferramenta de linha de comando que permite automatizar ações no workspace (criar scopes, tokens, jobs, etc.).
- Secret Scope → um “cofre interno” do Databricks usado para armazenar senhas, chaves ou tokens de forma segura.
E o que é o Azure Key Vault?
O Azure Key Vault é o serviço de armazenamento seguro de segredos da Microsoft. Ele guarda chaves, senhas, certificados e tokens de forma centralizada e criptografada, com controle de acesso e auditoria integrados.
Em outras palavras: é o cofre oficial da Azure — o lugar certo para manter qualquer credencial sensível.
Para criar um Key Vault é simples:
- No portal da Azure, vá em Criar Recurso → Segurança → Key Vault
- Escolha o Resource Group e o nome do cofre
- Defina a região e as políticas de acesso
- Depois, adicione seus segredos na seção Secrets
💡 Dica: no Databricks, você pode integrar o Key Vault diretamente criando um Key Vault-backed Secret Scope — o que permite acessar segredos automaticamente, sem armazená-los no Databricks.
Neste artigo, porém, o foco é o Databricks-backed Secret Scope, que funciona mesmo sem o plano Premium.
Passo a passo: acesso seguro ao Azure Data Lake no Databricks
Etapa 1: instalar e configurar o Databricks CLI
No seu terminal do Windows, instale e configure o Databricks CLI:
pip install databricks-cli
databricks configure --token
# Host: https://<sua-instancia>.azuredatabricks.net
# Token: <seu access token>
Como obter o Host e o Token
- Acesse o seu workspace do Azure Databricks
- No canto superior direito, clique no seu perfil (seu nome) → User Settings
- Vá até a aba Access Tokens
- Clique em Generate New Token, defina uma validade (ex: 90 dias) e copie o token
- O Host é simplesmente a URL do seu workspace:
https://<seu-workspace>.azuredatabricks.net
- Cole essas informações quando o CLI solicitar
Etapa 2: criar o Secret Scope local
Quando o plano Premium está desativado, é necessário usar o parâmetro --initial-manage-principal "users" para permitir a criação do scope local.
databricks secrets create-scope \
--scope datalake-scope \
--initial-manage-principal "users"
Etapa 3: adicionar os segredos manualmente
# Nome da Storage Account
databricks secrets put --scope datalake-scope --key STORAGE-NAME
# Chave de acesso da Storage
databricks secrets put --scope datalake-scope --key STORAGE-KEY
Esses comandos abrirão um editor no terminal para você digitar os valores com segurança.
Etapa 4: montar os containers no notebook
Função reutilizável para montar múltiplos containers (neste exemplo, as camadas bronze, silver e gold):
def mount_container(containerName):
scope_name = "datalake-scope"
storageAccountName = dbutils.secrets.get(scope=scope_name, key="STORAGE-NAME")
storageAccountAccessKey = dbutils.secrets.get(scope=scope_name, key="STORAGE-KEY")
blobContainerName = containerName
mountPoint = "/mnt/" + blobContainerName
if not any(m.mountPoint == mountPoint for m in dbutils.fs.mounts()):
try:
dbutils.fs.mount(
source = f"wasbs://{blobContainerName}@{storageAccountName}.blob.core.windows.net",
mount_point = mountPoint,
extra_configs = {
f"fs.azure.account.key.{storageAccountName}.blob.core.windows.net": storageAccountAccessKey
}
)
print(f"✅ Mount realizado com sucesso: {blobContainerName}")
except Exception as e:
print("❌ Erro ao montar:", e)
else:
print(f"ℹ️ Container já montado: {blobContainerName}")
containers = ["bronze", "silver", "gold"]
for c in containers:
mount_container(c)
Etapa 5: testar o mount do container bronze
mount_path = "/mnt/bronze"
if any(m.mountPoint == mount_path for m in dbutils.fs.mounts()):
print("✅ O container 'bronze' está montado.")
else:
print("❌ O container 'bronze' não está montado.")
Lições que ficaram
- 💡 1. Evite expor chaves diretamente no código. Use Secret Scopes ou, em produção, o Azure Key Vault.
- 💡 2. Monte apenas o necessário. Menos montagens = menos riscos.
- 💡 3. Evite logs com informações sensíveis. Um simples
print()pode revelar mais do que deveria.
Conclusão
Embora montar um Data Lake possa parecer simples, fazê-lo com segurança transforma completamente a confiabilidade do ambiente. Pequenas decisões, como mover uma chave para um cofre, podem fazer toda a diferença.
E o melhor: você pode implementar tudo isso em poucos minutos, com as ferramentas que já usa no dia a dia.
Ficou com alguma dúvida? Entre em contato para a solucionarmos 😉