Python: Gestão de segredos (variáveis de ambiente)
Esta documentação faz parte do guia Usos avançados. Consulte o guia completo aqui: Avançar com as suas implementações Python.
👋 Bem-vindo à documentação da Stackhero!
A Stackhero disponibiliza uma solução Python cloud pronta a usar, concebida para simplificar o seu processo de deployment:
- Implemente a sua aplicação em produção em segundos com um simples
git push.- Utilize o seu próprio domínio, com configuração automática de certificado HTTPS para ligações seguras geridas por si.
- Conte com backups automáticos, atualizações com um clique e preços previsíveis, para que se possa focar no seu código e não na gestão da infraestrutura.
- Beneficie de elevada performance e segurança numa infraestrutura privada e dedicada. O seu ambiente está isolado e protegido.
Poupe tempo e simplifique o seu workflow: pode ter o seu código a funcionar com o alojamento Python cloud da Stackhero em apenas 5 minutos.
Em algum momento, precisará armazenar segredos como tokens e senhas para bases de dados ou serviços de terceiros. É importante armazená-los de forma segura. Evite incorporá-los diretamente no seu repositório ou código, pois isso cria um risco significativo de segurança.
Usar variáveis de ambiente oferece dois benefícios principais:
- Os seus segredos nunca são armazenados no seu repositório Git, reduzindo o risco de acesso não autorizado.
- Pode usar credenciais diferentes para vários ambientes, como usar uma base de dados de produção em produção e uma base de dados de desenvolvimento durante o desenvolvimento.
Configurar variáveis de ambiente para desenvolvimento
Num ambiente de desenvolvimento, crie um ficheiro .env na raiz do seu projeto. Este ficheiro deve ser excluído do Git para garantir que nunca seja confirmado.
Para ler automaticamente o ficheiro .env, pode usar o módulo python-dotenv:
pip install python-dotenv
pip freeze > requirements.txt
Depois, crie um ficheiro .env na raiz do seu projeto e adicione as suas variáveis:
ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...
Finalmente, certifique-se de que o ficheiro .env está excluído do Git adicionando-o ao seu .gitignore:
echo ".env" >> .gitignore
Configurar variáveis de ambiente para staging e produção
O ficheiro .env não é suficientemente seguro para ambientes de staging e produção. Em vez disso, o Stackhero permite que armazene com segurança as suas variáveis de ambiente diretamente na configuração do seu serviço Python.
Pode definir estas variáveis no painel de controlo Stackhero selecionando o seu serviço Python e clicando no botão "Configurar".
Variáveis de ambiente Python no Stackhero
Aceder a variáveis de ambiente em Python
Aceder a variáveis de ambiente em Python é simples. Basta usar os.environ.get() como mostrado abaixo:
import os
print(os.environ.get('ENV'))
Por exemplo, conectar-se a um servidor Redis usando uma variável de ambiente pode ser feito assim:
import os
import redis
r = redis.from_url(os.environ.get("REDIS_URL"))
Num ambiente de desenvolvimento, defina o REDIS_URL no seu ficheiro .env da seguinte forma:
REDIS_URL="redis://localhost:6379"
Para produção e staging, defina o REDIS_URL no painel de controlo Stackhero sob a configuração do serviço Python:
REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:6380"