Leiðbeiningar

Hvernig bætir þú aðgangsstýringu byggðri á hlutverkum (RBAC) við appið þitt

Til að bæta við aðgangsstýringu byggðri á hlutverkum skaltu gefa hverjum notanda eitt eða fleiri hlutverk (til dæmis stjórnandi, ritstjóri, lesandi), skilgreina hvaða aðgerðir hvert hlutverk má framkvæma og athuga þessar heimildir á netþjóninum fyrir hverja beiðni, ekki bara með því að fela hnappa. Athugaðu líka að skráin sem verið er að nálgast tilheyri reikningi eða teymi notandans. Byrjaðu með nokkur föst hlutverk í gagnagrunninum þínum og prófaðu með því að reyna að ná í gögn annars notanda beint.

Auðkenning og heimildarveiting

Tvö orð sem eru oft ruglað saman:

  • Auðkenning er hver ert þú?, það er innskráning. Sjá hvernig bætir þú innskráningu við appið þitt.
  • Heimildarveiting er hvað máttu gera? það er hvaða síður, skrár og aðgerðir innskráður notandi getur náð í.

RBAC er algengasta leiðin til heimildarveitingar. Það skiptir máli: frá og með september 2026 er Broken Access Control í 1. sæti á OWASP Top 10:2025, sem er víða notaður listi yfir alvarlegustu öryggisáhættur vefforrita. Dæmigerðar bilanir eru að notendur lesi skrár annarra með því að breyta auðkenni í slóðinni, eða að venjulegir notendur kalli á API-leiðir sem eru eingöngu fyrir stjórnendur.

Veldu líkan

LíkanHvernig það virkarHentar fyrirMálamiðlun
Einn hlutverkadálkurusers.role = admin / memberLítil öpp með tvö eða þrjú hlutverkVerður flókið þegar fólk þarf mismunandi hlutverk á mismunandi stöðum
Hlutverk + heimildirHlutverk tengjast nefndum heimildum (invoices.approve); kóðinn athugar heimildirÖpp þar sem reglurnar munu vaxaFleiri töflur; listi yfir heimildir sem þarf að viðhalda
Hlutverk fyrir hvert teymi (fjölleigu)Aðildartafla: notandi + stofnun + hlutverkSaaS þar sem fólk tilheyrir teymum eða vinnusvæðumSérhver fyrirspurn verður að vera afmörkuð við stofnunina
Eiginleika- eða tengslamiðaðReglur á eiginleikum skráa („höfundurinn má breyta eigin færslu“) eða tengslum (deilt með)Skjöl, deiling, flókin vinnuflæðiErfiðara að rökstyðja; íhugaðu sérstakt bókasafn eða þjónustu
Hlutverk hjá auðkenningarveituInnskráningarveitan geymir hlutverk eða aðild að stofnunumÖpp sem nota þegar hýsta auðkenningarveituBundið við þá veitu; framfylgdu samt á þjóninum þínum

Í framkvæmd sameina flest öpp tvennt: hlutverk fyrir hvers konar aðgerðir notandinn má framkvæma, og eignarhald fyrir hvaða skrár hann má framkvæma þær á. „Ritstjórar mega breyta færslum“ er hlutverksregla; „…færslum í eigin vinnusvæði“ er eignarhaldsregla. Þú þarft hvort tveggja.

Byrjaðu einfaldara en þú heldur. Stjórnandi, meðlimur og lesandi duga í ótrúlega mörg öpp. Auðveldara er að skipta hlutverki síðar en að greiða úr tíu hlutverkum sem enginn skilur.

Hannaðu hlutverkin áður en þú skrifar kóða

Skrifaðu heimildatöflu á venjulegu máli fyrst. Hún virkar sem forskrift fyrir gervigreindina og sem prófunaráætlun:

AðgerðEigandiStjórnandiMeðlimurLesandi
Skoða verkefni í teyminu✓✓✓✓
Búa til og breyta verkefnum✓✓✓
Eyða verkefnum✓✓
Bjóða og fjarlægja fólk✓✓
Breyta hlutverkum✓
Innheimta✓

Ákveddu jaðartilvikin líka: má síðasti eigandinn hætta? Getur stjórnandi fjarlægt eigandann? Hvað sér notandi sem hefur verið fjarlægður?

Skref fyrir skref

1. Hafðu virka innskráningu fyrst

RBAC liggur ofan á auðkenningu. Netþjónninn verður áreiðanlega að vita hver gerir hverja beiðni, út frá setu eða staðfestu auðkenni, aldrei út frá auðkenni notanda sem vafrinn sendir í beiðnigögnunum.

2. Geymdu hlutverk í gagnagrunninum

