GH GambleHub

Policy as Code

1) Ի՞ նչ կարելի է համարել «քաղաքականություն»

Քաղաքականությունը դետերմինացված կանոն է, որը պատասխանում է «հնարավոր/հնարավոր» հարցին (կամ «ինչպես հնարավոր է») նշված համատեքստում

Մուտքագրումը/հեղինակային իրավունքը ՝ RBAC/ABAC, ReBAC, տվյալների արտահանումը, step-up (MFA)։

Ենթակառուցվածքի անվտանգությունը 'admission-վերահսկումը Kubernetes, պատկերների/գաղտնիքների քաղաքականությունը, ցանցային կանոնները։

Կոմպլենսը և գաղտնիությունը 'համաձայնությունների կառավարումը, PII-թեեգացիան, տեղական հաշվետվական օրը, գեո սահմանափակումները։

Կազմաձևը և որակը '«արգելք: latest», ռեսուրսների սահմանները, ռեսուրսների պարտադիր թեստերը (Cloud)։

Տվյալները և ML 'առանց համաձայնության, k-անունության, DP բյուջեների, Lineage-invariants-ի արգելքը։

2) PaC ճարտարապետական մոդելը

PAP (Policy Administration Point) 'ռեպոզիտորիա և կառավարման գործընթացներ (MR/PR, հեղափոխություն, տարբերակը)։

PDP (Policy Decision Point) 'շարժիչ, որը հաշվարկում է քաղաքականության լուծումը (OPA, Cedar-entine, սեփական թարգմանիչ)։

PEP (Policy Enforcium Point) 'օգտագործման կետը (API-դարպաս, webhook-admisione K8s, ETL տրանսֆորմատոր, PPK)։

PIP (Policy Information Point) ՝ ատրիբուտների/փաստերի աղբյուրներ ՝ IDP, ռուսական և ռեսուրսներ, տվյալների պահեստ, ռիսկի սկոր։

Decision Log/Audit: անփոփոխ լուծումների ամսագրեր (վերլուծելու համար)։

Հոսքը 'PEP-ի պահանջը ձևավորում է PDP կոդավորման ենթատեքստը (PIP) հաշվարկում է PEP կոդավորման լուծումը (allow/deny/խմբագրություն) գլանաձև/մետրիկ։

3) Գործիքներ և օրինագծեր

OPA/Rego-ը համընդհանուր շարժիչ և լեզու է ադապտացիոն քաղաքական գործիչների համար (webhook admissione K8s: Gatekeeper, CI-Wintest-ում, API-ում 'sidecar/ծառայություն)։

Kyverno-ը Kubernetes-ի պաշտպանողական քաղաքականությունն է YAML-ում, patch/validation/գեներացիայի համար։

Cedar (AWS/կրճատ) - քաղաքական լեզուն, որն ունի շեշտադրող «ինչ-որ մեկը անում է»։

Cloud IAM (AWS/GCP/Azure) - ամպային ռեսուրսների քաղաքականություն (ցանկալի է chek-it PaC կարգավիճակը և IaC պլանները)։

Custium-DSL/կանոնները JSON/SQL-ի վրա առանձնահատկությունների համար (օրինակ, ML-complaens)։

4) Քաղաքականության կյանքի ցիկլը

1. Նպատակների և տիրույթի սահմանումը. <<Արգելքը բեռնման համար High/CRITICAL խոցելիության հետ>>։

2. Կոդի ֆորմալիզացիան 'Rego/Cedar/YAML։

3. Թեստեր ՝ ճշմարտության սեղաններ, բացասական դեպքեր, property-based։

4. CI-ստուգումներ 'լինտեր, unit, ինտեգրումը ֆիքսված մանիֆեստների/պահանջների վրա։

5. Ռելիզը և տարածումը 'հրատարակումը bundle, ստորագրությունը, PDP/edge-ի առաքումը։

6. Շվեյցարիա ՝ hit-rate, latency p95/p99, deny, dashbords։

7. Բացառություններ/waivers: սահմանափակ ժամանակի/ծավալի, աուդիտի և սեփականատիրոջ հետ։

8. Ռեֆակտորինգը և արխիվը 'վարկածներ, համատեղելիություն, պաշտպանություն։

5) Պահեստավորում և տարածում

Repo-layout: `policies/<domain>/<policy>.rego|cedar|yaml`, `tests/`, `bundles/`, `schemas/`.

Տարբերակումը 'semver և «policy _ version» PDP-ի պատասխաններում։

Bundles: Քաղաքական գործչի սեղմված փաթեթները + դելիգներ, որոնք ստորագրվել են (supply chain)։

Distribution: p.ru (PDP ձգում է registry/S3) կամ push (վերահսկիչը ուղարկում է)։

Partial evaluation: քաղաքական գործչի կանխատեսումը պարագծի վրա արագ կատարման համար։

6) Տվյալների և սխեմայի մոդել

Կոնտեքստի մեկ պայմանագիր '«www.ject», «resource», «action», «env», «legal»։

JSON-Schema/Eurobuf: Valididium-մոդելի փաստը; սխեմաների անհամապատասխանությունը «indeterminate deny» -ի պատճառն է։

Ատրիբուտների նորմալացումը 'միավորված անուններ (օրինակ ՝ "tenium _ id", "risk _ level", "pii _ tags", "image. vulns`).

7) Արտադրողականությունը և արտադրողականությունը

Որոշումների քշը 'բանալին «(wwww.ject _ hash, resource _ key, action, policy _ version)»; Կարճ TTL, հաշմանդամություն իրադարձությունների համար (դերերի/թեգերի փոփոխություն)։

