AiHummer
Аԥсшәа
Аиалаҵара
v1.0.x
{ }Swagger

Аштан-уровень ахьчара (Row-Level Security)

v1.0.x · ирҿыцуп 2026-06-26

AiHummer мультитенантуп, насгьы уи иреиҳау иарманшалоу аизолациатә ҳәаа абазадан ахаҭа иҟоуп: PostgreSQL Row-Level Security (RLS). RLS анаҿало, абазадан — аԥшьара акод амацара акәым — иршьоит азҵаара иабаша амацара ари аамҭазтәи тенант иадгылоу аштанқәа.

Избан RLS

Аԥшьара-уровень афилтрла (WHERE tenant_id = ...) иаҭахуп аха иҳарацуп: аӡ ишьәахуп аҟәша атенантцәа рыбжьара адырра аиҭара ауеит. RLS ари агарантиа PostgreSQL ахь инагоит, убри аҟынтә ифилтрнымоу азҵааргьы иаанагоит ари аамҭазтәи тенант иаштанқәа мацара. Уи аԥшьара ахатә скопинг иаҵаҟа иҟоу defense-in-depth уровенуп. Ари мультитенантра имариоу амодель — насгьы идемпотенттә ампыжәара иадҳәалоу — иабалар Мультитенантреи идемпотентреи.

Иалкаалатәу аҿкаау роль (opt-in)

RLS opt-in ауп насгьы иаԥҵахоит агейтуэи аҩбатәи абазадан аимадара аҭаны, уи аиаԥшьаратә роль иҿкаау (restricted) ахархәоит, аиҳабы акәымкәа:

# /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 политикақәа иднанагалоит. Аԥшьаратә азҵаарақәа ари иҿкаау апул иахысуеит. Хост-нативтә ахарарзы аинсталлиатор AIHUMMER_DB_APP_URL хаҭала иеилаԥшуеит.

[!NOTE] AIHUMMER_DB_APP_URL ада, агейтуэи зегьызы аиҳабы апул ихархәоит насгьы RLS иршьым акәахоит. Аизолациа абазадан-уровень анашьара иҿкаау апул шьақәыргыла.

Тенант-хаҭала аскопинг

Азҵаара аҩныҵҟа, аԥшьара ари аамҭазтәи тенант аимадараҿы ишьақәнаргылоит тенант-скоп азҵаарақәа анымҩаԥысуа рыԥхьа — концептуалла db.WithTenant. Аскопинг анашьоу, иҿкаау ароль аҟны RLS политикақәа аԥхьарагьы аҩрагьы зегьы ари тенант иаштанқәа рыла иршьоит. Аскопинг аусура аединица иадҳәалоуп, убри аҟынтә уи иеихалоу азҵаарақәа рыбжьара адырра аиҭара ауӡом.

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

Аусуцәазы система / bypass режим

Иҟоуп аусура легитимла кросс-тенант ма тенант-нымоу — афон аусуцәа, ашедулерқәа, outbox, насгьы убри иеиԥшу амеханизмқәа. Урҭ рзы агейтуэи система (bypass) режим ихархәоит, уи аиҳабы апул иахысуеит, тенант-хаҭала RLS политикақәа ал外аны, убри аҟынтә аинфраструктуратә усурақәа аштан зегьы ирыхысыр рылшоит.

[!WARNING] Bypass режим иарбоу аҩныҵҟатә аусуцәа рзы мацароуп. Аусдулаҟ ихьӡала иҟаҵо азҵаара-арыхәаратә код амҩақәа зегьы хымԥада иҿкаау, тенант-скоп апул иахысыр ауп — зны bypass амҩа акәымкәа.

Амиграциақәа аиҳабы апул иахысуеит

Асхема аԥсахрақәа иаҭахуп иҿкаау ароль зымоу аиаԥшьарақәа, убри аҟынтә амиграциақәа зны аиҳабы апул иахысуеит (AIHUMMER_DATABASE_URL), консультатә блокировка ала, аус анаҿала. Иҿкаау aihummer_app роль ихархәоит обычнотә аԥшьаратә трафик мацарзы. Ари аиаԥшьара аиԥҟьара цқьаны иаанагоит: асхема-аԥсахуа аоперациақәа аиҳабы ихархәоит; тенант адырра ахьынӡара иҿкаау ароль RLS аланы ихархәоит.

Уаҳа абатеи