Kubernetes Assessment: 04 Advanced + Security
Επίπεδο δυσκολίας: Advanced + Security Γλώσσα: Ελληνικά Μορφή: αξιολόγηση security review, policy, hardening και incident response Προτεινόμενη διάρκεια: 3 έως 4 ώρες Μέγιστη βαθμολογία: 100 βαθμοί Όριο επιτυχίας: 70 βαθμοί
Αυτή η αξιολόγηση περιλαμβάνει εργασίες, απαιτήσεις υποβολής και κριτήρια βαθμολόγησης. Δεν περιλαμβάνει την πλήρη ενδεικτική λύση.
1. Στόχος της αξιολόγησης
Αυτή η αξιολόγηση ελέγχει αν μπορείτε να εξετάζετε δομημένα τους κινδύνους Kubernetes, να εφαρμόζετε hardening σε workloads, να διατυπώνετε policies και να τεκμηριώνετε το incident response. Η έμφαση είναι σε threat modeling, API Server και Control Plane, RBAC, ServiceAccounts, Pod Security Standards, SecurityContext, NetworkPolicy, supply chain, Admission Control, ασφάλεια Secrets, Runtime Detection, Compliance Evidence και Incident Response.
Μετά την αξιολόγηση πρέπει να είναι σαφές ότι μπορείτε να:
- χωρίζετε τις επιφάνειες επίθεσης Kubernetes σε API, Nodes, workloads, δίκτυο, Secrets και supply chain,
- εντοπίζετε RBAC permissions και διαδρομές privilege escalation,
- περιορίζετε συνειδητά το αυτόματο mount των ServiceAccount tokens,
- αξιολογείτε πρακτικά Pod Security Standards και SecurityContext,
- διατυπώνετε NetworkPolicies με default deny, πρόσβαση DNS και στοχευμένη πρόσβαση εφαρμογών,
- αξιολογείτε προέλευση image, tag, digest, scan, SBOM και κατάσταση υπογραφής,
- ταξινομείτε Admission Policies σε audit/warn/enforce mode,
- περιγράφετε ρεαλιστικά τη διαχείριση και το rotation των Secrets,
- μετατρέπετε runtime signals και audit evidence σε ενέργειες,
- τεκμηριώνετε incident response για παραβιασμένο Pod και διαρροή Secret.
2. Προαπαιτούμενα και επιτρεπόμενοι πόροι
Χρειάζεστε:
- ένα lab cluster,
kubectl,- δικαιώματα δημιουργίας Namespaces, ServiceAccounts, RBAC, NetworkPolicies και δοκιμαστικών workloads,
- προαιρετικά Kyverno, OPA Gatekeeper ή ValidatingAdmissionPolicy,
- προαιρετικά Trivy, Grype, Cosign ή αντίστοιχα εργαλεία supply chain,
- προαιρετικά Falco, Tetragon, Tracee ή αντίστοιχες πηγές runtime signals.
Επιτρέπονται:
- η επίσημη τεκμηρίωση Kubernetes,
- το υλικό του workshop,
- οι δικές σας σημειώσεις,
- security checklists και εσωτερικά policy templates,
kubectl auth can-i,kubectl describe, events, logs και policy reports.
Δεν επιτρέπονται:
- πραγματικά production Secrets ή δεδομένα πελατών,
- πραγματικά registry ή cloud credentials,
- καταστροφικές ενέργειες σε Node ή cluster χωρίς έγκριση για το lab,
- εσκεμμένη exfiltration ή ενέργειες επίθεσης εκτός lab,
- αλλαγές σε production clusters.
Προτεινόμενο Namespace:
export NS=exam-security
3. Σενάριο
Μια υποδειγματική εφαρμογή checkout-api εκτελείται στο Namespace shop-prod. Ο έλεγχος εντοπίζει:
- Το Deployment χρησιμοποιεί το ServiceAccount
checkout-sa. - Υπάρχει ένα Secret
payment-api-token. - Το image προέρχεται από private registry.
- Ένα GitOps pipeline συγχρονίζει τα manifests.
- Runtime alert αναφέρει απροσδόκητο shell μέσα στο Pod.
- Ένα παλιό manifest περιέχει
privileged: trueκαι mount τύπουhostPath. - Οι NetworkPolicies είναι ελλιπείς.
- Η διαδικασία rotation του Secret δεν έχει τεκμηριωθεί.
- Το τμήμα ασφάλειας απαιτεί evidence και production stop criteria.
Εργάζεστε στο lab Namespace exam-security. Δεν πρέπει να τροποποιήσετε το πραγματικό shop-prod. Αντίθετα, αποδείξτε κινδύνους, ελέγχους και μέτρα αντιμετώπισης περιστατικών με αναπαραγώγιμα παραδείγματα και έγγραφα.
4. Αναμενόμενη υποβολή
Υποβάλετε φάκελο ή archive με αυτά τα αρχεία:
04-advanced-security-submission/
answers.md
threat-model.md
rbac-review.md
serviceaccount-token-review.md
pod-security-review.md
hardened-deployment.yml
networkpolicies.yml
supply-chain-review.md
admission-policy.md
secrets-review.md
runtime-detection.md
compliance-evidence.md
incident-runbook.md
evidence/
can-i.txt
events.txt
policy-results.txt
logs-summary.txt
cleanup.md
Αν συγκεκριμένα εργαλεία δεν υπάρχουν στο lab, τεκμηριώστε το και δώστε μια τεχνικά ορθή εναλλακτική αξιολόγηση. Παράδειγμα: αν δεν υπάρχει Cosign, περιγράψτε ποιος έλεγχος υπογραφής θα απαιτούνταν σε production και ποιο stop criterion θα ίσχυε.
5. Μέρος A: Ερωτήσεις ασφάλειας
Απαντήστε με αναφορά στο σενάριο.
- Ποιες είναι οι κύριες επιφάνειες επίθεσης του Kubernetes;
- Πώς αλληλεπιδρούν Authentication, Authorization και Admission Control;
- Ποιοι κίνδυνοι προκύπτουν από
privileged: true,hostPath,hostNetwork,hostPIDκαιhostIPC; - Γιατί είναι σημαντικά για την ασφάλεια τα ServiceAccounts και τα tokens που γίνονται αυτόματα mount;
- Ποια RBAC verbs ή resources είναι ιδιαίτερα επικίνδυνα και γιατί;
- Τι προσφέρουν τα Pod Security Standards
privileged,baselineκαιrestricted; - Ποια πεδία SecurityContext περιμένετε σε ένα hardened workload;
- Γιατί το NetworkPolicy μειώνει το lateral movement χωρίς να αντικαθιστά την κρυπτογράφηση;
- Γιατί το DNS egress αποτελεί ξεχωριστό σημείο στις πολιτικές default deny;
- Ποιους ελέγχους supply chain περιμένετε για production images;
- Γιατί τα Kubernetes Secrets δεν προστατεύονται επαρκώς μόνο με Base64;
- Ποιες πληροφορίες ανήκουν σε αξιόπιστο incident evidence;
- Ποια είναι η διαφορά μεταξύ prevention, detection και response;
- Γιατί οι εξαιρέσεις policies χρειάζονται owner, αιτιολόγηση και ημερομηνία λήξης;
- Ποια άμεσα μέτρα χρειάζονται για παραβιασμένο Pod και διαρροή Secret;
6. Μέρος B: Threat model και RBAC audit
Εργασία B1: Threat model
Δημιουργήστε threat-model.md για το checkout-api.
Απαιτούμενες ενότητες:
- assets και αξία προστασίας,
- trust boundaries,
- επιφάνειες επίθεσης,
- σενάρια κατάχρησης,
- υπάρχοντες έλεγχοι,
- έλεγχοι που λείπουν,
- stop criteria,
- evidence.
Ελάχιστα assets:
| Asset | Αναμενόμενη αξιολόγηση |
|---|---|
payment-api-token |
πολύ υψηλή αξία προστασίας |
checkout-sa |
ταυτότητα workload με πιθανή πρόσβαση API |
Deployment checkout-api |
production workload |
| private image | σχετικό με το supply chain |
| GitOps repository | επιθυμητή κατάσταση και διαδικασία έγκρισης |
| Ingress/Gateway route | εξωτερική επιφάνεια επίθεσης |
Εργασία B2: RBAC audit
Δημιουργήστε δύο ServiceAccounts στο lab:
app-sa,overprivileged-sa.
Το app-sa πρέπει να έχει μόνο τα ελάχιστα δικαιώματα ανάγνωσης σε ConfigMaps. Το overprivileged-sa πρέπει σκόπιμα να έχει επικίνδυνα δικαιώματα, για παράδειγμα σε Secrets ή RoleBindings.
Ελέγξτε τα πραγματικά δικαιώματα με kubectl auth can-i.
Απαιτούμενο evidence στο evidence/can-i.txt:
kubectl auth can-i get configmaps --as system:serviceaccount:exam-security:app-sa -n exam-security
kubectl auth can-i get secrets --as system:serviceaccount:exam-security:app-sa -n exam-security
kubectl auth can-i get secrets --as system:serviceaccount:exam-security:overprivileged-sa -n exam-security
kubectl auth can-i create rolebindings --as system:serviceaccount:exam-security:overprivileged-sa -n exam-security
Τεκμηριώστε:
- ποια δικαιώματα είναι αποδεκτά,
- ποια δικαιώματα είναι κρίσιμα,
- ποια διαδρομή privilege escalation θα ήταν δυνατή,
- πώς γίνεται η διόρθωση.
Εργασία B3: Αυτόματο mount ServiceAccount token
Δημιουργήστε serviceaccount-token-review.md.
Εργασίες:
- Δημιουργήστε Deployment
no-api-app. - Ορίστε
automountServiceAccountToken: false. - Ελέγξτε στο Pod αν έγινε αυτόματο mount token.
- Εξηγήστε πότε ένα workload χρειάζεται πρόσβαση στο Kubernetes API και πότε όχι.
7. Μέρος C: Hardening workload, δικτύου και supply chain
Εργασία C1: Pod Security Restricted
- Ορίστε Pod Security labels για
restrictedστα modesenforce,auditκαιwarnστο lab Namespace. - Προσπαθήστε να δημιουργήσετε μη ασφαλές Pod με
privileged: true. - Τεκμηριώστε την απόρριψη.
- Δημιουργήστε hardened Pod ή Deployment που ικανοποιεί τις απαιτήσεις Restricted.
Αναμενόμενα κριτήρια hardening:
runAsNonRoot: true,- ορισμένος non-root user,
allowPrivilegeEscalation: false,readOnlyRootFilesystem: true,capabilities.drop: [ALL],seccompProfile: RuntimeDefault,- χωρίς χρήση host namespaces,
- χωρίς ανεξέλεγκτο
hostPath, - εγγράψιμη διαδρομή μόνο μέσω
emptyDirή αποκλειστικού volume.
Εργασία C2: Hardened Deployment
Δημιουργήστε hardened-deployment.yml για ασφαλή υποδειγματική εφαρμογή.
Το manifest πρέπει να περιλαμβάνει:
- Namespace
exam-security, - ServiceAccount χωρίς περιττό API token,
- SecurityContext σε επίπεδο Pod και container,
- resource Requests και Limits,
- Readiness Probe όπου έχει τεχνικό νόημα,
- σαφή labels
owner,environment,app, - κανένα πραγματικό Secret.
Εργασία C3: NetworkPolicy
Δημιουργήστε networkpolicies.yml με:
- default deny για Ingress και Egress,
- άδεια DNS egress,
- άδεια από
frontendπροςbackendστη θύρα TCP8080, - αποκλεισμό κάθε άλλου egress,
- σημείωση για το αν το CNI εφαρμόζει NetworkPolicies.
Τεκμηριώστε ερωτήματα για την παραγωγική λειτουργία:
- Χρειάζεται το Pod πρόσβαση στο Kubernetes API;
- Χρειάζεται το Pod πρόσβαση σε registry, logging, monitoring ή εξωτερικά APIs;
- Υπάρχουν σταθεροί εξωτερικοί στόχοι ή μόνο κανόνες απεριόριστου internet egress;
- Πώς λαμβάνονται υπόψη IPv6 ή dual-stack;
Εργασία C4: Έλεγχος supply chain
Δημιουργήστε supply-chain-review.md για ένα υποδειγματικό image.
Απαιτούμενα πεδία:
- registry,
- repository,
- tag,
- digest,
- Pull Policy,
- ImagePullSecret,
- αποτέλεσμα CVE scan ή αναμενόμενη διαδικασία scan,
- κατάσταση SBOM,
- κατάσταση υπογραφής,
- build provenance,
- admission requirement,
- stop criterion.
Πρέπει να αξιολογηθούν τουλάχιστον τα εξής stop criteria:
latestχωρίς digest σε production,- image από μη εγκεκριμένο registry,
- κρίσιμο CVE χωρίς εξαίρεση,
- έλλειψη υπογραφής για production workloads,
- Pull Secret χωρίς owner ή rotation.
Εργασία C5: Admission policy
Δημιουργήστε admission-policy.md.
Επιλέξτε τουλάχιστον δύο στόχους policy:
- υποχρεωτικά labels
owner,environment,cost-center, - απαγόρευση του
privileged: true, - απαίτηση
runAsNonRoot: true, - απαίτηση resource Requests και Limits,
- μόνο εγκεκριμένα registries.
Για κάθε policy περιγράψτε:
- στόχο,
- πεδίο εφαρμογής,
- mode audit/warn/enforce,
- παράδειγμα παραβίασης,
- διαδικασία εξαίρεσης,
- διαδρομή rollback αν το policy είναι λανθασμένο.
Μπορείτε να χρησιμοποιήσετε Kyverno, OPA Gatekeeper ή ValidatingAdmissionPolicy. Αν κανένα από αυτά τα εργαλεία δεν είναι διαθέσιμο, περιγράψτε τεχνικά το policy με pseudomanifest και τον τρόπο λειτουργίας του.
8. Μέρος D: Secrets, Detection, Compliance και Incident Response
Εργασία D1: Ασφάλεια και rotation των Secrets
Δημιουργήστε secrets-review.md με:
- κατάλογο Secrets,
- πρόσβαση μέσω RBAC,
- τύπο mount στο Pod,
- κινδύνους σε logs, events, images και backups,
- κινδύνους etcd/backup,
- διαδικασία rotation,
- σύγκριση Kubernetes Secret, External Secrets, CSI Secret Store, Sealed Secrets και SOPS,
- μέτρο αντιμετώπισης περιστατικού σε περίπτωση διαρροής.
Σημαντικό: Μη χρησιμοποιήσετε πραγματικά Secrets. Οι υποδειγματικές τιμές πρέπει να αναγνωρίζονται ξεκάθαρα ως παραδείγματα.
Εργασία D2: Runtime detection και audit signals
Δημιουργήστε runtime-detection.md.
Ορίστε αναμενόμενα signals και ενέργειες για:
| Signal | Αναμενόμενη αξιολόγηση |
|---|---|
| απροσδόκητο shell σε container | κίνδυνος, πηγή δεδομένων, πρώτη ενέργεια, evidence |
πρόσβαση εγγραφής σε /etc, /proc ή /sys |
κίνδυνος, έλεγχος, απόκριση |
| απροσδόκητο egress | flow logs, DNS, NetworkPolicy, containment |
| πρόσβαση στο Kubernetes API μέσω ServiceAccount | audit logs, έλεγχος RBAC, rotation token |
ύποπτο kubectl exec |
χρήστης, χρόνος, Pod, αναφορά αλλαγής |
| OOMKill σε Pod σχετικό με την ασφάλεια | διαχωρισμός σήματος πόρων από σήμα επίθεσης |
Εργασία D3: Compliance evidence
Δημιουργήστε compliance-evidence.md με τουλάχιστον πέντε ευρήματα:
- Namespace χωρίς Pod Security label,
- ServiceAccount με υπερβολικά ευρεία δικαιώματα,
- Pod χωρίς Requests/Limits,
- Secret χωρίς σημείωση rotation,
- workload χωρίς NetworkPolicy.
Για κάθε εύρημα τεκμηριώστε:
- χρόνο,
- πόρο,
- κίνδυνο,
- evidence,
- owner,
- διόρθωση,
- εξαίρεση με ημερομηνία λήξης ή προθεσμία αποκατάστασης,
- επανέλεγχο.
Εργασία D4: Incident runbook
Δημιουργήστε incident-runbook.md για παραβιασμένο Pod και διαρροή Secret.
Απαιτούμενες ενότητες:
- triage,
- isolation,
- διατήρηση evidence,
- containment,
- rotation Secret και token,
- έλεγχος image και CI,
- rebuild και redeploy,
- επικοινωνία,
- lessons learned,
- hardening policies.
Απαιτούμενο evidence:
kubectl get pod <pod> -n <namespace> -o wide
kubectl get pod <pod> -n <namespace> -o yaml
kubectl describe pod <pod> -n <namespace>
kubectl logs <pod> -n <namespace> --all-containers
kubectl logs <pod> -n <namespace> --all-containers --previous
kubectl get sa,role,rolebinding -n <namespace>
kubectl auth can-i get secrets --as system:serviceaccount:<namespace>:<serviceaccount> -n <namespace>
kubectl get events -n <namespace> --sort-by=.metadata.creationTimestamp
Τεκμηριώστε επίσης πότε ένα Pod μπορεί να διαγραφεί αμέσως και πότε πρέπει πρώτα να απομονωθεί για να διατηρηθούν στοιχεία.
9. Βαθμολόγηση
| Πεδίο | Βαθμοί | Αναμενόμενο αποτέλεσμα |
|---|---|---|
| Ερωτήσεις ασφάλειας | 15 | Σωστή ταξινόμηση επιφανειών επίθεσης, ελέγχων και επιπτώσεων κινδύνου |
| Threat model και RBAC audit | 20 | Κατανόηση assets, trust boundaries, πραγματικών δικαιωμάτων και διαδρομών privilege escalation |
| Hardening Pod, workload και δικτύου | 20 | Ορθή εφαρμογή SecurityContext, Pod Security, ServiceAccount token και NetworkPolicies |
| Supply chain και Admission | 15 | Αξιολόγηση image, digest, scan, SBOM, υπογραφής και επιβολής policy |
| Secrets, detection και compliance | 15 | Λειτουργικά χρήσιμη διαχείριση Secret, runtime signals και ευρήματα evidence |
| Incident response | 10 | Πλήρη triage, isolation, evidence, rotation, rebuild και lessons learned |
| Τεκμηρίωση και cleanup | 5 | Αναπαραγώγιμη, ασφαλής υποβολή με σαφή όρια |
| Σύνολο | 100 |
10. Κριτήρια αυτόματης αποτυχίας
Η αξιολόγηση αποτυγχάνει ανεξάρτητα από τη βαθμολογία αν:
- χρησιμοποιηθούν πραγματικά Secrets, δεδομένα πελατών ή production contexts,
- εκτελεστούν καταστροφικές ενέργειες εκτός lab,
- επιτραπεί σε workload που προσομοιώνει production να τρέχει ως
privilegedχωρίς τεκμηριωμένη εξαίρεση, - γίνουν αποδεκτά δικαιώματα ανάγνωσης Secrets χωρίς τεχνική ανάγκη,
- καταστραφεί incident evidence πριν από τη βασική συλλογή του,
- ο εξεταζόμενος δεν μπορεί να εξηγήσει γιατί το Base64 δεν είναι κρυπτογράφηση,
- δεν οριστούν stop criteria για production.
11. Λίστα ελέγχου εξεταστή
- Το threat model διαχωρίζει API, Node, workload, δίκτυο, Secrets και supply chain.
- Υπάρχει evidence
kubectl auth can-iγια αμφότερα τα ServiceAccounts. - Το αυτόματο mount token είναι απενεργοποιημένο σε workload χωρίς ανάγκη πρόσβασης API.
- Το Pod Security Restricted έχει οριστεί με labels και έχει τεκμηριωθεί η απόρριψη μη ασφαλούς Pod.
- Το hardened Deployment περιλαμβάνει non-root, seccomp, dropped capabilities και read-only root filesystem.
- Οι NetworkPolicies περιλαμβάνουν default deny, DNS και στοχευμένη άδεια εφαρμογής.
- Ο έλεγχος supply chain καλύπτει registry, digest, scan, SBOM, υπογραφή και stop criteria.
- Οι Admission policies έχουν mode audit/warn/enforce, εξαιρέσεις και διαδρομή rollback.
- Ο έλεγχος Secrets περιλαμβάνει RBAC, mount, rotation, backups και αντιμετώπιση διαρροής.
- Το Runtime detection και το compliance evidence οδηγούν σε εφαρμόσιμες ενέργειες.
- Το incident runbook καλύπτει triage, isolation, evidence, rotation, rebuild και βελτίωση policies.