Trenutno dejavna stran: start » sl » Interna dokumentacija » Razširitve DokuWikija (WvdS) » Vloge in dovoljenja » Matrika vlog

Matrika vlog

Popoln pregled tega, kaj vsaka vloga tega wikija dovoljuje in česa ne, raven za ravnjo. Ta stran je edini vir vrednosti dovoljenj; vse druge strani se sklicujejo sem, namesto da bi vrednosti ponavljale.

Obseg

Raven Dodeljuje Shranjeno v Ovrednoti
1 DokuWiki ACL števila 0–255 na stran ali imenski prostor conf/acl.auth.php jedro DokuWikija
2 Zanesljivost seje AUTHENTICATED, MAIL_OTP, TOTP, MFA_ANY conf/wkidentity-policy.json wkidentity
3 Projektna vloga none, reader, contributor, maintainer, admin skupine v upravljanju uporabnikov wkdocore
4 Ravni komponent se razlikuje po komponenti ACL ali lastna datoteka pravilnika komponenta sama

Ravni se vprašajo v tem vrstnem redu in vsaka sme le zavrniti. Vloga na ravni 3 ne more podeliti tistega, kar je raven 1 odrekla.

Raven 1: DokuWiki ACL

Osnovna lestvica. Velja za vsako stran in vsak imenski prostor in je edina raven, ki deluje tudi brez katere koli komponente te hiše.

Lestvica

Vrednost Ime Dovoljuje Ne dovoljuje
0 Ni dostopa nič; stran se vede, kot da je ne bi bilo vsakršno branje, vključno s priponkami in viri
1 Branje videti stran, zgodovino in razlike, izvoz, naročnino vsako spremembo, tudi ustvarjanje podstrani
2 Urejanje dodatno: spreminjati obstoječe strani, osnutke, vračanje ustvarjanje novih strani, nalaganje datotek
4 Ustvarjanje dodatno: ustvarjati nove strani v imenskem prostoru nalaganje datotek, brisanje datotek
8 Nalaganje dodatno: postavljati datoteke v predstavnostno področje ponovno brisanje naloženih datotek
16 Brisanje dodatno: brisati datoteke v predstavnostnem področju konfiguracija, upravljanje uporabnikov, razširitve
255 Skrbništvo vse, mimo vsakega pravila ACL
Vrednosti 4, 8 in 16 veljajo samo za pravila imenskih prostorov. Na posamezni strani je 2 najvišja smiselna vrednost; višja števila v pravilu strani delujejo kot 2.

Kako nastane vrednost

DokuWiki ovrednoti najbolj določeno pravilo, ne najvišjega. Po vrsti:

  1. Pravilo za ta račun na tej strani.
  2. Pravilo za skupino tega računa na tej strani — če jih je več, zmaga najvišje.
  3. Ista koraka v naslednjem višjem imenskem prostoru, vse do korena.
  4. Nič se ne ujema: ni dostopa.

Pravilo računa premaga vsako skupinsko pravilo iste ravni, tudi če je nižje. Tako se posamezen račun izključi iz področja, ki je njegovi skupini odprto.

Skupine tega wikija

Skupina Kdo je v njej Pomen
@ALL vsak obiskovalec, prijavljen ali ne osnovna vrednost; pri 0 področje ni javno
@user vsak prijavljen račun »prijava zadošča«
@admin skupina vrhovnega skrbništva ($conf['superuser']) v celoti obide raven 1
@wvds uredniški sodelavci pravice pisanja na jezikovnih in vsebinskih imenskih prostorih
@wvdse tehnično vzdrževanje priklopnih točk poln dostop do priklopljenih repozitorijev
@dwdo_<projekt>_readers bralci projekta glejte raven 3
@dwdo_<projekt>_contributors sodelavci projekta glejte raven 3
@dwdo_<projekt>_maintainers vzdrževalci projekta glejte raven 3

Raven 2: zanesljivost seje

