O Kubernetes oferece uma infraestrutura poderosa para orquestrar containers em larga escala, mas com isso vêm desafios significativos em termos de segurança. Garantir que seu cluster esteja protegido é fundamental para manter a integridade das suas aplicações e dados. Neste artigo, exploraremos as melhores práticas de segurança para Kubernetes, seguindo uma abordagem passo a passo.

1. Usar Autenticação e Autorização Baseada em Funções (RBAC)

O controle de acesso ao Kubernetes deve ser gerenciado com cuidado, e o Role-Based Access Control (RBAC) é uma ferramenta essencial para isso.

Passo 1: Ativando o RBAC

Certifique-se de que o RBAC está habilitado no seu cluster Kubernetes. Para clusters gerenciados, como GKE ou EKS, o RBAC geralmente vem ativado por padrão. Para clusters locais, como o Minikube, pode ser necessário ativá-lo manualmente.

Verifique a configuração do cluster com:

kubectl api-versions | grep rbac

Se o RBAC estiver ativado, você verá algo como:

rbac.authorization.k8s.io/v1

Passo 2: Definindo Permissões com RBAC

Crie uma política de RBAC para garantir que os usuários ou serviços tenham apenas as permissões mínimas necessárias.

Exemplo de arquivo role.yaml para permitir leitura em pods:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list"]

Em seguida, crie o RoleBinding para associar o Role a um usuário ou serviço:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:
- kind: User
  name: "johndoe"
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io