Lomas un atļauju tvērums
OpenFactory glabā neatkarīgas lomas organization, unit un team līmenī. Lomas nosaukums apraksta tvērumu; tas nav universāla atļauja, kas automātiski attiecas uz katru API vai produkta funkciju.
Tvēruma modelis
organization membership: owner | admin | member
└── unit membership: unit_admin | base_creator | base_approver | member
└── team membership: team_lead | variant_creator | variant_deployer | variant_userOrganization dalība ir ārējā robeža. Lietotājam jābūt organization dalībniekam, pirms administrators var pievienot viņu kādai no tās units vai teams. Dalība tiek pārbaudīta neatkarīgi katrā līmenī; neizseciet unit vai team lomu no organization lomas, kas parādīta citā kontekstā.
Organization lomas
Pašreizējā organization-management API piemēro šīs atļaujas:
| Operācija | Owner | Admin | Member |
|---|---|---|---|
| Skatīt organization, dalībniekus, groups, units un teams | Jā | Jā | Jā |
| Rediģēt organization nosaukumu vai aprakstu | Jā | Jā | Nē |
| Izveidot, rediģēt vai dzēst groups un pārvaldīt group dalībniekus | Jā | Jā | Nē |
| Uzaicināt vai noņemt parastos dalībniekus | Jā | Jā | Nē |
| Mainīt parasto member/admin lomas | Jā | Jā | Nē |
| Uzaicināt vai paaugstināt owner | Jā | Nē | Nē |
| Mainīt vai noņemt esošo owner | Jā | Nē | Nē |
| Izveidot vai dzēst units | Jā | Jā | Nē |
| Dzēst organization | Jā | Nē | Nē |
| Atstāt organization | Jā, ja nav vienīgais owner | Jā | Jā |
Organization var būt vairāk nekā viens owner. API neļauj vienīgajam
owner aiziet, kamēr nav cits owner vai organization nav izdzēsta. Šajā API
nav atsevišķas „transfer ownership“ darbības; owner maina cita dalībnieka
lomu uz owner, pēc tam var mainīt vai noņemt iepriekšējo owner pēc vajadzības.
Unit lomas
Organization owner un admin var pārvaldīt katru unit. Unit ietvaros pašreizējā
organization-management API piešķir unit_admin šādas administratīvās operācijas:
- rediģēt unit;
- pievienot, noņemt un mainīt unit dalībnieku lomas;
- izveidot, rediģēt un dzēst teams šajā unit;
- pievienot un pārvaldīt team dalībniekus šajā unit.
Tikai organization owner vai admin var izdzēst pašu unit.
base_creator, base_approver un unit member ir saglabātas lomu
etiķetes base-image workflow policy. Organization CRUD maršruti paši
neapliecina, ka katru create, approve vai deployment darbību citur obligāti
kontrolē šīs etiķetes. Pirms paļaujaties uz tām kā uz kontroli, pārbaudiet
konkrētā build vai approval workflow autorizācijas uzvedību.
Team lomas
Organization owner/admin un vecāku unit unit_admin var pārvaldīt team
dalību. team_lead var:
- rediģēt team nosaukumu vai aprakstu;
- pievienot un noņemt team dalībniekus;
- mainīt team dalībnieku lomas.
team_lead nevar izdzēst team, izmantojot pašreizējo organization API; šī
operācija ir rezervēta organization owner/admin vai vecāku unit unit_admin.
variant_creator, variant_deployer un variant_user izsaka paredzētās
variant workflow atbildības. Tos nevajadzētu lasīt kā pierādījumu, ka katrs
variant endpoint piemēro pilnu create/edit/deploy matricu. Pārbaudiet precīzo
workflow un noraidītos ceļus izvietotajā versijā.
Groups atšķiras
Groups ir organization līmeņa koplietošanas kolekcijas, nevis vēl viena lomu hierarchija. Owner un admin izveido groups un pārvalda group dalību; visi organization dalībnieki var uzskaitīt groups un to dalībniekus. Group dalība nepārvērš lietotāju par organization admin, unit admin vai team lead.
Lomas droša maiņa
- Apstipriniet mērķa organization, unit vai team.
- Pierakstiet lietotāja pašreizējās efektīvās dalības visos trīs tvērumos.
- Veiciet vienu lomas maiņu.
- Pārbaudiet gan atļauto, gan noraidīto operāciju ar šī lietotāja sesiju.
- Pārbaudiet, vai kešotā UI stāvoklis un esošās sesijas atspoguļo izmaiņu.
- Ja policy prasa, saglabājiet audita ierakstu ārpus lomas etiķetes.
Etiķetes maiņa bez noraidīta ceļa testa nav pietiekams pierādījums, ka tiek piemērots mazākās privilēģijas princips.
Biežākie robežgadījumi
- Admin nevar nevienu paaugstināt līdz owner vai mainīt esošā owner lomu.
- Lietotāju nevar pievienot unit vai team, kamēr viņš nepieder organization.
- Unit un team dalībnieki var noņemt sevi; organization dalība paliek, ja to atsevišķi noņem.
- Noņemot organization dalību, savā versijā pārbaudiet novecojušas unit, team, group, share un sesiju sekas.
- UI emblēmu krāsas ir prezentācija, ne drošības kontrole. Vienmēr paļaujieties uz servera autorizāciju un noraidītu ceļu testiem.