Ta raven ne sprašuje, kdo ste, ampak kako dobro je to ena sama seja dokazala. Je najpogostejši razlog, da ste prijavljeni in vseeno zavrnjeni.

Stopnja Pomeni Doseže se z Ne zadošča za
AUTHENTICATED prijavljen, geslo zadošča običajna prijava področja z obveznim dejavnikom
MAIL_OTP enkratna koda po e-pošti potrjena vnos kode iz e-sporočila področja, ki izrecno zahtevajo TOTP
TOTP aplikacija za overjanje potrjena šestmestna koda iz aplikacije
MFA_ANY kateri koli drugi dejavnik potrjen MAIL_OTP ali TOTP

Na kaj se zahteva lahko veže

Zahteva se veže na obseg. Obstaja osem vrst:

  • namespace — vse strani pod predpono.
  • plugin, module, view — komponenta, modul v njej, posamezen pogled.
  • command, adminAction — ukaz oziroma skrbniško dejanje.
  • group, user — vezano na prosilca namesto na cilj: »ta skupina vedno potrebuje TOTP«.

Če se jih ujema več, velja najvišja. Seja, ki je dokazala MAIL_OTP, izpolnjuje MFA_ANY in MAIL_OTP, ne pa TOTP.

Trije starejši seznami

Seznam Učinek Blokira?
required_users stran profila in trak na strani opominjata na nastavitev ne, samo opomin
email_users smejo uporabljati kodo po e-pošti tudi, kadar je splošno izklopljena ne, samo razširi
required_namespaces branje in pisanje sta odrečena, dokler dejavnik ni nastavljen da

email_users lahko metodo samo doda, nikoli odvzame. Manjkajoča ali neberljiva datoteka pravilnika zato nikogar ne more zakleniti.

Raven 3: projektna vloga

Znotraj projekta velja lastna, urejena lestvica. Določa, katera delovna področja se pojavijo v krmarjenju in kdo sme spreminjati seznam članov projekta.

Vloga Stopnja Dovoljuje Ne dovoljuje
none 0 nič vsako projektno področje
reader 10 videti projektna in delovna področja spreminjati vsebino, videti člane
contributor 20 dodatno: ustvarjati in spreminjati vsebino projekta upravljati člane, spreminjati nastavitve
maintainer 30 dodatno: upravljati člane, nastavitve projekta imenovati vzdrževalce, globalna konfiguracija
admin 40 vse
admin je globalno vrhovno skrbništvo wikija, ne vloga, vezana na projekt. Skrbniške pravice, omejene na projekt, ne obstajajo: najvišja vloga, ki jo je mogoče imeti v projektu, je maintainer. Vzdrževalce imenuje globalno skrbništvo.

Od kod prihaja vloga

Najprej skupinski sloj, nato ACL. Zmaga prvo ujemanje:

  1. Vrhovno skrbništvo → admin.
  2. Član skupine @dwdo_<projekt>_maintainersmaintainer.
  3. Član skupine @dwdo_<projekt>_contributorscontributor.
  4. Član skupine @dwdo_<projekt>_readersreader.
  5. Sicer: prevesti vrednost ACL na korenu projekta — od 16 → maintainer, od 2 → contributor, od 1 → reader, sicer none.

Predpono dwdo_ je mogoče nastaviti (roleprefix). Vloga se vedno določi na korenu projekta, nikoli na strani, ki jo prav gledate — je lastnost projekta, ne zahteve.

Peti korak je razlog, da projekt deluje tudi povsem brez skupinskega sloja: takrat teče izključno na ACL imenskega prostora. Hkrati je razlog, da vrednost ACL 16 na korenu projekta nekoga naredi za vzdrževalca, ne da bi to katera skupina vidno povedala.

Kaj krmarjenje skrije

Delovna področja, ki jih vloga ne doseže, se v krmarni vrstici skrijejo. To je odločitev o prikazu, ne zaščita: ciljna stran svoje dovoljenje preveri sama. Izginula postavka torej pomeni »tu za vas ni ničesar«, ne »tu je nekaj skritega«.

