Roller og tillatelsesomfang
OpenFactory lagrer uavhengige roller på organisasjons-, unit- og teamnivå. Et rollenavn beskriver et omfang; det er ikke en universell tillatelse som automatisk gjelder for hvert API eller hver produktfunksjon.
Omfangsmodell
organization membership: owner | admin | member
└── unit membership: unit_admin | base_creator | base_approver | member
└── team membership: team_lead | variant_creator | variant_deployer | variant_userOrganisasjonsmedlemskap er den ytre grensen. En bruker må være organisasjonsmedlem før en administrator kan legge vedkommende til i units eller teams. Medlemskap sjekkes separat på hvert nivå; ikke utled unit- eller teamrolle fra en organisasjonsrolle vist i en annen kontekst.
Organisasjonsroller
Det nåværende organization-management API håndhever disse tillatelsene:
| Handling | Owner | Admin | Member |
|---|---|---|---|
| Vise organisasjon, medlemmer, groups, units og teams | Ja | Ja | Ja |
| Redigere organisasjonsnavn eller -beskrivelse | Ja | Ja | Nei |
| Opprette, redigere eller slette groups og administrere groupmedlemmer | Ja | Ja | Nei |
| Invitere eller fjerne vanlige medlemmer | Ja | Ja | Nei |
| Endre roller for vanlige member/admin | Ja | Ja | Nei |
| Invitere eller forfremme til owner | Ja | Nei | Nei |
| Endre eller fjerne eksisterende owner | Ja | Nei | Nei |
| Opprette eller slette units | Ja | Ja | Nei |
| Slette organisasjonen | Ja | Nei | Nei |
| Forlate organisasjonen | Ja, med mindre eneste owner | Ja | Ja |
En organisasjon kan ha mer enn én owner. API-et hindrer den eneste owner i å
forlate til det finnes en annen owner, eller organisasjonen slettes. Det finnes
ingen separat handling « transfer ownership » i dette API-et; en owner setter en annen
medlems rolle til owner, og kan deretter endre eller fjerne den forrige owner etter hensikt.
Unitroller
Organisasjons-owners og -admins kan administrere hver unit. Innenfor en unit gir
det nåværende organization-management API unit_admin disse administrative handlingene:
- redigere unit;
- legge til, fjerne og endre unit-medlemsroller;
- opprette, redigere og slette teams i den unit;
- legge til og administrere teammedlemmer i den unit.
Kun organisasjons-owner eller -admin kan slette selve unit.
base_creator, base_approver og unit-member er lagrede rolleetiketter for policy
for base-image-workflows. Organization CRUD-rutene beviser ikke i seg selv at hver
create-, approve- eller deployment-handling andre steder håndhever disse etikettene.
Kontroller autorisasjonsatferden i den konkrete build- eller approval-workflow før
dere stoler på den som kontroll.
Teamroller
Organisasjons-owners/admins og unit_admin i overordnet unit kan administrere
teammedlemskap. En team_lead kan:
- redigere teamnavn eller -beskrivelse;
- legge til og fjerne teammedlemmer;
- endre teammedlemsroller.
En team_lead kan ikke slette teamet via det nåværende organization API; den handlingen
er reservert for organisasjons-owner/admin eller overordnet unit_admin.
variant_creator, variant_deployer og variant_user uttrykker tiltenkte
ansvarsområder i variant-workflows. Les dem ikke som bevis for at hvert variant-endpoint
håndhever en full create/edit/deploy-matrise. Test nøyaktig workflow og denied paths
i den utrullede versjonen.
Groups er annerledes
Groups er delingskolleksjoner på organisasjonsnivå, ikke enda en rollehierarki. Owners og admins oppretter groups og administrerer groupmedlemskap; alle organisasjonsmedlemmer kan liste groups og medlemmene deres. Groupmedlemskap gjør ikke en bruker til organisasjonsadmin, unit-admin eller team lead.
Endre rolle trygt
- Bekreft målorganisasjon, unit eller team.
- Noter brukerens nåværende effektive medlemskap på alle tre nivåer.
- Gjennomfør én rolleendring.
- Test både en tillatt og en avvist handling med brukerens egen økt.
- Kontroller at cachelagret UI-tilstand og eksisterende økter gjenspeiler endringen.
- Behold auditpost utenfor rolleetiketten hvis policyen deres krever det.
Å endre etikett uten denied-path-test er ikke tilstrekkelig bevis for at least privilege håndheves.
Vanlige kanttilfeller
- En admin kan ikke forfremme noen til owner eller endre en eksisterende owners rolle.
- En bruker kan ikke legges til i unit eller team før vedkommende tilhører organisasjonen.
- Unit- og teammedlemmer kan fjerne seg selv; organisasjonsmedlemskap består med mindre det fjernes separat.
- Ved fjerning av organisasjonsmedlemskap bør dere i deres versjon sjekke for utdaterte unit-, team-, group-, share- og økteeffekter.
- Farger på UI-badges er presentasjon, ikke sikkerhetskontroll. Stol på server-side autorisasjon og denied-path-tester.