Lab 9.4 - Security Audit
Lab Objectives
By the end of this lab, you will be able to:
- Understand security auditing in Kubernetes.
- Verify user and Service Account permissions.
- Examine security resources.
- Identify potential security issues.
Estimated Duration
45-60 minutes
Prerequisites
- kubectl installed and configured.
- Local Kubernetes cluster running.
- Knowledge of Kubernetes security (previous chapters).
Part 1: Permission Verification
Step 1.1: Check Permissions with kubectl auth can-i
Check your own permissions:
# Check all your permissions
kubectl auth can-i --list
# Check specific permissions
kubectl auth can-i create pods
kubectl auth can-i delete deployments
kubectl auth can-i get secrets
Step 1.2: Check Service Account Permissions
Create a Service Account and check its permissions:
kubectl create serviceaccount test-sa
kubectl auth can-i --list --as=system:serviceaccount:default:test-sa
Part 2: Roles and RoleBindings Audit
Step 2.1: List All Roles
Examine all Roles in the cluster:
# Roles in all namespaces
kubectl get roles --all-namespaces
# Details of a specific Role
kubectl describe role <role-name> -n <namespace>
Step 2.2: List All RoleBindings
Examine all RoleBindings:
kubectl get rolebindings --all-namespaces
kubectl describe rolebinding <binding-name> -n <namespace>
Part 3: Secrets Audit
Step 3.1: List Secrets
Identify all Secrets:
kubectl get secrets --all-namespaces
Step 3.2: Check Secret Access
Check who can access Secrets:
kubectl auth can-i get secrets --all-namespaces
Part 4: Service Accounts Audit
Step 4.1: List All Service Accounts
kubectl get serviceaccounts --all-namespaces
Step 4.2: Examine Permissions
For each Service Account, check its permissions:
kubectl get rolebindings,clusterrolebindings --all-namespaces -o wide | grep <service-account-name>
Part 5: Security Configuration Verification
Step 5.1: Check Pod Security Standards
Check namespaces with PSS:
kubectl get namespaces --show-labels | grep pod-security
Step 5.2: Check Network Policies
Examine Network Policies:
kubectl get networkpolicies --all-namespaces
Part 6: Audit Report
Create a simple script to generate a report:
#!/bin/bash
echo "=== Kubernetes Security Audit ==="
echo ""
echo "1. Roles and RoleBindings:"
kubectl get roles,rolebindings --all-namespaces
echo ""
echo "2. Service Accounts:"
kubectl get serviceaccounts --all-namespaces
echo ""
echo "3. Secrets:"
kubectl get secrets --all-namespaces | wc -l
echo ""
echo "4. Pod Security Standards:"
kubectl get namespaces --show-labels | grep pod-security
Lab Summary
In this lab, you performed a security audit of your Kubernetes cluster. You learned how to verify permissions, examine security resources, and identify potential issues.
Next Steps
This module on Security and RBAC is now complete. You can move on to Module 10 on Helm and Package Management.
Module 10: Helm and Package Management
Lab created on: December 2024