Gerenciamento de Secrets e RBAC
Aprenda estratégias avançadas para gerenciar dados confidenciais e implementar o controle de acesso baseado em funções (RBAC) em ambientes de contêineres.
Gerenciamento de Secrets e RBAC é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 3 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.
Proteja seu ambiente de contêineres
Boas-vindas! Nesta lição, vamos conhecer práticas essenciais de segurança para aplicações conteinerizadas: gerenciamento de segredos e controle de acesso baseado em funções (RBAC).
Esses conceitos são fundamentais para proteger dados confidenciais e garantir que somente entidades autorizadas possam executar ações específicas em seus ambientes de contêineres.

O perigo de inserir segredos diretamente no código
Inserir informações confidenciais, como chaves de API, senhas de banco de dados ou certificados privados, diretamente no código da aplicação ou em Dockerfiles é um grande risco de segurança.
- Exposição: Qualquer pessoa com acesso ao seu repositório de código ou à imagem criada poderá vê-las facilmente.
- Falta de controle: Alterar um segredo exige recriar e implantar novamente toda a aplicação.
- Problemas de conformidade: Isso viola muitas melhores práticas de segurança e requisitos regulatórios.
Variáveis de ambiente (com cautela)
Uma forma comum, mas nem sempre segura, de transmitir segredos é por meio de variáveis de ambiente. O Docker permite transmiti-las com a opção -e, e as aplicações podem lê-las.
No entanto, as variáveis de ambiente podem ser inspecionadas facilmente, por exemplo com docker inspect, e talvez permaneçam no histórico do shell ou nos registros. Para dados realmente confidenciais, existem soluções melhores.
Segredos do Docker em ação
Os Docker Secrets permitem armazenar e transmitir dados confidenciais aos contêineres com segurança. Quando um segredo é associado a um contêiner, ele é montado como um arquivo temporário em /run/secrets/.
Primeiro, você criaria um segredo, por exemplo, echo "my_secure_pass" | docker secret create app_secret -. Em seguida, sua aplicação poderá lê-lo:
import os
def main():
secret_path = "/run/secrets/app_secret"
try:
with open(secret_path, 'r') as f:
secret_value = f.read().strip()
print(f"Secret read: {secret_value}")
except FileNotFoundError:
print("Secret file not found. Make sure it's mounted.")
except Exception as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
main()Visão geral dos Secrets do Kubernetes
Assim como os Docker Secrets, o Kubernetes tem seu próprio objeto chamado “Secrets” para armazenar e gerenciar informações confidenciais. Esses segredos podem ser montados como arquivos em Pods ou expostos como variáveis de ambiente.
Importante: Os Secrets do Kubernetes são codificados em base64, não criptografados por padrão. Isso significa que podem ser facilmente decodificados. Para obter criptografia real em repouso, é necessária uma configuração adicional, como a integração com KMS.
Implantando com Secrets do K8s
Vamos ver um exemplo de como um Secret do Kubernetes é definido e depois consumido em um Pod. Você pode definir segredos em YAML ou criá-los usando comandos kubectl.
Depois de criado, um Pod pode referenciar o segredo para montá-lo como um volume ou injetar seus valores como variáveis de ambiente.
apiVersion: v1
kind: Pod
metadata:
name: my-secret-pod
spec:
containers:
- name: my-app-container
image: busybox
command: ["sh", "-c", "echo Username: $(cat /etc/secrets/username) Password: $(cat /etc/secrets/password)"]
volumeMounts:
- name: secret-volume
mountPath: "/etc/secrets"
readOnly: true
volumes:
- name: secret-volume
secret:
secretName: my-k8s-secretCofres externos de segredos
Para dados altamente confidenciais ou ao gerenciar segredos em vários clusters e ambientes, as ferramentas externas de gerenciamento de segredos oferecem recursos avançados, como:
- Armazenamento centralizado: Uma única fonte confiável para todos os segredos.
- Criptografia em repouso e em trânsito: Garantias de segurança mais fortes.
- Segredos dinâmicos: Credenciais geradas automaticamente e com curta duração.
- Auditoria e controle de acesso: Permissões detalhadas e registros abrangentes.
Entre as opções populares estão o HashiCorp Vault, o AWS Secrets Manager e o Azure Key Vault.
O que é RBAC?
O controle de acesso baseado em funções (RBAC) é um método de restringir o acesso ao sistema a usuários autorizados. Em vez de atribuir permissões diretamente a usuários individuais, as permissões são agrupadas em “funções” e os usuários são atribuídos a essas funções.
Na orquestração de contêineres, o RBAC garante que usuários, aplicações ou serviços tenham somente as permissões necessárias para interagir com recursos, como Pods, implantações e Secrets.
Blocos básicos do RBAC no K8s
O RBAC do Kubernetes usa alguns tipos importantes de recursos:
- Role: Define permissões dentro de um namespace específico, por exemplo, “pode visualizar pods” no namespace “dev”.
- ClusterRole: Define permissões em todo o cluster, por exemplo, “pode visualizar todos os pods” ou “pode gerenciar nós”.
- RoleBinding: Concede as permissões definidas em uma Role a um usuário, grupo ou conta de serviço dentro de um namespace.
- ClusterRoleBinding: Concede as permissões definidas em uma ClusterRole a um usuário, grupo ou conta de serviço em todo o cluster.
Exemplo de RBAC: limitando o acesso
Vamos ver um exemplo de como conceder a uma conta de serviço específica a permissão de apenas listar e obter pods em um determinado namespace. Isso impõe o princípio do menor privilégio.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: ServiceAccount
name: pod-viewer-sa # Name of the ServiceAccount to bind to
namespace: default
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.ioVerifique sua compreensão
Você aprendeu a proteger dados confidenciais e controlar o acesso. É hora de uma verificação rápida!
Recapitulação: proteja suas aplicações
Parabéns! Nesta lição, você aprendeu sobre dois pilares essenciais da segurança de contêineres:
- Gerenciamento de segredos: Proteção de dados confidenciais usando Docker Secrets e Secrets do Kubernetes, compreendendo seus pontos fortes e limitações.
- Controle de acesso baseado em funções (RBAC): Implementação de permissões detalhadas no Kubernetes para garantir o princípio do menor privilégio.
Ao dominar esses conceitos, você está criando aplicações conteinerizadas mais robustas e seguras!
Perguntas Frequentes
A aula “Gerenciamento de Secrets e RBAC” é grátis?
Sim — o texto completo de “Gerenciamento de Secrets e RBAC” é 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 “Gerenciamento de Secrets e RBAC”?
Aprenda estratégias avançadas para gerenciar dados confidenciais e implementar o controle de acesso baseado em funções (RBAC) em ambientes de contêineres. 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 3 de 4.
Quanto tempo leva a aula “Gerenciamento de Secrets e RBAC”?
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
- Verificação de segurança de imagens de contêiner
- Segurança de contêineres em execução
- Gerenciamento de Secrets e RBAC
- Políticas de rede e rede com privilégio mínimo