GH GambleHub

Policy as Code

1) «Siyasət» hesab etmək nədir

Siyasət, verilən kontekstdə «mümkün/mümkün deyil» (və ya «mümkün olduğu kimi») sualına cavab verən determinativ qaydadır:
  • Giriş/avtorizasiya: RBAC/ABAC, ReBAC, məlumat ixracı, step-up (MFA).
  • Infrastruktur təhlükəsizliyi: Kubernetes admission-control, image/secret siyasəti, şəbəkə qaydaları.
  • Komplayens və gizlilik: razılığın idarə edilməsi, PII etiketləmə, yerli hesabat günləri, geo-məhdudiyyətlər.
  • Konfiqurasiya və keyfiyyət: «qadağa: latest», resurs limitləri, məcburi resurs etiketləri (Cloud).
  • Data və ML: razılıq olmadan dəsti təlim qadağası, k-anonimlik, DP büdcələri, Data Lineage invariantları.

2) PaC memarlıq modeli

PAP (Policy Administration Point): anbar və idarəetmə prosesləri (MR/PR, revyu, versiya).
PDP (Policy Decision Point): siyasət həllini hesablayan mühərrik (OPA, Cedar-engine, öz interpretatoru).
PEP (Policy Enforcement Point): tətbiq nöqtəsi (API-şlyuz, K8s webhook-admission, ETL-transformator, SDK).
PIP (Policy Information Point): atribut/fakt mənbələri: IdP, resurs kataloqu, məlumat anbarı, risk-skor.
Decision Log/Audit: dəyişməz həll jurnalları (insidentlərin təhlili və uyğunluq üçün).

Axın: sorğu → PEP kontekstini formalaşdırır → PDP faktları yükləyir (PIP) → həll hesablayır → PEP tətbiq edir (allow/deny/edition) → log/metrika.

3) Alətlər və domenlər

OPA/Rego - deklarativ siyasətlər üçün universal mühərrik və dil (K8s webhook-admission: Gatekeeper, CI-də - Conftest, API-də - sidecar/xidmət).
Kyverno - YAML-da Kubernetes üçün deklarativ siyasətlər, yamaq/validasiya/nəsil.
Cedar (AWS/köçürülə bilən) - «kimsə nəyisə edir» avtorizasiyasına diqqət yetirən siyasətçi dili.
Cloud IAM (AWS/GCP/Azure) - bulud resursları siyasəti (tercihen statik və IaC planlarında PaC yoxlama).
Xüsusi - spesifiklər üçün JSON/SQL üzərində DSL/qaydaları (məsələn, ML-komplayens).

4) Siyasət həyat dövrü

1. Hədəf və domenin müəyyən edilməsi: «High/CRITICAL boşluqları olan konteynerlərin yüklənməsinə qadağa».
2. Kodda rəsmiləşdirmə: Rego/Cedar/YAML.
3. Testlər: həqiqət cədvəlləri, mənfi hallar, property-based.
4. CI-yoxlamalar: linter, unit, uydurma manifestlərə/sorğulara inteqrasiya.
5. Azad və yayım: bundle nəşr, imza, PDP/edge çatdırılması.
6. Monitorinq: hit-rate, latency p95/p99, deny payı, drift dashboard.
7. istisnalar/waivers: vaxt/həcm məhdudlaşdırılmış, audit və sahibi ilə.
8. Refaktorinq və arxiv: versiyalar, uyğunluq, miqrasiya.

5) Saxlama və paylama

Repo-layout: `policies/<domain>/<policy>.rego|cedar|yaml`, `tests/`, `bundles/`, `schemas/`.
Version: PDP cavablarında semver və 'policy _ version'.
Bundles: sıxılmış siyasət paketləri + sxemlər + konfiqurasiya, imzalanmış (supply chain security).
Distribution: pull (PDP registry/S3 çəkir) və ya push (nəzarətçi göndərir).
Partial evaluation: perimetrdə sürətli həyata keçirilməsi üçün siyasətlərin əvvəlcədən təyin edilməsi.

6) Data modeli və sxemləri

Kontekstin vahid müqaviləsi: 'subject', 'resource', 'action', 'env', 'legal'.
JSON-Schema/Protobuf: faktiki modelləri doğrulayın; sxemlərin uyğunsuzluğu «indeterminate → deny» üçün səbəbdir.
Atributların normallaşdırılması: vahid adlar (məsələn, 'tenant _ id', 'risk _ level', 'pii _ tags', 'image. vulns`).

7) Performans və etibarlılıq

