Policy as Code
1) "Syýasaty" näme hasaplamaly
Syýasat - berlen kontekstde "mümkin/mümkin däl" (ýa-da "mümkin boldugyça") diýen soraga jogap berýän kesgitlenen düzgün:- Giriş/ygtyýarnama: RBAC/ABAC, ReBAC, maglumatlary eksport etmek, step-up (MFA).
- Infrastruktura howpsuzlygy: Kubernetes admission-control, şekiller/syrlar syýasaty, tor düzgünleri.
- Komplayens we gizlinlik: ylalaşyklary dolandyrmak, PII-bellik etmek, ýerli hasabat günleri, geo-çäklendirmeler.
- Konfigurasiýalary we hili: "gadaganlyk: latest", resurs çäkleri, hökmany resurs bellikleri (Cloud).
- Maglumatlar we ML: razylyksyz toplumlarda okuwyň gadagan edilmegi, k-anonimlik, DP-býudjetler, Data Lineage-invariantlar.
2) PaC binagärlik modeli
PAP (Policy Administration Point): ammar we dolandyryş amallary (MR/PR, revyu, wersiýa).
PDP (Policy Decision Point): Syýasat çözgüdini hasaplaýan hereketlendiriji (OPA, Cedar-engine, öz düşündirijisi).
PEP (Policy Enforcement Point): ulanylýan nokat (API-şlýuz, webhook- K8s, ETL-transformator, SDK).
PIP (Policy Information Point): atributlaryň/faktlaryň çeşmeleri: IdP, çeşmeleriň kataloglary, maglumatlar ammary, töwekgelçilik-skor.
Decision Log/Audit: üýtgemeýän çözgütler magazinesurnallary (wakalary seljermek we laýyklyk üçin).
Akym: haýyş → PEP kontekstini emele getirýär → PDP faktlary ýükleýär (PIP) → çözgüdi hasaplaýar → PEP ulanýar (allow/deny/redaksiýa) → log/metrika.
3) Gurallar we domenler
OPA/Rego - deklaratiw syýasatlar üçin ähliumumy hereketlendiriji we dil (webhook-administration in K8s: Gatekeeper, CI-de - Conftest, API-de - sidecar/hyzmat).
Kyverno - YAML-da Kubernetes üçin deklaratiw syýasatlar, patch/validasiýa/nesil.
Cedar (AWS/terjime) - "kimdir biri näme edýär" diýen ygtyýarlylyga ünsi jemleýän syýasatçynyň dili.
Cloud IAM (AWS/GCP/Azure) - bulut çeşmeleri syýasaty (has gowusy statiki we IaC meýilnamalarynda PaC barlagy).
Aýratynlyklar üçin Custom - DSL/JSON/SQL-iň üstündäki düzgünler (mysal üçin ML-complayens).
4) Syýasatyň durmuş sikli
1. Nyşany we domeni kesgitlemek: "Ýokary/CRITICAL gowşaklygy bolan konteýnerleri ýüklemegi gadagan etmek".
2. Kodda resmileşdirmek: Rego/Cedar/YAML.
3. Synaglar: hakykat tablisalary, negatiw ýagdaýlar, property-based.
4. CI-barlaglar: linter, unit, galp manifestlerde/haýyşlarda integrasiýa.
5. Goýbermek we ýaýratmak: bundle-de çap etmek, gol çekmek, PDP/edge-e eltip bermek.
6. Gözegçilik: hit-rate, latency p95/p99, deny paýy, driftiň daşbordlary.
7. Kadadan çykmalar/waivers: wagt/göwrümi boýunça çäkli, audit we eýesi bilen.
8. Refaktoring we arhiw: wersiýalar, gabat gelmek, göçmek.
5) Saklamak we ýaýratmak
Repo-layout: `policies/<domain>/<policy>.rego|cedar|yaml`, `tests/`, `bundles/`, `schemas/`.
PDP jogaplarynda semver we 'policy _ version' wersiýasy.
Bundles: gol çekilen syýasatlar + shemalar + konfigurasiýalaryň gysylan bukjalary (supply chain security).
Distribution: pull (PDP registry/S3 çekýär) ýa-da push (kontroller iberýär).
Partial evaluation: perimetrde çalt ýerine ýetirmek üçin syýasatlaryň öňünden sanalmagy.
6) Maglumatlaryň we shemalaryň nusgasy
Kontekstiň ýeke-täk şertnamasy: 'subject', 'resource', 'action', 'env', 'legal'.
JSON-Schema/Protobuf: hakykat modellerini tassyklaň; shemalaryň gabat gelmezligi "indeterminate → deny" üçin sebäp.
Atributlaryň kadalaşmagy: birmeňzeş atlar ('tenant _ id', 'risk _ level', 'pii _ tags', 'image. vulns`).
7) Öndürijilik we ygtybarlylyk
Çözgütler üçin keş: '(subject_hash, resource_key, action, policy_version)'; gysga TTL, wakalar boýunça maýyplyk (rollaryň/bellikleriň üýtgemegi).
Lokal faktlar: gyzgyn ýolda agyr PIP çekmäň - snapshotlary sinhronlaşdyryň.
Fail-open vs fail-closed: möhüm domenleriň howpsuzlygy - fail-closed; UX-kritikler üçin - pese gaçmak (deny ýerine redaksiýa).
Gizlinlik býudjeti: PDP ýadynda çözmek üçin '<3-10 ms' maksat, '<30-50 ms' PIP.
8) Kadadan çykmalar dolandyryşy (waivers)
Wagt çäkli (mysal üçin 7 gün), hökmany eýesi we sebäbi bilen.
Satyn alnanlar: çeşme/taslama/neýspeys boýunça; global "hemişelik" gadaganlygy.
Audit we ýatlatmalar: gutarýan waiver 'lar boýunça hasabatlar, awtomatiki örtük/eskalasiýa.
9) Metrikler we gözegçilik etmek
Policy Coverage: PaC tarapyndan goralýan ýollaryň/endpointleriň paýy.
Decision Latency / QPS / Error rate.
Deny Rate we False Positive/Negative ("dry-run/shadow" re modeimi arkaly).
Drift: meýilnama (IaC) bilen hakykat (live), SDK bilen serwer çözgütleriniň arasyndaky tapawut.
Аудит: `decision_id, policy_ids, version, attributes_digest, effect, reason`.
10) Anti-patternler
Wersiýalar we synaglar bolmazdan koda "tikilen" syýasatlar.
Kontekstiň shemalarynyň/tassyklamalarynyň ýoklugy → öňünden aýdyp bolmajak çözgütler.
Bir sany "mega. rego».
Kadadan çykmalar ýok → "el aýlawlary" we bulam-bujarlyk.
Diňe CI-de "shift-left" ýok runtime-programma (giç şowsuzlyklar).
Syýasatda gizlin saýd täsirleri (syýasat arassa funksiýa bolmaly).
11) Mysallar
11. 1 Rego (OPA): K8s gowşak şekilleri gadagan etmek
rego package k8s. admission. vulns
deny[msg] {
input. kind. kind == "Pod"
some c img:= input. request. object. spec. containers[c].image vulns:= data. registry. scan [img] # actual-snapshot from PIP count ({v v:= vulns[_]; v.severity == "CRITICAL"}) > 0 msg:= sprintf("image %s has CRITICAL vulns", [img])
}
11. 2 Rego: maglumatlary diňe MFA-dan we "ak" IP-den eksport etmek
rego package api. export
default allow = false
allow {
input. action == "export"
input. subject. mfa_verified == true net. cidr_contains("203. 0. 113. 0/24", input. env. ip)
}
11. 3 Cedar: Diňe eýesine ýa-da toparyň agzalaryna okamak
cedar permit(
principal in Group::"team_members",
action in [Action::"read"],
resource in Photo::"")
when { resource. owner == principal resource. team_id in principal. team_ids };
11. 4 Kyverno (YAML): gadaganlyk ': latest' we ýüki. çeşmeler
yaml apiVersion: kyverno. io/v1 kind: ClusterPolicy metadata:
name: disallow-latest-and-require-limits spec:
validationFailureAction: Enforce rules:
- name: disallow-latest match: { resources: { kinds: ["Pod"] } }
validate:
message: "Image tag 'latest' is not allowed."
pattern:
spec:
containers:
- name: ""
image: "!:latest"
- name: require-limits match: { resources: { kinds: ["Pod"] } }
validate:
message: "resources. limits.{cpu,memory} required."
pattern:
spec:
containers:
- resources:
limits:
cpu: "?"
memory: "?"
11. Terraform-meýilnama üçin CI-de 5 Conftest
bash terraform plan -out tf. plan terraform show -json tf. plan > tf. json conftest test tf. json --policy policies/terraform
12) Bar bolan ukyplara goşulmak
RBAC/ABAC: PaC - deklarasiýa gatlagy; PDP/PEP rol hereketlendirijisi baradaky makaladan gaýtadan ulanylýar.
Ylalaşyklary dolandyrmak: "ads/personalization" syýasaty maglumatlar/endpointlere girmegiň şertleri hökmünde.
Anonymizasiýa/PII: Syýasatçylar anonymizasiýa we DP-býudjet profilleri bolmazdan okuw/eksport etmegi gadagan edýärler.
Geo-marşrutlaşdyrmak: ammar sebitleri boýunça traffigi/maglumatlary marşrutlaşdyrmak syýasaty.
13) Prosesler we adamlar
Syýasat domenleriniň eýeleri: howpsuzlyk, platforma, maglumatlar, önüm/marketing.
Gözlegçiler: Howpsuzlyk + domen eýeleri.
Syýasatçylaryň katalogy: maksat beýany, töwekgelçilik, SLO, aragatnaşyk, mysallar, hadysalara salgylanmalar.
Okuw: işläp düzüjiler üçin gaýd we snippet (synaglary nädip ýazmaly, Rego-ny nädip düzetmeli).
14) Arhitektoryň çek-sanawy
1. Domen we owners iň az sanlymy?
2. Synaglar, linter we CI bilen syýasatçynyň ammary?
3. PDP/PEP perimetrde, API-de, K8s-da we maglumat paýlanyşynda ýerleşdirilýärmi?
4. Kontekst we tassyklama shemalary barmy?
5. Gol çekmek we bandllary eltmek, kesh we maýyplyk strategiýasy?
6. Metrikler (latency, deny, drift), decision-log we audit?
7. TTL we hasabat bilen kadadan çykmalar prosesi?
8. Enforce-den öň dry-run/shadow-re?
9. Partial evaluation/" gyzgyn "ýollar üçin öňünden düzülişi?
10. Bozulmak üçin Runbook (fail-closed/allow-with-redaction)?
Netije
"Policy as Code" düzgünleri programma ýaly: kod-revew, synaglar, CI/CD, metrikler we yza gaýdyp gelmek ýörelgeleri boýunça köpeldip, barlap we dolandyryp bolýar. PaC-ny awtorizasiýa (RBAC/ABAC), platforma utgaşmasy we howpsuzlygy bilen baglanyşdyrmak bilen, admission-gözegçilikden maglumat eksportyna we ML-paýlaýnlara çenli ulgamyň özüni alyp barşyny dolandyrmagyň ýeke-täk, öňünden aýdyp boljak we masştably konturyny alarsyňyz.