AiHummer
Eesti
SisselogimineKonto
v1.2.x
{ }Swagger

Rea-taseme turvalisus

v1.2.x · uuendatud 2026-06-26

AiHummer on mitme kasutajaga ja selle kõige tugevam isolatsiooni piir asub andmebaasis endas: PostgreSQL rea-taseme turvalisus (RLS). RLS-i lubamisel tagab andmebaas — mitte ainult rakenduse kood —, et päring näeb ainult jooksva üürniku ridu.

Tase: Rea taseme turvalisus on piiratud tasulise kasutamisega Ettevõte tier — see ei ole tasuta/Community platvormi osa.

Miks RLS

Rakendustaseme filtreerimine (WHERE tenant_id = ...) on vajalik, kuid habras: üks unustatud klausli võib lekkida andmeid erinevate üürnike vahel. RLS viib garantii PostgreSQL-i, nii et isegi filtreerimata päring tagastab ainult selle hetkese üürniku read. See on sügavale seadistatud kaitsekihi rakenduse enda ulatuse alla. Laiema mitmeüürnikumudeli kohta — ja kuidas see sobitub idempotentsete kõrvalmõjudega — vt Mitmeinimelisus ja idempotentsus.

Piiratud roll (valikuline liitumine)

RLS on osalemiseks ja aktiveeritakse, andes väravale teise andmebaasi ühenduse, mis kasutab piiratud rolli omaniku asemel:

# /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

See aihummer_app roll on ei tabeli omanik, nii et PostgreSQL rakendab sellele RLS-i poliitikaid. Rakenduse päringud liiguvad läbi selle piiratud reservuari. RLS-i lubamine on küsimus seadistuse tegemisest AIHUMMER_DB_APP_URL — ja kohalik/tavaline (hosti-loomupärane) installatsioon seab selle muutuja automaatselt, nii et RLS on kohe valmis kasutamiseks. See on “valikuline” ainult selles mõttes, et kohandatud või käsitsi juurutamine peab seadistama AIHUMMER_DB_APP_URL ise.

[!NOTE] Ilma AIHUMMER_DB_APP_URL, värav kasutab kõiges omanike basseinid ja RLS-i ei rakendata tegelikult. Määra piiratud hulk (mis standardne installija teeb teie jaoks) andmebaasi tasandi isolatsiooni sisse lülitamiseks.

[!IMPORTANT] RLS ei sõltu paketist. See töötab kõigis pakettides ühtmoodi, sealhulgas Community’s. Kui litsentsivaates on „Reataseme turve” näidatud kättesaamatuna, on see selle vaate ebatäpsus, mitte sinu andmebaasi olek.

Kus RLS on juba aktiivne ja kus tuleb see ise sisse lülitada

Kuidas paigaldasid RLS pärast paigaldust
Tavapaigaldus, PostgreSQL-i seab üles paigaldaja Aktiivne. Piiratud roll ja AIHUMMER_DB_APP_URL luuakse sinu eest
Oma või hallatud PostgreSQL (andmebaasi aadress oli ette antud) Ei ole aktiivne. Rolli ja AIHUMMER_DB_APP_URL loob haldaja
Paigaldus ilma administraatoriõigusteta (rootless) Ei ole aktiivne. Sama

[!WARNING] Kaks viga, mille järel RLS on „sees”, kuid ei kaitse midagi. Esimene: AIHUMMER_DB_APP_URL osutab tabelite omanikule või superkasutajale — PostgreSQL vabastab sellised rollid poliitikatest ja lüüs teatab RLS-i sellest hoolimata aktiivsena. Kasuta eraldi piiratud rolli. Teine: omaenda PostgreSQL-is võib piiratud roll tekkida automaatselt etteaimatava parooliga — anna sellele oma parool enne, kui andmebaas muutub võrgust kättesaadavaks.

Iga üürniku ulatuse määramine

Päringu sees seab rakendus ühendusel kehtiva üürniku enne, kui käivitab üürnikule suunatud päringud — kontseptuaalselt db.WithTenant. Kui piir on määratud, piiravad RLS-i poliitikad piiratud rollil iga lugemise ja kirjutamise selle üürniku ridadele. Piir on seotud tööühikuga, nii et see ei leki samaaegsete päringute vahel.

request ─▶ resolve tenant ─▶ db.WithTenant(tenant) ─▶ queries see only that tenant

Süsteem / töötlüstee töötajatele

Mõned tööd on õigustatult üürnikuülesed või üürnikust sõltumatud — taustatöötajad, ajastajad, kohaletoimetamise taastamine ja sarnane hooldus. Neile kasutab lüüsi süsteemi (ümberlülitus) režiim mis töötab omaniku andmebaaside grupil, per-kasutaja RLS-poliitikast väljaspool, nii et infrastruktuuriülesanded saavad töötada kogu andmekogumiga.

[!WARNING] Ümberlükkamise režiim on mõeldud ainult usaldusväärsetele sisetöötajatele. Päringute töötlemise kooditeed mis tegutsevad kasutaja nimel, peavad alati läbima piiratud üürniku ulatuses olev kraan — mitte kunagi kõrvaltee.

Migratsioonid toimuvad omaniku paagil

Skeemi muutmiseks on vajalikud õigused, mida piiratud rollil ei ole, seega migratsioonid käivad alati omaniku paagis (AIHUMMER_DATABASE_URL), käivitamisel nõuandva lukustuse all. Piiratud aihummer_app rolli kasutatakse ainult tavapärase rakenduse liikluse jaoks. See hoiab privileegide eraldamise puhtana: skeemi muutvad toimingud kasutavad omanikku; üürniku andmetele juurdepääs kasutab piiratud rolli koos RLS-iga.

Kuhu järgmine