Secrets para dados confidenciais
Armazene e gerencie informações confidenciais, como senhas e chaves de API, com segurança usando Secrets.
Secrets para dados confidenciais é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Proteção de informações sensíveis
Ao criar aplicações, geralmente é necessário lidar com informações sensíveis, como senhas de banco de dados, chaves de API ou certificados privados.
Armazenar esses dados diretamente no código da aplicação ou nos arquivos de configuração representa um grande risco de segurança! Isso pode causar vazamentos de dados e expor o seu sistema.
Introdução aos Secrets do Kubernetes
Kubernetes Secrets são objetos projetados para armazenar dados sensíveis com segurança no seu cluster.
Eles ajudam a manter as informações sensíveis separadas das definições dos Pods e do código da aplicação, tornando suas implantações mais seguras e fáceis de gerenciar.
- Separação: mantenha os dados sensíveis fora das imagens de contêiner e do YAML dos Pods.
- Acessibilidade: os Pods podem consumi-los como variáveis de ambiente ou arquivos montados.
Secrets versus ConfigMaps
Talvez você se lembre dos ConfigMaps de uma lição anterior, usados para dados de configuração não sensíveis.
Os Secrets são semelhantes, mas destinam-se especificamente a dados sensíveis. Ambos armazenam pares de chave e valor, mas os Secrets lidam com a natureza sensível dessas informações.
- ConfigMaps: para configurações gerais e não sensíveis (por exemplo, níveis de registro e endpoints de API).
- Secrets: para dados sensíveis (por exemplo, senhas, tokens e chaves privadas).
Lembre-se: os Secrets são codificados em base64, não criptografados por padrão!
Criar um Secret a partir de um valor literal
A maneira mais simples de criar um Secret é a partir de um valor literal usando kubectl create secret generic.
Isso é útil para dados sensíveis simples e curtos, como uma senha básica.
kubectl create secret generic my-db-secret \
--from-literal=username=admin \
--from-literal=password=SuperSecretP@ssw0rd!Criar um Secret a partir de arquivos
Para dados sensíveis maiores ou com várias linhas (como uma chave privada ou um arquivo de configuração completo), é melhor criar um Secret a partir de arquivos.
Primeiro, crie os arquivos localmente e depois faça referência a eles. O Kubernetes lerá o conteúdo dos arquivos e o armazenará.
# Create local files first
echo "my-api-key-12345" > api-key.txt
echo "my-token-abcde" > auth-token.txt
# Create the Secret
kubectl create secret generic app-credentials \
--from-file=api-key.txt \
--from-file=auth-token.txtUsar Secrets como variáveis de ambiente
Os Pods podem consumir dados de um Secret injetando-os diretamente nas variáveis de ambiente. Isso é comum para pares simples de chave e valor.
Você pode fazer referência a chaves individuais de um Secret ou a todas elas usando envFrom.
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-env
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: my-db-secret
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: my-db-secret
key: passwordUsar Secrets como arquivos montados
Para arquivos sensíveis (como certificados e chaves privadas) ou quando uma aplicação espera receber configurações de caminhos de arquivo específicos, você pode montar Secrets como arquivos dentro de um Pod.
Cada chave do Secret se torna um arquivo no diretório montado, com seu valor como conteúdo.
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod-vol
spec:
containers:
- name: my-app
image: nginx:latest
volumeMounts:
- name: app-secret-volume
mountPath: "/etc/secrets"
readOnly: true
volumes:
- name: app-secret-volume
secret:
secretName: app-credentialsSegurança dos seus Secrets
Embora os Secrets protejam os dados contra inspeções casuais, eles não são uma solução milagrosa. Lembre-se destes pontos:
- Codificação em base64: os Secrets são codificados em base64, não criptografados. Qualquer pessoa com acesso ao Secret pode decodificá-lo.
- RBAC: use o Controle de Acesso Baseado em Funções (RBAC) para restringir quem pode ler, criar ou modificar Secrets.
- Criptografia em repouso: para obter segurança real, habilite a criptografia em repouso dos dados do seu etcd (o armazenamento subjacente do Kubernetes). Os provedores de nuvem geralmente oferecem esse recurso.
Atualizar Secrets
Se os seus dados sensíveis mudarem, será necessário atualizar o Secret. Basta executar novamente kubectl create secret com os novos valores para atualizá-lo ou usar kubectl apply -f com um YAML atualizado.
No entanto, os Pods em execução que consomem o Secret não detectarão as alterações automaticamente. Para aplicar as alterações, normalmente é necessário reiniciar ou reimplantar os Pods que usam o Secret.
Verificação rápida: Secrets
Imagine que você tenha uma chave de API privada que sua aplicação precisa acessar. Qual método é mais seguro e apropriado para armazenar e fornecer essa chave a um Pod do Kubernetes?
Recapitulação: Secrets para dados sensíveis
Parabéns! Você aprendeu a lidar com dados sensíveis no Kubernetes!
- Os Secrets armazenam informações sensíveis, como senhas e chaves de API.
- Eles são codificados em base64 e podem ser consumidos como variáveis de ambiente ou arquivos montados.
- Sempre aplique RBAC e considere a criptografia em repouso para obter a máxima segurança.
- Lembre-se: os Pods precisam ser reiniciados para detectar atualizações nos Secrets.
Perguntas Frequentes
A aula “Secrets para dados confidenciais” é grátis?
Sim — o texto completo de “Secrets para dados confidenciais” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Secrets para dados confidenciais”?
Armazene e gerencie informações confidenciais, como senhas e chaves de API, com segurança usando Secrets. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Secrets para dados confidenciais”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- ConfigMaps para configuração
- Secrets para dados confidenciais
- Volumes persistentes e reivindicações
- StorageClasses e provisionamento dinâmico