Segurança do Kubernetes: RBAC, Políticas de Rede e Segurança de Pods
Configure funções de RBAC do Kubernetes, imponha políticas de rede que restrinjam o tráfego entre pods e aplique padrões de segurança de pods para limitar a escalada de privilégios.
Segurança do Kubernetes: RBAC, Políticas de Rede e Segurança de Pods é uma aula grátis de Cloud & IT Cert Prep 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 Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
Visão geral da superfície de ataque do Kubernetes
O Kubernetes orquestra cargas de trabalho conteinerizadas em grande escala, mas sua complexidade cria uma ampla superfície de ataque. Os principais componentes que devem ser protegidos incluem: o Servidor da API (o plano de controle central — seu comprometimento fornece controle de todo o cluster), o etcd (o banco de dados do estado do cluster — armazena segredos em base64 e deve ser criptografado em repouso), o kubelet (agente do nó — uma API do kubelet sem autenticação permite a execução arbitrária de pods), o tempo de execução de contêineres (Docker/containerd) e a rede que conecta todos os pods. Os candidatos à Security+ devem entender que configurações incorretas do Kubernetes estão entre as descobertas mais comuns de segurança na nuvem.
RBAC: controle de acesso baseado em funções no Kubernetes
O RBAC (Controle de Acesso Baseado em Funções) do Kubernetes controla quais usuários, contas de serviço e processos podem executar quais ações em quais recursos da API. O modelo tem quatro objetos: Role (permissões no escopo de um namespace), ClusterRole (permissões em todo o cluster), RoleBinding (concede uma Role a um sujeito dentro de um namespace) e ClusterRoleBinding (concede uma ClusterRole a um sujeito em todo o cluster). Cada comando kubectl é convertido em uma chamada à API, que é verificada com base nas regras de RBAC. Se o RBAC não estiver configurado, qualquer usuário autenticado (ou conta de serviço) poderá ter acesso administrativo.
# Create a role allowing only pod reads in 'default' namespace
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
namespace: default
rules:
- apiGroups: ['']
resources: ['pods']
verbs: ['get', 'list', 'watch']Contas de serviço e privilégio mínimo
Todo pod no Kubernetes é executado sob uma conta de serviço — uma identidade usada para autenticação na API. Por padrão, os pods usam a conta de serviço default em seu namespace, que pode ter permissões amplas. O princípio do privilégio mínimo exige a criação de contas de serviço dedicadas para cada aplicativo, com apenas as permissões necessárias. Além disso, definir automountServiceAccountToken: false nos pods que não precisam de acesso à API impede que o token da conta de serviço seja montado no sistema de arquivos do pod, onde um aplicativo comprometido poderia usá-lo para fazer chamadas à API.
# Pod spec: disable service account token auto-mount
apiVersion: v1
kind: Pod
metadata:
name: myapp
spec:
serviceAccountName: myapp-sa
automountServiceAccountToken: false
containers:
- name: myapp
image: myapp:v1.0Políticas de rede: negação padrão
Por padrão, no Kubernetes, todos os pods podem se comunicar com todos os outros pods em qualquer namespace. Um pod comprometido pode tentar imediatamente alcançar bancos de dados, APIs internas e outros microsserviços. Os recursos NetworkPolicy do Kubernetes definem regras que restringem o tráfego entre pods com base em rótulos, namespaces e portas. A abordagem recomendada é uma política de rede de “negação padrão de tudo” em cada namespace, seguida de regras explícitas de permissão para os caminhos de comunicação necessários. Observe que a NetworkPolicy exige um plugin CNI que ofereça suporte a ela (Calico, Cilium, Weave) — o Kubernetes básico ignora a NetworkPolicy sem um CNI compatível.
# Default deny all ingress and egress in a namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- EgressPadrões de segurança de pods: substituindo o PSP
Os Pod Security Standards (PSS), introduzidos no Kubernetes 1.23 e estabilizados na versão 1.25, substituem o Pod Security Policy (PSP), obsoleto, por três perfis integrados aplicados no nível do namespace: Privileged (sem restrições, para componentes do sistema), Baseline (impede escalações de privilégio conhecidas, como contêineres privilegiados e acesso à rede do host) e Restricted (reforçado, exige usuários não root, remove todas as capacidades e impõe sistemas de arquivos raiz somente leitura). Os namespaces recebem rótulos para impor um nível de política, e os pods que o violam são rejeitados na admissão.
# Label namespace to enforce 'restricted' pod security
kubectl label namespace production \
pod-security.kubernetes.io/enforce=restricted \
pod-security.kubernetes.io/audit=restricted \
pod-security.kubernetes.io/warn=restrictedGerenciamento de segredos no Kubernetes
Os Secrets do Kubernetes armazenam dados confidenciais, como senhas, tokens e certificados TLS. Por padrão, os Secrets são armazenados no etcd como valores codificados em base64 — não criptografados. Qualquer pessoa que possa ler o etcd ou tenha permissões suficientes de RBAC pode decodificá-los facilmente. As práticas recomendadas incluem: habilitar a criptografia em repouso do etcd usando AES-GCM com uma chave armazenada em um KMS (AWS KMS, GCP KMS); integrar-se a um gerenciador externo de segredos, como o HashiCorp Vault ou o AWS Secrets Manager, por meio do Secrets Store CSI Driver; e restringir o acesso aos Secrets via RBAC, para que apenas as contas de serviço que precisam deles possam lê-los.
# Enable etcd encryption at rest (encryption configuration)
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
- resources:
- secrets
providers:
- aescbc:
keys:
- name: key1
secret: <base64-encoded-32-byte-key>Controladores de admissão: barreiras de segurança
Os controladores de admissão são plugins no servidor da API do Kubernetes que interceptam solicitações à API após a autenticação e a autorização, mas antes da persistência do objeto, permitindo validar, modificar ou rejeitar solicitações. Entre os controladores de admissão relevantes para a segurança estão: PodSecurity (impõe os Padrões de Segurança de Pods), ImagePolicyWebhook (permite a verificação externa de assinaturas de imagens), AlwaysPullImages (força a extração de imagens novas para impedir o uso de imagens maliciosas armazenadas localmente) e OPA/Gatekeeper (Open Policy Agent — a opção mais flexível, que permite políticas personalizadas expressas na linguagem Rego para impor qualquer regra de segurança organizacional).
Reforço de segurança dos componentes do cluster
O reforço de segurança dos componentes do plano de controle do Kubernetes é crítico: o servidor da API deve usar --anonymous-auth=false para desabilitar o acesso sem autenticação, ter --audit-log-path configurado para capturar toda a atividade da API e usar TLS em todas as conexões. O kubelet deve usar --authorization-mode=Webhook (não AlwaysAllow) e ter a autenticação anônima desabilitada. O etcd deve usar criptografia TLS entre pares e para clientes, ter o acesso à rede restrito (ser acessível apenas pelo servidor da API) e manter os dados criptografados em repouso. O CIS Kubernetes Benchmark fornece uma lista de verificação abrangente para todas as configurações dos componentes.
# Check kubelet configuration for security issues
kubectl get --raw /api/v1/nodes/nodename/proxy/configz | jq '.kubeletconfig | {anonymousAuth: .authentication.anonymous.enabled, authorization: .authorization.mode}'Isolamento de namespaces e multilocação
Os namespaces do Kubernetes fornecem separação lógica de recursos, mas, por si só, não constituem uma fronteira de segurança forte — eles oferecem principalmente isolamento organizacional. Para um isolamento real de multilocação (por exemplo, cargas de trabalho de clientes diferentes), são necessários controles adicionais: políticas de rede para bloquear o tráfego entre namespaces, cotas de recursos para impedir ataques de negação de serviço causados por vizinhos ruidosos, conjuntos de nós separados para locatários fortemente isolados ou clusters dedicados por locatário. Muitas organizações usam Hierarchical Namespaces ou soluções comerciais como o vCluster para obter uma multilocação mais forte dentro de um único cluster.
Registro de auditoria e monitoramento em tempo de execução
O registro de auditoria do Kubernetes registra cada solicitação à API: quem a fez, de onde veio, qual ação foi solicitada e qual recurso foi visado. Os registros de auditoria são essenciais para investigações forenses após um incidente de segurança e para detectar comportamentos anômalos, como associações de funções incomuns, acesso a segredos ou comandos exec em pods de produção. Os registros de auditoria devem ser transmitidos para um SIEM centralizado. O Falco fornece monitoramento do comportamento dos contêineres em tempo de execução, enquanto os serviços Kubernetes gerenciados pela nuvem (EKS, GKE, AKS) oferecem integração nativa dos registros de auditoria com suas respectivas plataformas de registro.
# Check recent kubectl exec events in audit log
grep '"verb":"create".*"resource":"pods".*"subresource":"exec"' /var/log/kubernetes/audit.log | tail -20Segurança da cadeia de fornecimento: procedência das imagens
A segurança da cadeia de fornecimento do Kubernetes garante que somente imagens confiáveis e verificadas cheguem à produção. As recomendações da CNCF sobre segurança da cadeia de fornecimento incluem: verificar as assinaturas das imagens com o Cosign antes da implantação (imposto por controladores de admissão), gerar e verificar SBOMs (listas de materiais de software) para todas as imagens de contêiner, a fim de rastrear a procedência dos componentes, fixar as imagens a resumos criptográficos (myimage@sha256:abc123) em vez de etiquetas mutáveis e verificar todos os gráficos Helm de terceiros quanto a configurações incorretas e vulnerabilidades antes da implantação.
# Pin image to digest for immutability
# Instead of:
image: nginx:latest
# Use:
image: nginx@sha256:a3e2a7a3d7f94e... # immutable digestVerificação rápida
Avalie sua compreensão dos conceitos do CompTIA Security+ (SY0-701) apresentados nesta lição.
Recapitulação da lição
Nesta lição, você aprendeu que: o RBAC do Kubernetes controla o acesso à API por meio de funções, ClusterRoles e associações — sempre aplique o princípio do menor privilégio às contas de serviço; as configurações NetworkPolicy de negação padrão impedem movimentos laterais entre pods e namespaces; e os Padrões de Segurança de Pods impõem o fortalecimento dos contêineres no nível do namespace, bloqueando contêineres privilegiados, acesso à rede do host e execução como root. A seguir, exploraremos a segurança sem servidor e as superfícies de ataque no nível das funções.
Perguntas Frequentes
A aula “Segurança do Kubernetes: RBAC, Políticas de Rede e Segurança de Pods” é grátis?
Sim — o texto completo de “Segurança do Kubernetes: RBAC, Políticas de Rede e Segurança de Pods” é 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 Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.
O que vou aprender em “Segurança do Kubernetes: RBAC, Políticas de Rede e Segurança de Pods”?
Configure funções de RBAC do Kubernetes, imponha políticas de rede que restrinjam o tráfego entre pods e aplique padrões de segurança de pods para limitar a escalada de privilégios. Você pratica Cloud & IT Cert Prep 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 Cloud & IT Cert Prep?
Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep 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 “Segurança do Kubernetes: RBAC, Políticas de Rede e Segurança de Pods”?
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 Cloud & IT Cert Prep?
Sim. Cada aula de Cloud & IT Cert Prep 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
- Segurança de Contêineres: Fortalecimento de Imagens e Proteção em Execução
- Segurança do Kubernetes: RBAC, Políticas de Rede e Segurança de Pods
- Segurança de Aplicações e Funções Serverless
- Verificação de Segurança de Infraestrutura como Código