Տեղական փաստեր. Մի քաշեք ծանր PIP-ները տաք ճանապարհին 'համաժամեցեք կեղևները։

Fail-open vs fail-closed-ը 'կրիտիկական օրինագծերի անվտանգությունը' fail-closed; UX-քննադատների համար դեգրադացիան (խմբագրությունը deny-ի փոխարեն)։

Լատենտության բյուջեն 'նպատակ <<3-10 մզ "PDP հիշողության որոշման համար, <30-50 ms' PIP-ի հետ։

8) Բացառությունների կառավարում (waivers)

Սահմանափակ ժամանակով (օրինակ, 7 օր), ռուսական սեփականատիրոջ և պատճառի հետ։

Կրճատված 'ռեսուրսի/պրոտեկտի/նեյրեքսպեյսի միջոցով։ արգելք գլոբալ «ընդմիշտ»։

Աուդիտ և հիշեցումներ 'հաշվետվություններ վերջին waiver 'am, ավտոսրահում/էսկալացիա։

9) Մետրիկներն ու դիտողությունները

Policy Coverage 'PaC-ի պաշտպանված ճանապարհների/էնդպոինտների մասը։

Decision Latency / QPS / Error rate.

Deny Rate-ը և False Positive/Negative-ը («www.y-run/shadow» ռեժիմի միջոցով)։

Drift 'տարբերությունը պլանի միջև (IaC) և փաստի միջև (1942), MSK-ի և սերվերների միջև։

Аудит: `decision_id, policy_ids, version, attributes_digest, effect, reason`.

10) Anti-patternes

Քաղաքական գործիչները, որոնք «ծածկագրում են» առանց տարբերակների և թեստերի։

Ենթատեքստի սխեմաների/վալիդացիայի բացակայությունը բացատրվում է անկանխատեսելի լուծումներով։

Մեկ մոնոլիտ ֆայլ "mega. rego».

Բացառությունների գործընթաց չկա «ձեռքով շրջանցումներ» և քաոս։

Միայն runtime-կիրառումը առանց «shift-left» CI-ում (ուշ մերժումներ)։

Թաքնված սայդային էֆեկտները քաղաքականության մեջ (քաղաքականությունը պետք է լինի մաքուր գործառույթ)։

11) Օրինակներ

11. 1 Rego (OPA) 'խոցելիության արգելք K8s-ում

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 'տվյալների արտահանումը միայն MFA-ից և «սպիտակ» IP-ով

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 'կարդալ միայն սեփականատիրոջը կամ թիմի անդամներին

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) 'արգելք' latest 'և ռուսական։ ռեսուրսներ

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. 5 Wintest CI-ում Terraform պլանի համար

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

12) Գոյություն ունեցող կարողությունների կառուցում

RBAC/ABAC: PaC - շարժիչի շերտ; PDP/PEP-ն ռոլային շարժիչի մասին հոդվածից վերածվում է։

Համաձայնությունների կառավարումը '«ads/personalization» քաղաքականությունը որպես տվյալների/էնդպոինտների հասանելիության պայմաններ։

Անանունացում/PII 'քաղաքական գործիչները արգելում են դասընթացը/էքսպորտը առանց ռուսական անանունիզացիայի և DP բյուջեի։

Geo-միկրոօրգանիզացիան 'փոխանցման/տվյալների ուղղման քաղաքականությունը պահեստային տարածքներում։

13) Գործընթացներ և մարդիկ

Օրինագծերի տերերը քաղաքական գործիչը 'անվտանգությունը, պլատֆորմը, տվյալները, ապրանքը/մարքեթինգը։

Revuers: Security + տիրույթի սեփականատերերը։

Քաղաքական գործչի կատալոգը 'նպատակի նկարագրություն, ռիսկ, SLO, կապ, օրինակներ, հղում պատահականներին։

Ուսուցում 'կերամիկա և զարգացողների համար (ինչպես գրել թեստեր, ինչպես կարգավորել Rego)։

14) Ճարտարապետի չեկի թերթիկը

1. Կոդավորման նվազագույն հավաքածու և owners?

2. Ռեպոզորատիվ քաղաքական գործիչը թեստերի, ոսպնյակների և CI-ի հետ։

3. PDP/PEP-ն տեղադրված է պարագծի վրա, API-ում, K8s-ում և տվյալների պաշտոնական շերտերում։

4. Կա համատեքստային սխեմաներ և վալիդացիա։

5. Բանդալների ստորագրությունն ու առաքումը, քեշի ռազմավարությունը և հաշմանդամությունը։

6. Metriki (latency, deny, drift), decision-log և աուդիտ։

7. Բացառությունների գործընթացը TTL-ի և հաշվետվության հետ։

8. Disy-run/shadow-ռեժիմը Enforce-ի առջև։

9. Partial evaluation/կանխատեսումը «տաք» ճանապարհների համար։

10. Runbook-ը քայքայման համար (fail-closed/allow-with-redaction)։

Եզրակացություն

Policy as Code-ը կանոններ է տալիս վերարտադրված, ստուգված և կառավարվող նույն սկզբունքներով, ինչպես նաև հավելվածը 'կոդ-ռևե, թեստեր, CI/CD, չափումներ և արձագանքներ։ Միացնելով PaC-ը հեղինակային իրավունքի հետ (RBAC/ABAC), պլատֆորմի կոմպլենսով և անվտանգությամբ, դուք ստանում եք համակարգի վարքագծի կառավարման միասնական, կանխատեսելի և մասշտաբային կարգավորումը 'admission-վերահսկողությունից մինչև տվյալների կատալոգներ և ML-proplins։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։