AiHummer
Türkmençe
Gir
v1.0.x
{ }Swagger

Setir-Derejeli Howpsuzlyk

v1.0.x · täzelendi 2026-06-26

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_URL bolmasa, 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ä