1
resposta

[Dúvida] Variavel de ambiente

Acho que não entendi direito como fica a questao das envs, pq são informações sensiveis e no curso elas estavam sendo rastradas pelo git dentro do configMap e Secrets, qual a boa pratica pra evitar que esses dados fiquem disponiveis?

1 resposta

Olá, Thiago!

Essa é uma dúvida muito importante, especialmente quando lidamos com informações sensíveis em ambientes de produção.

No Kubernetes, é comum armazenar configurações e segredos usando ConfigMaps e Secrets. No entanto, é crucial garantir que esses dados não sejam expostos ou rastreados por sistemas de controle de versão como o Git.

Aqui estão algumas boas práticas para evitar que informações sensíveis sejam rastreadas:

  1. Não Armazene Segredos no Controle de Versão: Nunca armazene segredos diretamente nos arquivos que são versionados no Git. Em vez disso, use ferramentas específicas para gerenciar esses segredos.

  2. Ferramentas de Gerenciamento de Segredos: Utilize ferramentas como HashiCorp Vault, AWS Secrets Manager, Azure Key Vault ou Google Cloud Secret Manager para armazenar e gerenciar segredos de forma segura. Essas ferramentas permitem que você acesse segredos de maneira segura e controlada.

  3. Arquivos de Configuração Externos: Mantenha os arquivos que contêm segredos fora do repositório Git. Você pode usar arquivos de configuração locais que são carregados no Kubernetes através de volumes ou outras técnicas seguras.

  4. Kubernetes Secrets: Utilize o recurso de Secrets do Kubernetes para armazenar informações sensíveis. Embora os Secrets sejam base64 encoded (e não criptografados por padrão), você pode habilitar a criptografia de dados em repouso no Kubernetes para maior segurança.

  5. Ferramentas de Injeção de Segredos: Ferramentas como Sealed Secrets ou Helm Secrets podem ser usadas para criptografar segredos antes de armazená-los no Git. Dessa forma, apenas o cluster Kubernetes pode descriptografá-los.

  6. Restrinja o Acesso: Certifique-se de que apenas usuários e serviços autorizados tenham acesso aos segredos. Use RBAC (Role-Based Access Control) para controlar o acesso aos Secrets no Kubernetes.

Aqui está um exemplo de como você pode criar um Secret no Kubernetes:

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  username: bXktdXNlcm5hbWU=  # "my-username" em base64
  password: bXktcGFzc3dvcmQ=  # "my-password" em base64

Para criar esse Secret, você pode usar o comando kubectl:

kubectl apply -f my-secret.yaml

E para acessar esses segredos em um Pod:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    env:
    - name: USERNAME
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: username
    - name: PASSWORD
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: password

Bons estudos!