AiHummer
Кыргызча
КирүүЖеке кабинет
v1.1.x
{ }Swagger

Сап деңгээлиндеги коопсуздук

v1.1.x · жаңыланды 2026-06-26

AiHummer көп колдонуучу системасы, жана анын эң күчтүү изоляция чекити өз маалында маалымат базасында жашайт: PostgreSQL Каттоо Деңгээлдеги Коопсуздук (RLS). RLS иштетилгенде, база маалыматтар — жөн гана колдонмо код эмес — суроо-талаптын учурдагы ижарачыга таандык гана саптарды көрүшүн камсыз кылат.

Катмар: Сап деңгээлиндеги коопсуздук акы төлөнгөнгө байланыштуу чектелген Ишкана катмар — бул акысыз/Коомдук платформага кирбейт.

Эмне үчүн 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 колдонулган чектелген роль аркылуу жүргүзүлөт.

Келерки кайда