Soorten en acties¶
Deze pagina is om op te zoeken: hoe een regel eruitziet, welke soorten dingen een regel kan noemen en wat elke actie op elke soort betekent. Wat regels en rollen zijn, staat in Rollen en toegang.
Een regel¶
{"id": "eigen-afdeling", "effect": "permit", "kind": "membership",
"actions": ["see", "write"],
"match": {"labels": {"office": "utrecht"}},
"when": [{"atom": "label_among", "label": "department", "attribute": "department"}]}
| Deel | Betekenis |
|---|---|
effect |
permit staat toe, forbid weigert |
kind |
de soort ding waar de regel over gaat (OS, AI-functies) |
actions |
see, use, write, delete; weglaten is elke actie die de soort kent |
match.names |
patronen waarvan de naam van het ding er één moet passen: *, ? en [a-z], hoofdlettergevoelig; weglaten is elke naam |
match.labels |
labels die het ding moet dragen, elk met deze waarde tussen zijn waarden; hoogstens 16 |
when |
voorwaarden op de persoon, die allemaal moeten kloppen; hoogstens 16 |
id |
optioneel: een eigen naam voor de regel, kleine letters, cijfers en -, beginnend met een letter, uniek in het document; een weigering noemt de regel bij dit id |
Een voorwaarde in when is een van drie:
| Voorwaarde | Klopt als |
|---|---|
{"atom": "label_is_subject", "label": "subject"} |
de persoon zelf tussen de waarden van dat label op het ding staat: "dit is van mij" |
{"atom": "label_among", "label": "department", "attribute": "department"} |
minstens één waarde van het label op het ding ook een waarde van de eigenschap van de persoon is |
{"atom": "attribute_has", "attribute": "role", "value": "org-admin"} |
de eigenschap van de persoon die waarde heeft; leest niets van het ding |
De eigenschappen die een voorwaarde kan lezen zijn role (de naam van een ingebouwde rol of het id
rol_... van een eigen rol), group (het id grp_... van een groep) en elke eigenschap die de
organisatie of een organisatie erboven heeft vastgelegd. Een voorwaarde op een andere eigenschap
weigert OS.
Hoe OS beslist¶
- Niets mag zonder een
permitdie past; eenforbiddie past, weigert altijd. De volgorde maakt niet uit. - Een regel past als al zijn
matchklopt voor het ding en al zijnwhenvoor de persoon. Er is geen "of" en geen "niet": twee mogelijke waarden zijn twee regels. - Labels en eigenschappen zijn verzamelingen waarden. Een ding zonder het label past bij geen enkele test op dat label.
- Geen actie omvat een andere. OS vraagt eerst
see; wat de persoon niet mag zien, bestaat voor hem niet (404). - Iets maken is een
write, beslist op de labels in het verzoek. Labels wijzigen wordt beslist op de oude en op de nieuwe labels.
Grenzen en beperkingen¶
| Waar | Grens |
|---|---|
| regeldocument | hoogstens 500 regels en 2.000 naampatronen samen |
| eigen rol | hoogstens 200 regels, elk hoogstens 15 voorwaarden |
| één regel | hoogstens 200 naampatronen, 16 labeltests, 16 voorwaarden |
| organisatie | hoogstens 100 eigen rollen en 16 eigenschappen; alles wat de organisatie en de organisaties erboven samen geven, hoogstens 500 regels in de AI-functies; de organisatie en elke organisatie eronder samen hoogstens 32 eigenschappen en labels die regels lezen (409 daarboven) |
Daarnaast weigert OS:
- een
forbidoverorganisation,membership,invitation,group,role,ruleofattribute: op beheer schrijf je alleen wat mag; - een regel over
placementbuiten de bovenste organisatie; - een
attribute_hasmet een waarde die buiten de vaste lijst van de eigenschap valt, ook als een organisatie erboven haar vastlegde; - een voorwaarde op een eigenschap die niemand heeft vastgelegd;
- een regel over een soort van OS met een actie die de soort niet kent: elke soort neemt alleen de
acties die in haar rij staan, zodat bijvoorbeeld
useopgroupofmembershipniet kan; - een regel over de AI-functies met een deel dat de soort niet neemt (hieronder);
- in een eigen rol: een regel over
router,egress_host,artifact_download,share_linkofmemory_write.
Elk van deze weigeringen is een 422 bij het schrijven; er verandert niets.
Een regel die toestaat wat niet in de dienst van de
organisatie zit, weigert OS met 403 (This is not part of your organisation's service.): in een
eigen rol, in het regeldocument, en als je een eigen rol of een groep met zo'n rol geeft. Een
ingebouwde rol geef je altijd; de dienst maakt hem alleen kleiner.
In de dienst¶
Een pakket of een uitzondering noemt soorten met hun acties, net als een regel, maar zonder
match en when. Deze soorten zitten in elke dienst en in geen pakket: organisation,
membership, invitation, group, role, rule, attribute, audit_event, service,
webhook, event, export en notification_channel, en
daarnaast placement en service_plan, die alleen Artific beheert. Een pakket of uitzondering die
een van deze soorten noemt, weigert OS met 422. Elke andere soort zit alleen in de dienst als een
pakket of uitzondering hem geeft, net als de soorten van het inloggen van je bedrijf,
domain en sign_in.
Een onderdeel noemt alleen acties die de soort kent: voor de soorten van OS die in
haar rij, voor die van de AI-functies die in hun tabel. Zo neemt
thread geen use. De soorten zonder acties (router, egress_host, artifact_download,
share_link, memory_write) zitten in hun geheel in de dienst of niet: een onderdeel daarover
noemt geen actions. Anders weigert OS het pakket of de uitzondering met 422.
De soorten van OS¶
| Soort | Het ding | see |
use |
write |
delete |
|---|---|---|---|---|---|
organisation |
de organisatie, haar instellingen, en een organisatie eronder | haar zien, de organisaties eronder zien | — | haar instellingen wijzigen; een organisatie eronder maken | haar verwijderen |
membership |
een lid | leden zien | — | uitnodigen, deactiveren, heractiveren, eigenschappen geven | verwijderen |
invitation |
een openstaande uitnodiging | zien | — | opnieuw versturen | intrekken |
group |
een groep | zien | — | maken, hernoemen, leden toevoegen en verwijderen, rollen en waarden geven | verwijderen |
role |
een ingebouwde of eigen rol | zien | aan een lid of groep geven, of afnemen | een eigen rol maken of wijzigen | een eigen rol verwijderen |
rule |
het regeldocument | lezen | — | vervangen | — |
attribute |
een eigenschap | zien | haar waarden aan anderen geven | vastleggen of wijzigen | verwijderen |
audit_event |
een rij van het logboek | het logboek lezen | — | — | — |
placement |
waar de gegevens van een organisatie staan | — | — | instellen | — |
domain |
een bewezen e-maildomein | zien | — | toevoegen en bewijzen | opgeven |
sign_in |
het inloggen van je bedrijf | zien | — | toevoegen en koppelen | ontkoppelen |
service |
de dienst van de organisatie: haar pakketten, uitzonderingen, proefperiodes en de einddatum van een demo | lezen | — | pakketten en uitzonderingen geven en weghalen, de einddatum van een demo zetten; beslist in de organisatie erboven | — |
service_plan |
een pakket van Artific | zien | — | maken, wijzigen | verwijderen |
webhook |
een webhook van de organisatie en zijn afleveringen | zien, nooit het geheim | — | registreren, wijzigen, geheim vervangen, inschakelen, testen, opnieuw afleveren | verwijderen |
event |
de gebeurtenissen van de organisatie | de feed lezen, en een aflevering ontvangen | — | — | — |
export |
een export van de organisatie of van één lid | de exports van de organisatie zien | ze downloaden | er een aanvragen | — |
notification_channel |
een Slack-kanaal dat de organisatie koppelde | zien, nooit het adres | — | koppelen, wijzigen, testen | ontkoppelen |
direct_chat |
de balie van chats die aan een collega zijn overgedragen; de ingebouwde rol consultant heeft hem |
de balie zien en er een chat op lezen | een chat overnemen, antwoorden, vrijgeven, teruggeven | — | een wachtend verzoek sluiten |
improvement |
de verbetervoorstellen van de organisatie, hun instellingen en de analyses | de instellingen, de analyses en elk voorstel lezen | — | de instellingen wijzigen, een analyse starten, een voorstel accepteren, negeren of heropenen | — |
Een soort neemt alleen de acties die in haar rij staan: service alleen see en write,
en organisation, membership, invitation, group, domain en
sign_in geen use. Een regel, pakket of uitzondering die een andere actie noemt, weigert OS met
422. Een regel zonder actions geldt voor de acties die de soort kent, en allowed_actions noemt
nooit een andere.
placement en service_plan beslist OS alleen voor wie vanuit de bovenste organisatie handelt.
Een write op service beslist OS in de organisatie erboven, voor wie daar org-admin heeft met
bereik descendants (hoe).
Wat match leest op een ding van OS:
| Soort | match.labels leest |
match.names leest |
|---|---|---|
membership |
de feiten van het lid: role, group, elke eigenschap, en subject, het lid zelf |
— |
group, role |
de labels erop (hoogstens 32); elke ingebouwde rol draagt builtin: true |
de naam |
organisation |
haar labels, die de organisatie erboven zet | de naam |
attribute |
— | de naam |
De soorten van de AI-functies¶
Deze soorten gaan over wat leden in de AI-functies doen. Ze staan in CoreAccessKind.
| Soort | Waar een regel over beslist | Acties |
|---|---|---|
model |
welke modellen een gesprek gebruikt | see, use |
tool |
welke tools het model krijgt en mag aanroepen | see, use, write, delete |
prompt, skill, agent, schedule, workflow |
welke prompts, skills, agents, planningen en workflows iemand bereikt | see, use, write, delete |
knowledge_collection, knowledge_index, knowledge_graph, knowledge_table_set |
welke kennisverzamelingen, indexen, kennisgrafen en tabelsets iemand bereikt | see, use, write, delete |
file, datastore |
welke bestanden en datastores iemand bij naam bereikt | see, use, write, delete |
thread |
welke gesprekken iemand bereikt | see, write, delete |
memory_record |
welk geheugen iemand bereikt | see, write, delete |
knowledge_source |
welke kennisbronnen een zoekopdracht vindt | see, write, delete |
stored_file |
welke opgeslagen bestanden en uploads iemand bereikt | see, write, delete |
datastore_record |
welke rijen van een datastore iemand bereikt | see, write, delete |
router |
welke modelrouters gebruikt worden | geen |
egress_host |
welke externe adressen bereikbaar zijn | geen |
artifact_download |
of bestanden die een tool maakte, gedownload mogen worden | geen |
share_link |
of opgeslagen bestanden en pagina's via een link gedeeld mogen worden | geen |
memory_write |
of de AI-functies geheugen mogen schrijven | geen |
Een soort zonder acties kent geen actions: de regel gaat over de soort als geheel.
Niet elke soort neemt elk deel van een regel. Een regel met een deel dat de soort niet neemt, of met
een actie die ze niet kent, weigert OS met 422 als je hem schrijft:
- Rijen (
thread,memory_record,knowledge_source,stored_file,datastore_record) hebben geen naam, dus geenmatch.names. Het labelsubjectis wie de rij maakte; een legesubject("") is een gedeelde rij. Van de AI-functies lees je het labelsubjectalleen op rijen. fileendatastoredragen geen labels, dus geenmatch.labels, en als voorwaarde alleenattribute_has.- Voor de hele organisatie (
router,egress_host,artifact_download,share_link,memory_write): geen voorwaarde op de persoon (when), en daarom alleen in het regeldocument, nooit in een rol (hoe). Ze nemen geen labels;egress_hostneemtmatch.namesvoor de adressen. Modelrouters en downloads bereiken standaard elk lid; geheugen schrijven en delen via een link niemand, tot het regeldocument ze toestaat.