Админ, RBAC, аудит¶
Платформын удирдлагын гадаргуу нь дөрвөн үүрэг, динамик эрхийн каталог, болон hash-chain аудит дээр тогтоно.
Дөрвөн үүрэг¶
| Үүрэг | Юуг хариуцах |
|---|---|
superadmin |
Админ хэрэглэгчдийг томилох/хасах, урилга, платформын хандалтын горим. Цорын ганц энэ үүргийг гүйцэтгэнэ. |
admin |
Систем удирдах — каталогийн бүх эрхэд авто-resolve хийнэ |
manager |
Иргэний хүсэлт хянаж шийдвэрлэх (gov.review) |
user |
Өөрийн хэсэг (personal.view) |
RBAC — динамик эрх¶
Үүрэг ба эрх нь DB-д хадгалагдаж, ажиллаж байх үед өөрчлөгдөнө. Эрхийн бүтэн каталогийг Чадварын зураглал-аас үзнэ үү.
| Метод | Зам | Эрх |
|---|---|---|
GET |
/api/v1/rbac/me |
нэвтэрсэн — өөрийн эрхүүд |
GET |
/api/v1/rbac/roles · /permissions |
roles.manage |
POST PUT DELETE |
/api/v1/rbac/roles… |
roles.manage |
PUT |
/api/v1/rbac/roles/{id}/permissions |
roles.manage |
Эрхийн шалгалт нь route түвшинд middleware-ээр хийгдэнэ
(RequirePermission) — handler бүрт давтагдахгүй тул шинэ endpoint нэмэхэд
хамгаалалт мартагдах эрсдэл багасна. routes_authz_matrix_test.go нь энэ
матрицыг тестээр барьцаална.
UI: /admin/roles.
Админы гадаргуу¶
| Метод | Зам | Эрх |
|---|---|---|
GET POST |
/api/v1/admin/users |
users.manage |
PUT |
/api/v1/admin/users/{id}/role · /active |
users.manage |
DELETE |
/api/v1/admin/users/{id} |
users.manage |
GET PUT |
/api/v1/admin/ai/prompts · /{key} |
settings.manage |
POST |
/api/v1/admin/ai/knowledge/reindex |
settings.manage |
AI-ийн prompt давхарга ба мэдлэгийн санг DB-ээс тохируулна — AI pipeline-г үз. Гуардрэйл давхарга нь кодод хатуу бөгөөд хэзээ ч тохируулагддаггүй.
UI: /admin/dashboard, /admin/users, /admin/settings, /admin/core.
Супер админ¶
| Метод | Зам | Юу |
|---|---|---|
GET POST |
/api/v1/superadmin/admins |
Админ жагсаах / нэмэх |
GET POST |
/api/v1/superadmin/admins/by-register |
Регистрийн дугаараар хайх / нэмэх |
PUT |
/api/v1/superadmin/admins/{id}/grant |
Эрх олгох |
DELETE |
/api/v1/superadmin/admins/{id} |
Эрх хураах |
GET POST DELETE |
/api/v1/superadmin/invites… |
Урилга удирдах |
GET PUT |
/api/v1/superadmin/access-mode |
Платформын хандалтын горим (public / private) |
Onboarding ба MFA¶
Супер админ болох замыг олон давхар баталгаагаар хамгаалсан:
- Урилга (allow-list) — onboarding нь урилгагүй и-мэйлээр эхэлж чадахгүй. Ашигласан урилга дахин хэрэглэгдэхгүй.
- eID баталгаа —
POST /api/v1/auth/superadmin/onboard/eid/start·/start-id·/poll(иргэний РД эсвэл QR). - Google эсвэл и-мэйл баталгаа —
/onboard/google,/onboard/email/send·/verify. - TOTP MFA —
/onboard/totp/init·/verify, дараа нь нэвтрэх бүрдPOST /api/v1/auth/superadmin/mfa.
TOTP secret нь AES-GCM ciphertext-ээр хадгалагдана — DB-д ил текст хэзээ ч байхгүй. Нөөц кодууд нь зөвхөн үүсгэх агшинд нэг удаа харагдаж, DB-д зөвхөн SHA-256 hash хадгалагдана; ашигласан код дахин хэрэглэгдэхгүй.
Бүх onboarding endpoint нь auth хязгаарлагчтай (5/мин).
UI: /superadmin/login, /superadmin/onboard, /admin/superadmin.
Аудит¶
Аудит бүртгэл нь hash-chain-ээр холбогдсон, зөвхөн-нэмэх (append-only) бүртгэл. Бичлэг бүр өмнөх бичлэгийн hash-ыг агуулдаг тул дундаас нь мөр өөрчлөх/устгах нь гинжийг таслана.
| Метод | Зам | Юу |
|---|---|---|
GET |
/api/v1/audit |
Хуудаслагдсан жагсаалт (admin) |
GET |
/api/v1/audit/verify |
Гинжийн бүрэн бүтэн байдлын шалгалт |
verify нь { ok, broken_id } буцаана — ok=false үед эвдэрсэн эхний
мөрийн ID-г зааж өгнө.
Бичих actor нь хүсэлтийн RLS identity-ээс, request_id нь context-оос
автоматаар уншигдана — дуудагч гараар дамжуулах шаардлагагүй тул хуурамч
attribution хийх боломж бага.
Микросекундын нарийвчлал
Postgres timestamptz нь микросекунд нарийвчлалтай. Hash-д орох цагийг
түүнд тааруулж таслаагүй бол VerifyChain нь наносекундын зөрүүнээс болж
худал сөрөг өгнө — код үүнийг зориуд зохицуулсан.
UI: /admin/audit.
Аюулгүйн үйл явдал¶
Клиент талын аюулгүйн дохиог (CSP зөрчил г.м.) цуглуулна:
POST /api/v1/security/events— нэвтэрсэн хэрэглэгч бүрт нээлттэй (RLS ньuser_id-г баталгаажуулна)GET /api/v1/security/events— зөвхөн admin
UI: /admin/security.
Харагдац ба брэнд¶
Өнгө, фонт, нягтралыг кодод hardcode хийхгүй — админаас тохируулна.
| Метод | Зам | Эрх |
|---|---|---|
GET |
/api/v1/site/appearance |
нээлттэй (нийтийн хуудсанд хэрэгтэй) |
PUT |
/api/v1/site/appearance |
settings.manage |
GET |
/api/v1/themes/active |
нээлттэй |
GET POST PUT DELETE |
/api/v1/themes… |
admin |
PUT |
/api/v1/themes/{id}/active |
admin |
Хэрэглэгч тус бүр өөрийн override-той байж болно. UI: /admin/themes,
/admin/settings.