Fyrir app sem þjónar einu teymi er role-dálkur á notendum nóg. Fyrir teymi notarðu aðildartöflu:

create table memberships (
  user_id uuid references users(id),
  organization_id uuid references organizations(id),
  role text not null check (role in ('owner','admin','member','viewer')),
  primary key (user_id, organization_id)
);

Leyfðu notendum aldrei að stilla eigið hlutverk með venjulegri prófílbreytingu. Hlutverksbreytingar fara í gegnum sérstakan endapunkt sem athugar heimildir.

3. Athugaðu heimildir á netþjóninum, á einum stað

Skrifaðu eitt hjálparfall, eitthvað eins og can(user, 'projects.delete', project), og kallaðu á það í hverri API-leið, þjónustuaðgerð og bakgrunnsverki sem les eða breytir gögnum. Eitt miðlægt fall er auðveldara að yfirfara og prófa en athuganir dreifðar um kóðann. Hafnaðu sjálfgefið: ef engin regla leyfir aðgerð er henni hafnað.

4. Afmarkaðu hverja fyrirspurn

Hver fyrirspurn um gögn teymisins ætti að innihalda teymið: where organization_id = :currentOrg, ekki bara where id = :id. Þetta kemur í veg fyrir að einhver breyti /projects/123 í /projects/124 og sjái verkefni annars fyrirtækis. Skilaðu „fannst ekki“ frekar en „bannað“ fyrir skrár í öðrum teymum, svo þú opinberir ekki að þær séu til.

5. Bættu vernd í gagnagrunninum þar sem hún skiptir máli

Öryggi á línustigi í Postgres (RLS) gerir gagnagrunninum kleift að framfylgja því hvaða línur hver notandi sér. Það er nauðsynlegt ef vafrinn talar beint við gagnagrunninn (eins og með suma hýsta bakenda), og gagnlegt annað lag fyrir viðkvæmar töflur annars.

6. Endurspeglaðu hlutverk í viðmótinu

Feldu nú eða gerðu óvirkt það sem notendur mega ekki gera, svo appið verði ekki ruglingslegt. Þetta er aðeins til notagildis; athuganirnar á netþjóninum eru það sem verndar.

7. Skráðu viðkvæmar aðgerðir

Skráðu hver breytti hlutverkum, eyddi gögnum eða flutti út skrár, og hvenær. Atburðaskrá hjálpar við fyrirspurnir frá stuðningi og atvik.

8. Prófaðu eins og árásarmaður

Skráðu þig inn sem hvert hlutverk og reyndu hverja aðgerð í heimildatöflunni. Prófaðu síðan það sem ætti ekki að virka: kallaðu á API-leiðir stjórnenda sem lesandi, breyttu auðkennum í slóðum og beiðnum, fjarlægðu sjálfan þig sem síðasta eiganda. Sjálfvirk próf fyrir heimildatöfluna eru þess virði þegar reglurnar hafa fest sig í sessi.

Fyrirmæli sem virka

Bættu við aðgangsstýringu byggðri á hlutverkum. Hlutverk fyrir hverja stofnun: owner, admin, member, viewer, geymd í aðildartöflu. Heimildirnar eru í þessari töflu: [límdu töfluna þína]. Búðu til eitt þjónustumegin hjálparfall can(user, action, resource), hafnaðu sjálfgefið, og notaðu það í hverri API-leið. Afmarkaðu hverja fyrirspurn með organization_id. Feldu aðgerðir sem notandinn má ekki framkvæma í viðmótinu, en treystu aldrei á það hvað öryggi varðar.

Yfirfarðu hverja API-leið og þjónustufall í þessu appi. Fyrir hverja skráðu hvaða gögn hún les eða breytir, hvort hún athugar að notandinn sé innskráður, hvort hún athugar hlutverk hans og hvort hún afmarkar fyrirspurnina við stofnun hans. Lagaðu allar sem vantar athugun og sýndu mér listann.

Bættu við stjórnendasíðu (/admin) sem aðeins eigandinn getur notað til að breyta hlutverkum meðlima. Komdu í veg fyrir að fjarlægja eða lækka síðasta eigandann, skráðu hverja hlutverksbreytingu með því hver gerði hana og hvenær, og gakktu úr skugga um að endapunkturinn fyrir hlutverksbreytingar hafni öllum sem eru ekki eigendur.

