Rollid ja õiguste ulatus
OpenFactory salvestab sõltumatud rollid organization, unit ja team tasandil. Rolli nimi kirjeldab ulatust; see ei ole universaalne luba, mis kehtib automaatselt iga API või tootefunktsiooni kohta.
Ulatusmudel
organization membership: owner | admin | member
└── unit membership: unit_admin | base_creator | base_approver | member
└── team membership: team_lead | variant_creator | variant_deployer | variant_userOrganization liikmesus on väline piir. Kasutaja peab olema organization liige, enne kui administraator saab ta lisada mõne selle units või teams juurde. Liikmesust kontrollitakse igal tasandil eraldi; ära järelda unit või team rolli organization rollist, mis on näha teises kontekstis.
Organization rollid
Praegune organization-management API rakendab neid õigusi:
| Toiming | Owner | Admin | Member |
|---|---|---|---|
| Vaadata organization, liikmeid, groups, units ja teams | Jah | Jah | Jah |
| Muuta organization nime või kirjeldust | Jah | Jah | Ei |
| Luua, muuta või kustutada groups ja hallata group liikmeid | Jah | Jah | Ei |
| Kutsuda või eemaldada tavalisi liikmeid | Jah | Jah | Ei |
| Muuta tavaliste member/admin rollide | Jah | Jah | Ei |
| Kutsuda või edutada owner | Jah | Ei | Ei |
| Muuta või eemaldada olemasolevat owner | Jah | Ei | Ei |
| Luua või kustutada units | Jah | Jah | Ei |
| Kustutada organization | Jah | Ei | Ei |
| Lahkuda organization | Jah, välja arvatud ainus owner | Jah | Jah |
Organizationil võib olla rohkem kui üks owner. API ei lase ainsal
owner lahkuda, enne kui on teine owner või organization kustutatakse. Selles
API-s pole eraldi „transfer ownership“ toimingut; owner muudab teise liikme
rolli owner-iks, seejärel võib ta eelmise owner vajadusel muuta või eemaldada.
Unit rollid
Organization owner ja admin saavad hallata iga unit. Uniti sees annab praegune
organization-management API unit_admin-ile järgmised haldustoimingud:
- muuta unit;
- lisada, eemaldada ja muuta unit liikmete rolle;
- luua, muuta ja kustutada teams selles unit;
- lisada ja hallata team liikmeid selles unit.
Ainult organization owner või admin saab kustutada enda unit.
base_creator, base_approver ja unit member on salvestatud rollisildid
base-image workflow policy jaoks. Organization CRUD marsruudid ise ei tõenda,
et iga create, approve või deployment toiming mujal neid silte sunnib. Enne
nendele kontrollina toetumist kontrolli konkreetse build või approval workflow
autoriseerimise käitumist.
Team rollid
Organization owner/admin ja emaunit unit_admin saavad hallata team
liikmesust. team_lead saab:
- muuta team nime või kirjeldust;
- lisada ja eemaldada team liikmeid;
- muuta team liikmete rolle.
team_lead ei saa team praeguse organization API kaudu kustutada; see toiming
on reserveeritud organization owner/admin või emaunit unit_admin.
variant_creator, variant_deployer ja variant_user väljendavad kavandatud
variant workflow vastutusi. Neid ei tohiks lugeda tõendiks, et iga variant
endpoint rakendab täielikku create/edit/deploy maatriksit. Testi täpset workflow
ja keelatud teid juurutatud versioonis.
Groups on teistsugused
Groups on organization taseme jagamiskogumid, mitte veel üks rollihierarhia. Owner ja admin loovad groups ja haldavad group liikmesust; kõik organization liikmed saavad loetleda groups ja nende liikmeid. Group liikmesus ei muuda kasutajat organization admin, unit admin ega team lead.
Rolli turvaline muutmine
- Kinnita sihtorganization, unit või team.
- Salvesta kasutaja praegused kehtivad liikmesused kõigis kolmes ulatuses.
- Rakenda üks rollimuutus.
- Testi nii lubatud kui ka keelatud toimingut selle kasutaja sessiooniga.
- Kontrolli, kas puhverdatud UI olek ja olemasolevad sessioonid peegeldavad muutust.
- Kui policy nõuab, säilita auditi kirje rollisildist eraldi.
Sildi muutmine ilma keelatud tee testita ei ole piisav tõend, et rakendatakse vähima privileegi printsiipi.
Levinud erijuhud
- Admin ei saa kedagi edutada owner-iks ega muuta olemasoleva owner rolli.
- Kasutajat ei saa lisada unit või team, enne kui ta kuulub organization.
- Unit ja team liikmed võivad end eemaldada; organization liikmesus jääb alles, kui seda eraldi ei eemaldata.
- Organization liikmesuse eemaldamisel kontrolli oma versioonis aegunud unit, team, group, share ja sessiooni mõjusid.
- UI märkide värvid on esitus, mitte turvakontroll. Tuginem alati serveripoolsele autoriseerimisele ja keelatud tee testidele.