AiHummer
Қазақша
КіруЖеке кабинет
v1.0.x
{ }Swagger

Қатар деңгейіндегі қауіпсіздік

v1.0.x · жаңартылды 2026-06-26

AiHummer көпқабатты болып табылады, және оның ең мықты оқшаулау шекарасы дерекқордың өзінде орналасқан: **PostgreSQL Жол-деңгейдегі Қауіпсіздік (RLS)**RLS қосулы болған жағдайда, сұрау тек ағымдағы жалға алушыға тиесілі жолдарды көретінін деректер қоры — тек қолданба коды ғана емес — қамтамасыз етеді.

Деңгей: Жол деңгейіндегі қауіпсіздік ақылы арқылы шектеледі Кәсіпорын tier — бұл тегін/Қоғамдық платформаға кірмейді.

Неге RLS

Қолданба деңгейіндегі сүзгілеу (WHERE tenant_id = ...) қажет, бірақ нәзік: бір ұмытылған бап деректерді әр түрлі жалға алушылар арасында ағып кетуі мүмкін. RLS кепілдікті PostgreSQL-ге ауыстырады, сондықтан сүзгіден өткізілмеген сұраныс болса да тек ағымдағы жалға алушының жолдарын қайтарады. Бұл қолданбаның өз ауқымынан төменгі қорғаныс-қабаты болып табылады. Кеңірек көпжалдаушылық моделіне — және оның идентификаторсыз жанама әсерлермен қалай жұптасатынына — қараңыз Көпқабатты және идемпотенттік.

Шектелген рөл (қосылу бойынша)

RLS дегеніміз қатысу және процесс қақпаны иесі емес, шектеулі рөлді пайдаланатын екінші дерекқор қосылымын беруге қосу арқылы іске қосылады:

# /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 рөлі емес кесте иесі, сондықтан PostgreSQL оған RLS саясаттарын қолданады. Қолданба сұраныстары осы шектелген пул арқылы өтеді. RLS-ті қосу – бұл орнату мәселесі AIHUMMER_DB_APP_URL — және жергілікті/стандартты (хостқа тән) орнатулар сол айнымалыны автоматты түрде орнатады, сондықтан RLS әдеттегі күйінде белсенді. Ол тек қана «қосылуды таңдау» мағынасында, яғни арнайы немесе қолмен орналастырғанда ғана орнатылуы қажет AIHUMMER_DB_APP_URL өзі.

[!NOTE] Сізсіз AIHUMMER_DB_APP_URL, шлюз бәріне иесінің пулын пайдаланады және RLS іс жүзінде қолданылмайды. Шектеулі пулды орнатыңыз (ол стандартты орнатушы сіз үшін жасайды) дерекқор деңгейіндегі оқшаулануды қосу үшін.

[!IMPORTANT] RLS тарифке байланысты емес. Ол Community қоса алғанда барлық тарифтерде бірдей жұмыс істейді. Егер лицензия экранында «Жол деңгейіндегі қорғаныс» қол жетімсіз деп көрсетілсе, бұл — сол экранның дәлсіздігі, дерекқорыңыздың күйі емес.

RLS қайда бірден белсенді, ал қайда оны өзіңіз қосуыңыз керек

Қалай орнаттыңыз Орнатудан кейінгі RLS
Кәдімгі орнату, PostgreSQL-ді орнатушы дайындайды Белсенді. Шектеулі рөл мен AIHUMMER_DB_APP_URL автоматты жасалады
Өз немесе басқарылатын PostgreSQL (дерекқор мекенжайы алдын ала берілген) Белсенді емес. Рөлді және AIHUMMER_DB_APP_URL мәнін оператор жасайды
Әкімші құқықтарынсыз орнату (rootless) Белсенді емес. Дәл солай

[!WARNING] RLS «қосулы» болып тұрып, ештеңені қорғамайтын екі қате. Біріншісі: AIHUMMER_DB_APP_URL кестелердің иесін немесе суперпайдаланушыны көрсетеді — PostgreSQL мұндай рөлдерді саясаттардан босатады, ал шлюз RLS белсенді деп хабарлай береді. Бөлек шектеулі рөлді пайдаланыңыз. Екіншісі: өз PostgreSQL-іңізде шектеулі рөл болжауға болатын құпия сөзбен автоматты жасалуы мүмкін — дерекқор желіден қолжетімді болғанға дейін оған өз құпия сөзіңізді беріңіз.

Әр-тұрғын үшін шектеу

Сұраныс ішінде қолданба жалдау-шартқа жататын сұрауларды орындамас бұрын қосылымдағы ағымдағы жалдаушыны орнатады — тұжырымдамалық тұрғыдан db.WithTenant. Бір рет шектелгеннен кейін, RLS саясаты шектелген рөлдегі әрбір оқу және жазу әрекетін сол жалға алушының жолдарына шектейді. Шекара жұмыс бірлігіне байланған, сондықтан ол бір уақытта орындалатын сұраулар арасында тарамайды.

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

Жұмысшылар үшін жүйе / айналып өту режимі

Кейбір жұмыстар заңды түрде кросс-тенантты немесе тенантқа тәуелсіз болып келеді — фондық жұмыскерлер, жоспарлаушылар, жеткізуді қалпына келтіру және ұқсас техникалық қызмет көрсету. Мұндайлар үшін шлюз пайдаланады жүйе (айламен айналып өту) режимі ол иесінің пулында жұмыс істейді, әр-тенант RLS саясаттарының сыртында, сондықтан инфрақұрылымдық тапсырмалар деректер жиыны бойынша жұмыс істей алады.

[!WARNING] Ауыстыру режимі тек сенімді ішкі қызметкерлерге арналған. Сұрау өңдеу кодының жолдары пайдаланушы атынан әрекет ететін әрекет әрқашан шектелген арқылы өтуі қажет, жалдаушыға арналған бассейн — ешқашан айналып өту жолы емес.

Миграциялар иелік бассейнінде жүреді

Схема өзгерістері шектеулі рөлде жоқ артықшылықтарды талап етеді, сондықтан миграциялар әрдайым иесі бар пулда орындалады (AIHUMMER_DATABASE_URL), бастау кезінде, кеңесші құлыпта. Шектеулі aihummer_app роль тек қарапайым қолданба трафигі үшін қолданылады. Бұл артықшылықтарды бөлуді таза ұстайды: схеманы өзгерту операциялары иесін қолданады; жалға алушы деректеріне кіру RLS қолданылған шектелген рөл арқылы жүзеге асады.

Келесі қайда