GH GambleHub

Gestionați configurațiile și secretele

Gestionați configurațiile și secretele

1) De ce aveți nevoie de ea

Configurațiile și secretele sunt „sângele” platformei de producție. O eroare în config cade în p95, secretul scurs este un incident P1. Scopul este de a face un config/secret:
  • Previzibil (scheme, validare, versiuni).
  • Secure (criptare, drepturi minime, rotație).
  • Gestionat (GitOps, audit, rollback-uri).
  • Dinamică în cazul în care este justificată (caracteristică steaguri, parametrizarea limitelor).

2) Clasificarea artefactelor

Configurații publice: caracteristici, praguri, timeout-uri, steaguri de caracteristici (fără secrete).
Configurații sensibile: parametrii care schimbă comportamentul căilor critice (de exemplu, limitele de plată).
Secrete: parole/chei/jetoane/certificate/materiale de criptare.
Artefacte de încredere: rădăcină/certificate intermediare, politici PKI, chei KMS.

Principiul stocării și drepturilor separate: secrete ≠ publice ≠ sensibile.

3) Ierarhia de configurare

Construiți o „piramidă” de straturi:

1. Valori implicite globale (org-wide).

2. Mediu („prod/stage/dev”).

3. Regiune („eu-central-1”, „us-east-1”).

4. Chiriaș/Brand (pentru multi-chiriași).

5. Service (microservice specific).

6. Suprascriere (runtime) - comutatoare temporare.

Reguli de fuziune: „mai jos câștigă”, conflict - numai prin MR/aprobare.

Exemplu (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) Scheme și validare

Fiecare config este un contract cu o schemă (JSON Schema/OPA/validatori în CI).

Tipuri, intervale, câmpuri obligatorii, valori implicite.
"Reguli de pază" (nu poate fi setat la "încercați din nou> 5", "p95 _ target <50ms').
Verificarea automată în CI și atunci când se aplică (admitere-webhook/KRM).

JSON Schema Fragment

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 Modele de livrare

Static (copt imagine): fiabil, dar necesită reporniri.
Push/Watch :/agenții atașați primesc actualizări (stream/poll) și semnalizează aplicația.
Trageți la pornire: obținem un instantaneu la pornire (simplificați calea fierbinte).
Edge cache/proxy pentru sarcini geo-distribuite.

Principalul lucru: atomicitatea și versioning de instantanee, controlul compatibilității și rollback rapid.

6) Instrumente și roluri

Magazine de configurare: Git (sursa adevărului) + GitOps (Argo/Flux), Parametru Store/Config Service.
Depozite secrete: Vault, AWS Secrets Manager/SSM, Secretele GCP, Azure KV.
Criptare: KMS/HSM, SOPS (vârstă/GPG/KMS), secrete sigilate, criptare tranzit (Vault).
Livrare: CSI Secrets Store, Vault Agent Injector/Sidecar, init-containere.
Steaguri/dinamică: caracteristică platformă de pavilion (inclusiv kill-switch de urgență).

7) Criptare: Modele și practici

În rest: cheile KMS ale proiectului/mediului, criptarea plicului.
În tranzit: TLS/mTLS cu autentificare reciprocă.
La utilizare: decriptare cât mai târziu posibil, de preferință în memoria de proces/sidecar (fără a scrie pe disc).
Ierarhia cheie: rădăcină (HSM) → KMS CMK → taste de date (DEK).
Rotație: calendar (90/180 zile) + după eveniment (compromis angajat/plecare).

8) Managementul secret: Modele

8. 1 GitOps + SOPS (instantaneu static)

Git stochează doar cifrtext.
Decriptare în CI/CD sau pe un cluster (KMS/vârstă).
Aplicarea prin controler (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 Injector agent seif

Contul de serviciu (JWT/SA) este autentificat în Vault.
Sidecar pune credite în tmpfs și actualizări pe TTL.
Suport pentru credite dinamice (DB, cloud - izolare și pe termen scurt).

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 Secretele Magazin

Montați secretul ca volum, rotația este transparentă.
Pentru PKI - reînnoirea automată a certificatelor/cheilor.

9) Kubernete: practici

ConfigMap - numai date publice/insensibile.
Secret - sensibil (cu base64 - nu criptare; activați criptarea la Rest pentru etcd).
Adnotări Checksum: reporniți Implementarea la schimbarea configurației.
Controlul admiterii: interzicerea montării secretelor nu din „lista albă”, interzicerea parolelor „simple” în manifeste.
Politica de rețea: restricționați accesul la furnizorii secreți (Vault/CSI).

Exemplu de sumă de control (Helm)

yaml annotations:
checksum/config: {{ include (print $.Template. BasePath "/configmap. yaml"). sha256sum }}

10) Politici de acces (RBAC/ABAC)

