Setir-Derejeli Howpsuzlyk
AiHummer köp kärendeçilikli we onuň iň güýçli üzňeleşme serhedi maglumat bazasynyň özünde ýaşaýar: PostgreSQL Setir-Derejeli Howpsuzlyk (RLS). RLS işjeňleşdirilende, maglumat bazasy — diňe programma kody däl — soragyň diňe häzirki kärendeçä degişli setirleri görmegini güýçlendirýär.
Näme üçin RLS
Programma-derejeli süzgüçlemek (WHERE tenant_id = ...) zerur, ýöne ýumşak:
ýekeje ýatdan çykarylan jümle kärendeçileriň arasynda maglumat syzdyryp biler.
RLS kepilligi PostgreSQL-e geçirýär, şeýdip hatda süzülmedik sorag hem diňe
häzirki kärendeçiniň setirlerini gaýtarýar. Bu programmanyň öz çäklendirmesiniň
aşagyndaky goragda-çuňluk gatlagydyr. Has giň köp kärendeçilik modeli üçin — we
onuň idempotent gapdal täsirler bilen nähili jübütleşýändigi üçin —
Köp kärendeçilik & idempotentlik
sahypasyna serediň.
Çäklendirilen rol (islege bagly)
RLS islege bagly we gateway-a eýä däl-de, çäklendirilen rol ulanýan ikinji maglumat bazasy birikmesini bermek bilen işjeňleşdirilýär:
# /home/.aihummer/etc/gateway.env
# Owner pool — runs migrations, used for system/bypass operations
AIHUMMER_DATABASE_URL=postgres://owner:...@localhost/aihummer
# Restricted application pool — RLS policies apply (aihummer_app role)
AIHUMMER_DB_APP_URL=postgres://aihummer_app:...@localhost/aihummer
aihummer_app roly tablisa eýesi däl, şonuň üçin PostgreSQL oňa RLS
syýasatlaryny ulanýar. Programma soraglary bu çäklendirilen howuzdan akýar.
Host-ýerli gurnamalar üçin gurnaýjy AIHUMMER_DB_APP_URL-i awtomatiki
birikdirýär.
[!NOTE]
AIHUMMER_DB_APP_URLbolmasa, gateway hemme zat üçin eýä howuzyny ulanýar we RLS netijeli güýçlendirilmeýär. Maglumat bazasy derejesindäki üzňeleşmäni açmak üçin çäklendirilen howuzy belläň.
Her-kärendeçi çäklendirmesi
Sorag içinde programma kärendeçi-çäklendirilen soraglary işletmezden ozal
birikmede häzirki kärendeçini belleýär — konseptual taýdan db.WithTenant.
Çäklenenden soň, çäklendirilen roldaky RLS syýasatlary her okamagy we ýazmagy
şol kärendeçiniň setirleri bilen çäklendirýär. Çäk iş bölegine baglanýar, şonuň
üçin ol bir wagtda işleýän soraglaryň arasynda syzmaýar.
request ─▶ resolve tenant ─▶ db.WithTenant(tenant) ─▶ queries see only that tenant
Işçiler üçin ulgam / böwetden geçiş rejimi
Käbir iş kanuny taýdan kärendeçileri kesip geçýän ýa-da kärendeçä bagly däl — fon işçileri, planlaýjylar, outbox we şuňa meňzeş mehanizm. Bular üçin gateway eýä howuzynda işleýän, her-kärendeçi RLS syýasatlaryndan daşardaky ulgam (böwetden geçiş) rejimini ulanýar, şeýdip infrastruktura wezipeleri maglumat toplumy boýunça işläp bilýär.
[!WARNING] Böwetden geçiş rejimi diňe ynamdar içerki işçiler üçin. Ulanyjynyň adyndan hereket edýän sorag-işleýiş kod ýollary hemişe çäklendirilen, kärendeçi-çäkli howuzdan geçmeli — hiç haçan böwetden geçiş ýolundan däl.
Migrasiýalar eýä howuzynda işleýär
Shema üýtgeşmeleri çäklendirilen rolda bolmadyk artykmaçlyklary talap edýär,
şonuň üçin migrasiýalar hemişe eýä howuzynda (AIHUMMER_DATABASE_URL),
maslahat berýän gulpuň astynda, başlangyçda işleýär. Çäklendirilen aihummer_app
roly diňe adaty programma trafigi üçin ulanylýar. Bu artykmaçlyk bölünişigini
arassa saklaýar: shema-üýtgedýän amallar eýäni ulanýar; kärendeçi maglumatyna
elýeterlilik RLS ulanylan çäklendirilen roly ulanýar.
Indiki nirä
- Köp kärendeçilik & idempotentlik — doly kärendeçi modeli we gapdal täsirleriň dikelişde nähili howpsuz galýandygy.
- Syrlar gaznasy — her-kärendeçi DEK-ler syrlar gatlagynda şol bir üzňeleşmäni berkidýär.
- RBAC & çäklendirilen API açarlary — maglumat gatlagynyň üstündäki ygtyýar.