Raven 4: ravni komponent

Posamezne komponente dodatno vodijo lastno lestvico, ker njihov predmet ni wiki stran.

Priklopljeni repozitoriji izvorne kode

Štirje klini ene lestvice, izraženi v istih številih kot raven 1 — druge hrambe dovoljenj torej ni, ampak ena vrstica ACL na skupino na priklopni točki.

Zmožnost Vrednost ACL Dovoljuje Ne dovoljuje
view 1 brskati in gledati znotraj wikija klonirati, prenesti
fetch 2 dodatno: klonirati in prenesti arhiv odložiti lastne spremembe
propose 4 dodatno: odložiti pod lastno predpono ref pisati v tuje reference
write 8 dodatno: pisati povsod, kjer repozitorij to dopušča upravljati priklopne točke

Za nove priklopne točke obstajajo štiri prednastavitve:

Raven Kdo vidi Kdo piše
private nihče razen tehničnega vzdrževanja tehnično vzdrževanje
readonly vsak prijavljen račun (fetch) tehnično vzdrževanje
public vsi, tudi brez prijave (fetch) tehnično vzdrževanje
team bralci projekta (view) sodelavci fetch, vzdrževalci write

team je edina raven, katere skupine so odvisne od projekta. Je prava izbira, takoj ko več zaprtih projektov stoji drug ob drugem: druge tri poznajo le »nihče«, »vsi prijavljeni« in »vsi«.

SQLite Data Studio

Matrika zmožnosti namesto lestvice, ker je šest zmožnosti resnično neodvisnih.

Zmožnost Dovoljuje
use sploh odpreti Studio
query izvajati bralne poizvedbe
write spreminjati podatke
design spreminjati shemo
export izvažati rezultate
admin upravljati povezave in matriko samo

Razrešitev, zmaga prvo ujemanje:

  1. Vrhovno skrbništvo → vedno dovoljeno.
  2. Če je dbadmin_readonly na 1, sta write in design odrečena — tudi tam, kjer ju matrika podeli.
  3. Pravilo za povezavo premaga globalno; znotraj enega obsega pravilo računa premaga vsako skupinsko pravilo. Skupinska pravila istega obsega se združijo.
  4. Ni ustreznega pravila → odrečeno.

Dejanja z obveznim dejavnikom

Več komponent za posamezna dejanja dodatno zahteva zanesljivost seje po ravni 2, ne glede na dovoljenje, ki ga račun ima.

Komponenta Dejanje Zahteva
Trezor read AUTHENTICATED
Trezor create, rotate, delete, rekey MFA_ANY
SQLite Data Studio code-write, connection-admin, db-destructive MFA_ANY
Viri create, update AUTHENTICATED
Viri delete MFA_ANY
Povezava z Azure DevOps secret-write, remove MFA_ANY
Priklopne točke token-issue AUTHENTICATED
Priklopne točke mount-admin MFA_ANY
Blog content-admin MFA_ANY

Kdo kaj vzdržuje

Raven Zaslon Kdo sme tja
1 ACL ?do=adminNadzor dostopa vrhovno skrbništvo
1 skupine računa ?do=adminUpravljanje uporabnikov vrhovno skrbništvo
2 zanesljivost seje ?do=adminIdentiteta vrhovno skrbništvo
3 člani projekta stran projekta → Člani vzdrževalci projekta
4 ravni priklopa ?do=adminPriklopne točke vrhovno skrbništvo
4 matrika zmožnosti ?do=adminSQLite Data StudioDovoljenja kdor ima v Studiu admin

Zaslon članov projekta je edini, ki ne potrebuje globalnega skrbništva. Zato je cilj, na katerega se usmeri prošnja za dostop do projekta — glejte Kam gre prošnja.

Pogodba za komponente

Lastna komponenta svojo zavrnitev obesi na isto infrastrukturo, namesto da bi napisala lastno poved. Zadostujeta dva klica.

