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 do Stackhero!

Stackhero oferece uma solução cloud Python pronta a usar que proporciona uma série de benefícios, incluindo:

  • Implemente a sua aplicação em segundos com um simples git push.
  • Utilize o seu próprio nome de domínio e beneficie da configuração automática de certificados HTTPS para uma segurança reforçada.
  • Desfrute de tranquilidade com backups automáticos, atualizações com um clique, e preços simples, transparentes e previsíveis.
  • Obtenha performance ótima e segurança robusta graças a uma VM privada e dedicada.

Poupe tempo e simplifique a sua vida: só leva 5 minutos para experimentar a solução de hospedagem cloud Python do Stackhero!

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:

  1. Os seus segredos nunca são armazenados no seu repositório Git, reduzindo o risco de acesso não autorizado.
  2. 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.

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

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 StackheroVariáveis de ambiente Python no Stackhero

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"