Cache Solutions: açar '(subject_hash, resource_key, action, policy_version)'; qısa TTL, hadisələrə görə əlillik (rolların/etiketlərin dəyişdirilməsi).
Yerli faktlar: isti yolda ağır PIP çəkməyin - snapshots sinxronizasiya.
Fail-open vs fail-closed: kritik domenlərin təhlükəsizliyi - fail-closed; UX-kritik üçün - deqradasiya (deny əvəzinə redaktə).
Gecikmə büdcəsi: PDP yaddaşında həll üçün <3-10 ms «, <30-50 ms» PIP.

8) Istisnaların idarə edilməsi (waivers)

Vaxt məhdudiyyəti (məsələn, 7 gün), məcburi sahibi və səbəbi ilə.
Satınalma: resurs/layihə/neyspeys; qlobal «əbədi» qadağa.
Audit və xatırlatmalar: Bitən waiver hesabatları, avtomobil örtüyü/eskalasiya.

9) Metrika və müşahidə

Policy Coverage: PaC tərəfindən qorunan yolların/bitlərin payı.
Decision Latency / QPS / Error rate.
Deny Rate və False Positive/Negative («dry-run/shadow» rejimi vasitəsilə).
Drift: Plan (IaC) və fakt (canlı), SDK və server həlləri arasında uyğunsuzluq.
Аудит: `decision_id, policy_ids, version, attributes_digest, effect, reason`.

10) Anti-nümunələr

Versiyalar və testlər olmadan kodda «tikilmiş» siyasətçilər.
Kontekstin sxemlərinin/validasiyasının olmaması → gözlənilməz həllər.
Bir monolit fayl "mega. rego».
Heç bir istisna prosesi → «əl gəzintiləri» və xaos.
CI-də «shift-left» olmadan yalnız runtime-tətbiq (gec uğursuzluqlar).
Siyasətdə gizli side effektləri (siyasət təmiz bir funksiya olmalıdır).

11) Nümunələr

11. 1 Rego (OPA): K8s həssas görüntüləri qadağan

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: yalnız MFA və «ağ» IP ilə məlumat ixrac

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: Yalnız sahibinə və ya komanda üzvlərinə oxu

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): qadağa ': latest' və yük. resurslar

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 planı üçün CI-də 5 Conftest

bash terraform plan -out tf. plan terraform show -json tf. plan > tf. json conftest test tf. json --policy policies/terraform

12) Mövcud qabiliyyətlərə inteqrasiya

RBAC/ABAC: PaC - bəyannamə təbəqəsi; PDP/PEP rol mühərriki haqqında məqalədən yenidən istifadə olunur.
Razılığın idarə edilməsi: «ads/personalizasiya» siyasəti məlumat/end-pointlərə giriş şərtləri kimi.
Anonimləşdirmə/PII: Siyasətçilər anonimləşdirmə profilləri və DP büdcəsi olmadan təlim/ixrac qadağan edir.
Geo-marşrutlaşdırma: saxlama bölgələrinə görə trafik/məlumatların marşrutlaşdırılması siyasəti.

13) Proseslər və insanlar

Domen sahibləri siyasət: təhlükəsizlik, platforma, məlumat, məhsul/marketinq.
Prosessorlar: security + domen sahibləri.
Siyasət kataloqu: hədəf təsviri, risk, SLO, əlaqə, nümunələr, hadisələrə istinadlar.
Təlim: inkişaf etdiricilər üçün qaydalar və snippetlər (testlər necə yazılır, Rego necə hata ayıklanır).

14) Memarın yoxlama siyahısı

1. Domen və owners minimum dəsti müəyyən?
2. Test, linter və CI ilə anbar siyasətçisi?
3. PDP/PEP perimetrdə, API-də, K8s və məlumat paylaynlarında yerləşdirilib?
4. Kontekst və validasiya sxemləri varmı?
5. Band imzası və çatdırılması, cache strategiyası və əlillik?
6. Metriklər (latency, deny, drift), decision-log və audit?
7. TTL və hesabat ilə istisnalar prosesi?
8. Enforce qarşısında Dry-run/shadow-rejimi?
9. Partial evaluation/« isti »yollar üçün ön kompilyasiya?
10. Runbook deqradasiya (fail-closed/allow-with-redaction)?

Nəticə

Policy as Code tətbiqlə eyni prinsiplərə uyğun olaraq qaydaları oynatmaq, yoxlamaq və idarə etmək üçün istifadə olunur: kod-revyu, testlər, CI/CD, metriklər və geri çəkilmələr. PaC-ni platformanın avtorizasiyası (RBAC/ABAC), komplayenti və təhlükəsizliyi ilə birləşdirərək, admission-nəzarətdən tutmuş məlumat ixracatlarına və ML-payplaynlara qədər vahid, proqnozlaşdırıla bilən və ölçülə bilən sistem davranış idarəetmə dövrünü əldə edirsiniz.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.