Zavrnitev zaradi manjkajočega dovoljenja:

$req = plugin_load('helper', 'wkrequest');
if (is_object($req) && method_exists($req, 'accessPanel')) {
    echo $req->accessPanel([
        'resourceLabel' => $naslov,
        'required'      => $req->permissionLabel(AUTH_READ),
        'current'       => $req->currentPermissionLabel($idStrani),
        'draft'         => [
            'type'     => 'ACCESS_REQUEST',
            'owner'    => 'mojvticnik',
            'handler'  => 'mojvticnik:nastavitve',
            'resource' => $idStrani,
        ],
        'alternatives'  => [['label' => $drugaPot, 'href' => $url]],
    ]);
}

Zavrnitev zaradi manjkajočega drugega dejavnika:

echo $req->stepUpPanel([
    'requirement' => 'MFA_ANY',
    'origin'      => 'mojvticnik:brisanje',
    'back'        => $urlNazaj,
]);

Prijava, »moje odprte prošnje« in pot nazaj se dodajo, ne da bi klicno mesto nanje moralo misliti; vsaka od njih se v položaju, v katerega ne sodi, sama razglasi za nedosegljivo in se takrat izpusti.

Da prošnja pride na pravo mesto, komponenta prijavi svoj skrbniški zaslon:

$controller->register_hook('WKREQUEST_REGISTER_HANDLERS', 'BEFORE', $this, 'registerRequestHandlers');
// ...
$event->data['handlers'][] = [
    'owner' => 'mojvticnik',
    'id'    => 'nastavitve',
    'label' => $this->getLang('menu'),
    'url'   => wl('', ['do' => 'admin', 'page' => 'mojvticnik'], true, '&'),
    'types' => ['ACCESS_REQUEST', 'ADMIN_ACTION_REQUEST'],
];

Če komponenta zaprto področje pozna bolje od jedra, ploščo izostri, namesto da bi ob njej narisala drugo:

$controller->register_hook('WKREQUEST_REFINE_DENIED', 'BEFORE', $this, 'refineDeniedRequest');

$event->data takrat nosi id, resourceLabel, required, current, facts, alternatives in draft. Vrnjene vrednosti se prevzamejo posamično; neuporabna se zavrže in ostane splošni odgovor.

Znane vrzeli

Mesta, na katerih model danes ponuja manj, kot preostanek te strani nakazuje. Navedena so, ker vrzel, ki je nihče ne poimenuje, izgleda kot bralčeva napaka.

Vrzel Posledica Obhod
Sporočila po poskušenem dejanju so še vedno enovrstična obvestila, ne plošče. To zadeva med drugim pogled Git, cevovode, delovne postavke in prikaz izvorne kode. Po neuspelem kliku piše »tega ne smete« brez poti do prošnje. Znova naložiti stran: zaprta stran nosi ploščo.
Le prošnja, ki imenuje projekt, sama najde svoje pristojne. Vse drugo gre na globalno nastavljen naslov — v tej namestitvi pa ni nastavljen noben. Prošnja brez navezave na projekt ne obvesti nikogar. Shranjena je in vidna v predalu, a nihče zanjo ne izve. Vpisati naslov pod notify_mail, ali redno odpirati predal.
@wvds in @wvdse se pojavljata v pravilih ACL, a trenutno nista dodeljena nobenemu računu. Pravila, ki odpirajo le tema skupinama, ne odpirajo nikomur. Preveriti dodelitev v upravljanju uporabnikov.
Pregled projektov, ki navaja vašo vlogo po projektih, zaenkrat obstaja samo v nemščini. Kdor vmesnik uporablja v drugem jeziku, svoje vloge najde eno po eno, na vsaki strani projekta. Pregled projektov (v nemščini)

Sorodne teme

sl/wiki/dwe/permissions/matrix.txt · Zadnja sprememba: uporabnika 0.0.0.0