Ga naar inhoud

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 permit die past; een forbid die past, weigert altijd. De volgorde maakt niet uit.
  • Een regel past als al zijn match klopt voor het ding en al zijn when voor 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 forbid over organisation, membership, invitation, group, role, rule of attribute: op beheer schrijf je alleen wat mag;
  • een regel over placement buiten de bovenste organisatie;
  • een attribute_has met 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 use op group of membership niet 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_link of memory_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 geen match.names. Het label subject is wie de rij maakte; een lege subject ("") is een gedeelde rij. Van de AI-functies lees je het label subject alleen op rijen.
  • file en datastore dragen geen labels, dus geen match.labels, en als voorwaarde alleen attribute_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_host neemt match.names voor de adressen. Modelrouters en downloads bereiken standaard elk lid; geheugen schrijven en delen via een link niemand, tot het regeldocument ze toestaat.