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