Διαχείριση ρυθμίσεων και μυστικών
Διαχείριση διαμορφώσεων και μυστικών
1) Γιατί το χρειάζεστε
Οι διαμορφώσεις και τα μυστικά είναι το «αίμα» της πλατφόρμας παραγωγής. Ένα σφάλμα στη ρύθμιση πέφτει στο p95, το μυστικό που διέρρευσε είναι ένα περιστατικό P1. Ο στόχος είναι να γίνει ένα config/μυστικό:- Προβλέψιμο (συστήματα, επικύρωση, εκδόσεις).
- Ασφαλής (κρυπτογράφηση, ελάχιστα δικαιώματα, εναλλαγή).
- Διαχείριση (GITOPs, έλεγχος, rollbacks).
- Δυναμική όπου δικαιολογείται (σημαίες χαρακτηριστικών, παραμετροποίηση ορίων).
2) Ταξινόμηση των αντικειμένων
Δημόσιες συνθέσεις: χαρακτηριστικά, κατώφλια, χρονοδιαγράμματα, σημαίες (χωρίς μυστικά).
Ευαίσθητες ρυθμίσεις: παράμετροι που αλλάζουν τη συμπεριφορά των κρίσιμων διαδρομών (για παράδειγμα, όρια πληρωμών).
Μυστικά: κωδικοί πρόσβασης/κλειδιά/μάρκες/πιστοποιητικά/υλικά κρυπτογράφησης.
Αντικείμενα εμπιστοσύνης: ριζικά/ενδιάμεσα πιστοποιητικά, πολιτικές PKI, κλειδιά KMS.
Η αρχή της χωριστής αποθήκευσης και των δικαιωμάτων: δημόσια ≠ ευαίσθητα ≠ μυστικά.
3) Ιεραρχία διαμόρφωσης
Κατασκευή «πυραμίδας» στρωμάτων:1. Global defaults (org-wide).
2. Περιβάλλον («prod/stage/dev»).
3. Περιφέρεια («eu-central-1», «us-east-1»).
4. Ενοικιαστής/εμπορικό σήμα (για πολυκατοικούντες).
5. Υπηρεσία (ειδική μικροϋπηρεσία).
6. Παράκαμψη (χρόνος λειτουργίας) - προσωρινοί διακόπτες.
Κανόνες συγχώνευσης: «κατωτέρω κερδίζει», σύγκρουση - μόνο μέσω της έγκρισης MR.
Παράδειγμα (YAML)
yaml defaults:
http:
timeout_ms: 800 retry: 2 prod:
http:
timeout_ms: 1200 service: payments-api overrides:
eu-central-1:
http:
timeout_ms: 1500
4) Συστήματα και επικύρωση
Κάθε ρυθμιστικό πλαίσιο είναι μια σύμβαση με ένα σύστημα (JSON Schema/OPA/επικυρωτές σε CI).
Τύποι, κλίμακες, απαιτούμενα πεδία, προκαθορισμένες τιμές.
«Κανόνες φύλαξης» (δεν μπορεί να οριστεί σε 'επανάληψη> 5', 'p95 _ στόχος <50ms).
Αυτόματος έλεγχος σε CI και όταν εφαρμόζεται (είσοδος-webhook/KRM).
Τμήμα συστήματος JSON
json
{
"type":"object",
"properties":{
"http":{"type":"object","properties":{"timeout_ms":{"type":"integer","minimum":100,"maximum":10000},"retry":{"type":"integer","minimum":0,"maximum":5}},"required":["timeout_ms"]},
"feature_flags":{"type":"object","additionalProperties":{"type":"boolean"}}
},
"required":["http"]
}
5) Μοντέλα παράδοσης Config
Στατική (ψημένη εικόνα): αξιόπιστη, αλλά απαιτεί επανεκκίνηση.
Push/Watch :/sidecar agents λαμβάνουν ενημερώσεις (stream/poll) και σηματοδοτούν την εφαρμογή.
Τραβήξτε την εκκίνηση: παίρνουμε ένα στιγμιότυπο κατά την εκκίνηση (απλοποιήστε το hot-path).
Μνήμη/διαμεσολαβητής ακμών για γεω-κατανεμημένα φορτία.
Το κύριο πράγμα: ατομικότητα και έκδοση στιγμιότυπων, έλεγχος συμβατότητας και γρήγορη ανατροπή.
6) Εργαλεία και ρόλοι
Καταστήματα Config: Git (πηγή αλήθειας) + GitOps (Argo/Flux), Parameter Store/Config Service.
Μυστικά αρχεία καταγραφής: Vault, AWS Secrets Manager/SSM, GCP Secrets, Azure KV.
Κρυπτογράφηση: KMS/HSM, SOPS (ηλικία/GPG/KMS), σφραγισμένα μυστικά, κρυπτογράφηση διαμετακόμισης (Vault).
Παράδοση: CSI Secrets Store, Vault Agent Injector/Sidecar, init-containers.
Σημαίες/δυναμική: διαθέτουν πλατφόρμα σημαίας (συμπεριλαμβανομένου του διακόπτη κλοπής έκτακτης ανάγκης).
7) Κρυπτογράφηση: Μοντέλα και πρακτικές
Σε ηρεμία: κλειδιά KMS του έργου/περιβάλλοντος, κρυπτογράφηση φακέλου.
Κατά τη διαμετακόμιση: TLS/mTLS με αμοιβαία εξακρίβωση ταυτότητας.
Κατά τη χρήση: αποκρυπτογράφηση όσο το δυνατόν πιο αργά, κατά προτίμηση στη μνήμη/sidecar διεργασίας (χωρίς εγγραφή στο δίσκο).
Βασική ιεραρχία: κλειδιά δεδομένων ρίζας (HSM) → KMS CMK → (DEK).
Εναλλαγή: ημερολογιακό πρόγραμμα (90/180 ημέρες) + ανά συμβάν (συμβιβασμός/αναχώρηση των εργαζομένων).
8) Μυστική διαχείριση: Πρότυπα
8. 1 GitOps + SOPS (στατικό στιγμιότυπο)
Το Git αποθηκεύει μόνο κρυπτογραφημένο κείμενο.
Αποκρυπτογράφηση σε CI/CD ή σε σύμπλεγμα (KMS/ηλικία).
Εφαρμογή μέσω ελεγκτή (Flux/Argo) → Kubernetes Secret.
yaml apiVersion: v1 kind: Secret metadata: { name: psp-keys, namespace: payments }
type: Opaque data:
apiKey: ENC[AES256_GCM,data:...,sops]
8. Εγχυτήρας υλικού θησαυροφυλακίου 2
Ο λογαριασμός υπηρεσίας (JWT/SA) είναι πιστοποιημένος στο θησαυροφυλάκιο.
Το Sidecar τοποθετεί μονάδες σε tmpfs και ενημερώσεις στο TTL.
Στήριξη δυναμικών πιστωτικών μορίων (DB, υπολογιστικό νέφος - απομόνωση και βραχυπρόθεσμη).
yaml annotations:
vault. hashicorp. com/agent-inject: "true"
vault. hashicorp. com/role: "payments-api"
vault. hashicorp. com/agent-inject-secret-db: "database/creds/payments"
8. Αποθήκευση 3 μυστικών CSI
Τοποθετήστε το μυστικό ως όγκο, η περιστροφή είναι διαφανής.
Για PKI - αυτόματη ανανέωση πιστοποιητικών/κλειδιών.
9) Kubernetes: πρακτικές λεπτομέρειες
ConfigMap - μόνο δημόσια/μη ευαίσθητα δεδομένα.
Μυστικό - ευαίσθητο (με βάση 64 - μη κρυπτογράφηση; Ενεργοποίηση κρυπτογράφησης στο Rest for etcd).
Σημειώσεις Checksum: επανεκκίνηση εγκατάστασης κατά την αλλαγή ρυθμίσεων.
Έλεγχος εισόδου: απαγόρευση τοποθέτησης μυστικών που δεν περιλαμβάνονται στον «λευκό κατάλογο», απαγόρευση «απλών» κωδικών πρόσβασης στα δηλωτικά.
NetworkPolicy: περιορισμός της πρόσβασης σε μυστικούς παρόχους (Vault/CSI).
Παράδειγμα ελέγχου (Helm)
yaml annotations:
checksum/config: {{ include (print $.Template. BasePath "/configmap. yaml"). sha256sum }}
10) Πολιτικές πρόσβασης (RBAC/ABAC)
Ελάχιστο προνόμιο: η υπηρεσία βλέπει μόνο τα μυστικά της. πρόσβαση με ονοματεπώνυμο/ετικέτα/πρόθεμα.
Διαχωρισμός καθηκόντων: δημιουργία μυστικού περιεχομένου ανάγνωσης· οποιοσδήποτε έλεγχος διαβάζει.
Προσωρινές πιστώσεις: δυναμικές συνδέσεις (DB, cloud) με TTL και αυτόματη περιστροφή.
Κατάτμηση: prod/στάδιο σε διάφορα έργα/λογαριασμούς/κλειδιά KMS.
11) Λογιστικός έλεγχος, υλοτομία, παρατηρησιμότητα
Αρχεία καταγραφής των μυστικών ανάγνωσης/έκδοσης: ποιος/πότε/τι/πού· συσχέτιση με ελευθερώσεις και περιστατικά.
Μετρήσεις: συχνότητα κλήσεων, ληγμένα μυστικά, ληγμένα πιστοποιητικά, μερίδιο δυναμικών πιστωτικών μορίων.
Συμβάντα ασφαλείας - υπέρβαση ποσόστωσης, ανωμαλίες IP/χρόνου, πολλαπλές αποτυχημένες επαληθεύσεις ταυτότητας.
12) Εναλλαγή μυστικών και πιστοποιητικών
Τυποποίηση των όρων: πλήκτρα API - 90 ημέρες, κωδικοί πρόσβασης DB - 30 ημέρες, σερβιτόροι TLS - 60-90 ημέρες.
Περίγραμμα περιστροφής: παραγωγή → δοκιμή → διπλή δημοσίευση (χάρη) → αλλαγή → ανάκληση της επαλήθευσης παλαιών →.
Αξιοπιστία: διπλή εγγραφή ρυθμίσεων/μυστικών, συμβατότητα πελάτη (αποδοχή νέων + παλαιών).
PKI: ιδιόκτητο CA ή ενσωμάτωση με εξωτερικό· Αυτόματη ενημέρωση του περιεχομένου mTLS μέσω CSI/Vault.
13) Δυναμικές ρυθμίσεις και σημαίες χαρακτηριστικών
Λαμβάνονται «θερμές» παράμετροι (όρια, χρονοδιαγράμματα) από την πλατφόρμα ρύθμισης/σημαίας.
Τοπική μνήμη και κολλητότητα (υπολογισμός της παραλλαγής ανά hash), σύντομη TTL.
Φρουροί SLO για την αλλαγή ευαίσθητων παραμέτρων (αυτόματη ανατροπή και διακόπτης θανάτωσης).
14) Ενσωμάτωση με CI/CD και GitOps
Προ-commit/CI: χιτώνια κυκλωμάτων, έλεγχοι SOPS, απαγόρευση «γυμνών» μυστικών (σαρωτές: gitleaks/trufflehog).
Πύλη πολιτικής: OPA/Conftest - αποσυναρμολόγηση ρυθμίσεων χωρίς σχήμα/χωρίς σημειώσεις ιδιοκτήτη/χωρίς περιβαλλοντικές ετικέτες.
Προοδευτική παράδοση: προώθηση ρυθμίσεων ως τεχνουργήματα (semver), καναρίνι για μεταβαλλόμενες παραμέτρους.
Σημειώσεις απελευθέρωσης: ποιος/τι config/secret άλλαξε; ταχεία συσχέτιση με p95/5xx.
15) Παραδείγματα
15. 1 Πολιτική OPA: Απαγόρευση ανοικτών ΓΓ στο Config
rego package policy. config
deny[msg] {
input. kind == "SecurityGroupRule"
input. cidr == "0. 0. 0. 0/0"
input. port = = 5432 msg: = "Postgres open internet banned"
}
15. 2 Παράδειγμα στιγμιότυπου ρυθμίσεως (versioned)
yaml version: 1. 12. 0 owner: payments-team appliesTo: [ "payments-api@prod" ]
http:
timeout_ms: 1200 retry: 2 withdraw:
limits:
per_txn_eur: 5000 per_day_eur: 20000 flags:
new_withdrawal_flow: false
15. 3 Θησαυροφυλάκιο - δυναμικές πιστώσεις βάσης δεδομένων
hcl path "database/creds/payments" {
capabilities = ["read"]
}
role issues user/password with TTL = 1h and auto-rollover
16) Αντι-μοτίβα
Μυστικά στο Git σε σαφές κείμενο/σε μεταβλητές Helm/Anable χωρίς κρυπτογράφηση.
Ενιαίο «μεγάλο μυστικό» για όλες τις υπηρεσίες/περιβάλλοντα.
Μάρκες μακράς διάρκειας ζωής χωρίς TTL/περιστροφή. «αθάνατα» πιστοποιητικά.
Δυναμικές συνθέσεις χωρίς συστήματα/επικύρωση και χωρίς αλλαγές ελέγχου.
Δεν υπάρχει κρυπτογράφηση κατά την ανάπαυση για etcd/KMS και δίκτυο μη mTLS.
Χειροκίνητη επεξεργασία ρυθμίσεων στο προϊόν (παράκαμψη GitOps).
Πρόσβαση των προγραμματιστών σε εμπορικά μυστικά «σε κάθε περίπτωση».
17) Κατάλογος ελέγχου εφαρμογής (0-60 ημέρες)
0- 15 ηµέρες
Συμπεριλαμβάνονται διαγράμματα/επικυρωτές ρυθμίσεων. έναρξη «ρυθμίσεων» repo και ροής GitOps.
Ανύψωση KMS και κρυπτογράφηση: SOPS/σφραγισμένα μυστικά/κρυπτογράφηση σε ανάπαυση σε κλπ.
Απαγόρευση μυστικών απλών κειμένων στον ΚΚΠ (σαρωτές), εισαγωγή ιδιοκτητών/εγκρίσεων.
16-30 ημέρες
Διαίρεση θησαυροφυλακίων: δημόσιες ρυθμίσεις έναντι ευαίσθητων μυστικών.
Εφαρμογή διαχειριστή θησαυροφυλακίου/μυστικών, επιλογή διαδρομής παράδοσης (Agent/CSI/SOPS).
Δημιουργία της εναλλαγής των πιστωτικών μορίων TLS/DB/PSP. «Διάρκεια ζωής/λήξη».
31-60 ημέρες
Δυναμικές ρυθμίσεις και σημαίες με SLO-gating και auto-rollback.
οι πολιτικές OPA/Conftest· μηδενική εμπιστοσύνη (namespace/label-scoped access).
Ημέρα παιχνιδιού: προσομοίωση μυστικής διαρροής και περιστροφής δύναμης.
18) Μετρήσεις διάρκειας
% μυστικών υπό κρυπτογράφηση και χωρίς άμεση πρόσβαση από Git = 100%.
Η κάλυψη διαμόρφωσης/επικύρωσης ≥ 95%.
Μέσος χρόνος περιστροφής κρίσιμων μυστικών (στόχος: ώρες, όχι ημέρες).
Το μερίδιο των δυναμικών πιστωτικών μορίων (DB/cloud) ≥ 80%.
0 περιστατικά οφειλόμενα σε «απλά μυστικά «/ληγμένα πιστοποιητικά.
MTTR σε σφάλμα ρύθμισης με rollback <5 λεπτά.
19) Ρόλοι και διαδικασίες διοίκησης
Ιδιοκτήτης ρυθμίσεων: Domain/Schema/Policy
Ασφάλεια: πολιτικές, βασική ιεραρχία, έλεγχος πρόσβασης.
Πλατφόρμα/SRE: GitOps, παροχή/έγχυση, τηλεμετρία.
Ομάδες App: config/μυστική κατανάλωση, δοκιμές συμβατότητας.
20) Συμπέρασμα
Ένα αξιόπιστο περίγραμμα διαμορφώσεων και μυστικών είναι + GitOps + κρυπτογράφηση + εκ περιτροπής + συστήματα πολιτικής. Χωριστά δημόσια και μυστικά, κρυπτογραφήστε τα πάντα, εφαρμόστε τις ρυθμίσεις ατομικά και εκδοχικά, ελαχιστοποιήστε τα δικαιώματα και τη διάρκεια ζωής των πιστώσεων, αυτοματοποιήστε τις περιστροφές και τους ελέγχους. Τότε οι αλλαγές θα γίνουν γρήγορες και ασφαλείς και ο κίνδυνος διαρροών και πτώσεων θα είναι ελάχιστος.