Algeng mistök

  • Athuga hlutverk aðeins í framendanum. API-ið er samt opið hverjum sem kallar á það.
  • Treysta auðkennum frá viðskiptavininum, til dæmis userId eða role í beiðnigögnunum í stað setunnar.
  • Ófyrirspurnir sem eru ekki afmarkaðar, sem sækja eftir eingöngu auðkenni skráar.
  • Hlutverk athuguð á síðum en ekki á API-leiðum, útflutningi, skráaniðurhali eða webhook.
  • Stjórnandi eftir netfangi sem er harðkóðað í kóðanum (if email === 'me@...'), sem er auðvelt að gleyma og erfitt að breyta.
  • Of mörg hlutverk of snemma, sem enginn getur útskýrt sex mánuðum síðar.
  • Gamlar setur: lækkaður notandi heldur stjórnandaréttindum þar til hann skráir sig út. Athugaðu hlutverk í gagnagrunninum, eða endurnýjaðu þau, í viðkvæmum aðgerðum.

Gátlisti fyrir RBAC

  • Heimildatafla skrifuð á venjulegu máli, jaðartilvik ákveðin
  • Netþjónninn þekkir notandann út frá setunni, aldrei út frá gögnum beiðninnar
  • Hlutverk geymd í gagnagrunninum; notendur geta ekki breytt eigin hlutverkum
  • Ein miðlæg heimildaathugun, hafnar sjálfgefið, notuð í hverri leið
  • Hver fyrirspurn afmörkuð við stofnun eða eignarhald notandans
  • Öryggi á línustigi þar sem vafrinn nær í gagnagrunninn
  • Viðmótið felur það sem notendur mega ekki gera (aðeins til notagildis)
  • Viðkvæmar aðgerðir skráðar
  • Sérhvert hlutverk prófað, þar á meðal beint API-kall og breytt auðkenni

Aðgangsstýring er einn liður á lengri lista; öryggisgátlistinn fyrir öpp smíðuð með gervigreind nær yfir hitt. Ef þú ert að smíða verkfæri fyrir eigið starfsfólk sýnir hvernig býrð þú til innra verkfæri hvar hlutverk eiga heima.

RBAC í Mythex

Mythex býður ekki upp á innbyggða innskráningu eða hlutverkakerfi fyrir notendur appsins þíns. Þú velur auðkenningarsafn eða veitu og lýsir hlutverkunum, og aðstoðarmaðurinn tengir þau við kóðann þinn og Postgres-gagnagrunn verkefnisins (bættu innskráningu við appið þitt). Hlutverk Mythex sjálfs, eins og Eigandi og Meðlimur, stjórna hverjir mega breyta Mythex-verkefnum þínum, ekki hverjir mega nota appið sem þú birtir. Notaðu áætlunarham til að samþykkja heimildatöfluna áður en smíðað er, notaðu síðan yfirferðarfyrirmælin hér að ofan og prófaðu hvert hlutverk í Preview áður en þú birtir. Öryggisfyrirmæli í skjölunum eru gagnlegt framhald.

Spurningar

Hvað er aðgangsstýring byggð á hlutverkum?

Aðgangsstýring byggð á hlutverkum (RBAC) ákvarðar hvað hver notandi má gera út frá hlutverkunum sem hann hefur, til dæmis stjórnandi, ritstjóri eða lesandi. Heimildir eru tengdar hlutverkum en ekki einstökum persónum, svo það að breyta því sem einhver má gera er einfaldlega að breyta hlutverki hans.

Hver er munurinn á auðkenningu og heimildarveitingu?

Auðkenning athugar hver einhver er, yfirleitt með innskráningu. Heimildarveiting ákveður hvað innskráði notandinn má sjá og gera. RBAC er ein leið til að framkvæma heimildarveitingu.

Er nóg að fela hnappa í viðmótinu til að takmarka aðgang?

Nei. Hver sem er getur kallað beint á API-ið þitt, svo það að fela hnapp breytir aðeins því sem fólk sér. Sérhver beiðni sem les eða breytir gögnum verður að vera athuguð á netþjóninum gegn hlutverki notandans og eignarhaldi á skránni.

Ætti ég að nota öryggi á línustigi í Postgres?

Öryggi á línustigi gerir gagnagrunninum sjálfum kleift að framfylgja því hvaða línur hver notandi má lesa eða skrifa, sem er sterkt öryggisnet, sérstaklega þegar framendinn talar beint við gagnagrunninn. Það bætir við flækjustigi, svo mörg öpp framfylgja heimildum í þjónustukóða og nota öryggi á línustigi sem aukalag fyrir viðkvæmar töflur.

Mythex · Pricing · Smíðaðu hvað sem er með gervigreind · Sniðmát fyrir vefsíður og forrit · Mythex í samanburði · Orðasafn um forritasmíði með gervigreind · Ókeypis verkfæri fyrir forritasmíði með gervigreind · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)