Pular para o conteúdo principal

Lab 9.2 - Service Accounts e Permissões

Objetivos do Lab​

Ao final deste lab, você será capaz de:

  • Criar e utilizar Service Accounts.
  • Atribuir permissões a Service Accounts.
  • Utilizar Service Accounts em Pods.
  • Compreender tokens e secrets de Service Accounts.
  • Testar o acesso à API a partir de um Pod com um Service Account.

Duração Estimada​

45-60 minutos

Pré-requisitos​

  • kubectl instalado e configurado.
  • Cluster Kubernetes local funcional.
  • Conhecimentos sobre Service Accounts (Capítulo 9.2).

Parte 1: Criação de um Service Account​

Etapa 1.1: Criar um Service Account​

Crie um namespace de teste:

kubectl create namespace sa-test

Crie um Service Account:

kubectl create serviceaccount app-sa -n sa-test

Verifique:

kubectl get serviceaccount app-sa -n sa-test
kubectl describe serviceaccount app-sa -n sa-test

Parte 2: Atribuição de Permissões​

Etapa 2.1: Criar um Role com Permissões​

Crie role-app-permissions.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: sa-test
name: app-role
rules:
- apiGroups: [""]
resources: ["pods", "configmaps"]
verbs: ["get", "list", "watch", "create"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]

Aplique:

kubectl apply -f role-app-permissions.yaml

Etapa 2.2: Criar um RoleBinding​

Crie rolebinding-app.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: app-binding
namespace: sa-test
subjects:
- kind: ServiceAccount
name: app-sa
namespace: sa-test
roleRef:
kind: Role
name: app-role
apiGroup: rbac.authorization.k8s.io

Aplique:

kubectl apply -f rolebinding-app.yaml

Parte 3: Utilização em um Pod​

Etapa 3.1: Criar um Pod com o Service Account​

Crie pod-with-sa.yaml:

apiVersion: v1
kind: Pod
metadata:
name: app-pod
namespace: sa-test
spec:
serviceAccountName: app-sa
containers:
- name: app
image: bitnami/kubectl:latest
command: ["sleep", "3600"]

Aplique:

kubectl apply -f pod-with-sa.yaml

Verifique se o Pod está usando o Service Account:

kubectl describe pod app-pod -n sa-test

Parte 4: Teste das Permissões​

Etapa 4.1: Testar o Acesso à API a partir do Pod​

Teste as permissões a partir do Pod:

# Testar a listagem dos Pods (deve funcionar)
kubectl exec -n sa-test app-pod -- kubectl get pods

# Testar a criação de um ConfigMap (deve funcionar)
kubectl exec -n sa-test app-pod -- kubectl create configmap test-cm --from-literal=key=value --dry-run=client -o yaml

# Testar a listagem dos Services (deve falhar - sem permissão)
kubectl exec -n sa-test app-pod -- kubectl get services

Parte 5: Tokens e Secrets​

Etapa 5.1: Examinar o Token​

O Service Account possui um token armazenado em um Secret:

# Listar os Secrets do Service Account
kubectl get secrets -n sa-test

# O token é montado no Pod em /var/run/secrets/kubernetes.io/serviceaccount/token
kubectl exec -n sa-test app-pod -- cat /var/run/secrets/kubernetes.io/serviceaccount/token

Parte 6: Limpeza​

kubectl delete pod app-pod -n sa-test
kubectl delete rolebinding app-binding -n sa-test
kubectl delete role app-role -n sa-test
kubectl delete serviceaccount app-sa -n sa-test
kubectl delete namespace sa-test

Resumo do Lab​

Neste lab, você criou e utilizou Service Accounts com permissões RBAC. Você aprendeu a atribuir permissões, a utilizar Service Accounts em Pods e a testar o acesso à API.


Próximos Passos​

O próximo lab mostrará como aplicar os Pod Security Standards.

Lab 9.3: Pod Security Standards


Lab criado em: Dezembro de 2024