Cel mai puțin privilegiu: serviciul își vede doar secretele; acces prin namespace/etichetă/prefix.
Sarcini împărțite: crearea unui conținut secret ≠ citire; audit orice citește.
Credite temporare: conectări dinamice (DB, cloud) cu TTL și rotație automată.
Segmentare: prod/etapă în diferite proiecte/conturi/taste KMS.

11) Audit, exploatare forestieră, observabilitate

Jurnalele de lectură/eliberare secrete: cine/când/ce/unde; corelație cu eliberările și incidentele.
Valori: frecvența apelurilor, secretele expirate, certificatele expirate, cota de credite dinamice.
Evenimente de securitate - cotă depășită, anomalii IP/time, mai multe autentificări eșuate.

12) Rotația secretelor și certificatelor

Standardizarea termenilor: chei API - 90 de zile, parole DB - 30 de zile, serturi TLS - 60-90 de zile.
Schița de rotație: generarea → testul → publicarea dublă (grație) → comutarea → revocarea verificării → vechi.
Fiabilitate: intrare dublă de configurații/secrete, compatibilitate client (accepta nou + vechi).
PKI: propriul AC sau integrarea cu unul extern; Actualizați automat conținutul mTLS prin CSI/Vault.

13) Configurații dinamice și steaguri de caracteristici

Luați parametrii „fierbinți” (limite, timeout-uri) de pe platforma de servicii/pavilion de configurare.
Cache-ul local și lipiciozitatea (calculul variantei prin hash), TTL scurt.
Garda SLO pentru a schimba parametrii sensibili (auto-rollback și kill-switch).

14) Integrarea cu CI/CD și GitOps

Pre-comite/CI: lintere de circuit, controale SOPS, interzicerea secretelor „goale” (scanere: gitleaks/trufflehog).
Policy Gate: OPA/Conftest - dezactivați configurațiile fără schemă/fără adnotări ale proprietarului/fără etichete de mediu.
Livrare progresivă: promovarea configurațiilor ca artefacte (semver), canar pentru schimbarea parametrilor.
Eliberați adnotări: cine/ce config/secret schimbat; corelație rapidă cu p95/5xx.

15) Exemple

15. 1 Politica OPA: Interzicerea SG-urilor deschise în configurații

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 Exemplu de instantaneu de configurare (versionat)

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 Vault - credite dinamice pentru baze de date

hcl path "database/creds/payments" {
capabilities = ["read"]
}
role issues user/password with TTL = 1h and auto-rollover

16) Anti-modele

Secretele în Git în text clar/în Helm/variabile Ansible fără criptare.
Un singur „mega-secret” pentru toate serviciile/mediile.
Jetoane cu durată lungă de viață fără TTL/rotație; certificate „nemuritoare”.
Configurații dinamice fără scheme/validare și fără modificări de audit.
Nu există criptare în Rest pentru rețeaua etcd/KMS și non-mTLS.
Editarea manuală a configurațiilor din produs (ocolind GitOps).
Accesul dezvoltatorilor la secrete comerciale „pentru orice eventualitate”.

17) Lista de verificare a implementării (0-60 zile)

0-15 zile

Include diagrame/validatoare pentru configurații; start repo „configs” și fluxul GitOps.
Ridicați KMS și criptare: SOPS/Secrete sigilate/Criptare la odihnă în etcd.
Interziceți secretele textului clar în CI (scanere), introduceți proprietarii/aprobările.

16-30 zile

Împărțiți bolțile: configurații publice vs secrete sensibile vs.
Implementați Vault/Secrets Manager, selectați calea de livrare (Agent/CSI/SOPS).
Configurați rotația creditelor TLS/DB/PSP; tablouri de bord „durata de viață/expirarea”.

31-60 zile

Configurații dinamice și steaguri cu SLO-gating și auto-rollback.
politici OPA/Conftest; zero-trust (namespace/label-scoped access).
Joc-zi: simularea scurgerilor secrete și rotația forței.

18) Valorile maturității

% din secretele sub criptare și fără acces direct de la Git = 100%.
Acoperirea de configurare/validare ≥ de 95%.
Timpul mediu de rotire a secretelor critice (țintă: ore, nu zile).
Ponderea creditelor dinamice (DB/cloud) ≥ de 80%.
0 incidente datorate „secretelor simple „/certificatelor expirate.
MTTR pe eroare de configurare cu rollback <5 minute.

19) Roluri și procese de comandă

Proprietar de configurații: Proprietar de domenii/scheme/politici.
Securitate: politici, ierarhie cheie, audit de acces.
Platformă/SRE: GitOps, alimentare/injectare, telemetrie.
Echipe de aplicații: config/consum secret, teste de compatibilitate.

20) Concluzie

Un contur fiabil de configurații și secrete sunt + GitOps + criptare + rotație + scheme de politici. Separat public și secret, criptați totul, aplicați configurații atomic și versional, minimizați drepturile și durata de viață a creditelor, automatizați rotațiile și auditurile. Apoi, schimbările vor deveni rapide și sigure, iar riscul de scurgeri și căderi va fi minim.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.