Aller au contenu

Types et actions

Cette page sert à la consultation : à quoi ressemble une règle, quels types d'éléments une règle peut nommer et ce que signifie chaque action sur chaque type. Ce que sont les règles et les rôles figure dans Rôles et accès.

Une règle

{"id": "own-department", "effect": "permit", "kind": "membership",
 "actions": ["see", "write"],
 "match": {"labels": {"office": "utrecht"}},
 "when": [{"atom": "label_among", "label": "department", "attribute": "department"}]}
Partie Signification
effect permit autorise, forbid refuse
kind le type d'élément dont parle la règle (OS, fonctions d'IA)
actions see, use, write, delete ; l'omettre signifie toutes les actions que connaît le type
match.names des motifs dont l'un doit correspondre au nom de l'élément : *, ? et [a-z], sensibles à la casse ; l'omettre signifie tout nom
match.labels des étiquettes que l'élément doit porter, chacune avec cette valeur parmi ses valeurs ; 16 au maximum
when des conditions sur la personne, qui doivent toutes être remplies ; 16 au maximum
id facultatif : un nom propre pour la règle, lettres minuscules, chiffres et -, commençant par une lettre, unique dans le document ; un refus nomme la règle par cet identifiant

Une condition dans when est l'une de ces trois :

Condition Remplie si
{"atom": "label_is_subject", "label": "subject"} la personne elle-même figure parmi les valeurs de cette étiquette sur l'élément : « cela m'appartient »
{"atom": "label_among", "label": "department", "attribute": "department"} au moins une valeur de l'étiquette sur l'élément est aussi une valeur de l'attribut de la personne
{"atom": "attribute_has", "attribute": "role", "value": "org-admin"} l'attribut de la personne a cette valeur ; ne lit rien de l'élément

Les attributs qu'une condition peut lire sont role (le nom d'un rôle intégré ou l'identifiant rol_... d'un rôle propre), group (l'identifiant grp_... d'un groupe) et tout attribut que l'organisation ou une organisation au-dessus a défini. OS refuse une condition sur un autre attribut.

Comment OS décide

  • Rien n'est permis sans un permit qui s'applique ; un forbid qui s'applique refuse toujours. L'ordre n'a pas d'importance.
  • Une règle s'applique si tout son match convient à l'élément et tout son when à la personne. Il n'y a ni « ou » ni « non » : deux valeurs possibles font deux règles.
  • Les étiquettes et les attributs sont des ensembles de valeurs. Un élément sans l'étiquette ne correspond à aucun test sur cette étiquette.
  • Aucune action n'en inclut une autre. OS demande d'abord see ; ce que la personne n'a pas le droit de voir n'existe pas pour elle (404).
  • Créer quelque chose est un write, décidé sur les étiquettes de la requête. Modifier des étiquettes est décidé sur les anciennes et sur les nouvelles étiquettes.

Limites et restrictions

Où Limite
document de règles 500 règles et 2 000 motifs de noms au total
rôle propre 200 règles au maximum, chacune avec 15 conditions au maximum
une règle 200 motifs de noms, 16 tests d'étiquette, 16 conditions au maximum
organisation 100 rôles propres et 16 attributs au maximum ; tout ce que l'organisation et les organisations au-dessus donnent ensemble, 500 règles au maximum dans les fonctions d'IA ; l'organisation et chaque organisation en dessous ensemble, 32 attributs et étiquettes lus par des règles au maximum (409 au-delà)

OS refuse en outre :

  • un forbid sur organisation, membership, invitation, group, role, rule ou attribute : sur la gestion, vous n'écrivez que ce qui est permis ;
  • une règle sur placement hors de l'organisation du sommet ;
  • un attribute_has avec une valeur hors de la liste fixe de l'attribut, même si une organisation au-dessus l'a défini ;
  • une condition sur un attribut que personne n'a défini ;
  • une règle sur un type d'OS avec une action que le type ne connaît pas : chaque type n'accepte que les actions de sa ligne, si bien que, par exemple, use sur group ou membership n'est pas possible ;
  • une règle sur les fonctions d'IA avec une partie que le type n'accepte pas (ci-dessous) ;
  • dans un rôle propre : une règle sur router, egress_host, artifact_download, share_link ou memory_write.

Chacun de ces refus est un 422 à l'écriture ; rien ne change.

Une règle qui autorise ce qui ne fait pas partie du service de l'organisation, OS la refuse avec 403 (This is not part of your organisation's service.) : dans un rôle propre, dans le document de règles, et si vous donnez un rôle propre ou un groupe avec un tel rôle. Un rôle intégré se donne toujours ; le service ne fait que le réduire.

Dans le service

Une offre ou une exception nomme des types avec leurs actions, comme une règle, mais sans match ni when. Ces types font partie de chaque service et d'aucune offre : organisation, membership, invitation, group, role, rule, attribute, audit_event, service, webhook, event, export et notification_channel, et en plus placement et service_plan, que seul Artific gère. OS refuse avec 422 une offre ou une exception qui nomme l'un de ces types. Tout autre type ne fait partie du service que si une offre ou une exception le donne, comme les types de la connexion de l'entreprise, domain et sign_in.

Un élément ne nomme que des actions que le type connaît : pour les types d'OS celles de sa ligne, pour ceux des fonctions d'IA celles de leur tableau. Ainsi, thread n'accepte pas use. Les types sans actions (router, egress_host, artifact_download, share_link, memory_write) font entièrement partie du service ou pas du tout : un élément à leur sujet ne nomme pas actions. Sinon OS refuse l'offre ou l'exception avec 422.

Les types d'OS

Type L'élément see use write delete
organisation l'organisation, ses paramètres, et une organisation en dessous la voir, voir les organisations en dessous — modifier ses paramètres ; créer une organisation en dessous la supprimer
membership un membre voir les membres — inviter, désactiver, réactiver, donner des attributs supprimer
invitation une invitation en attente la voir — renvoyer retirer
group un groupe le voir — créer, renommer, ajouter et retirer des membres, donner des rôles et des valeurs supprimer
role un rôle intégré ou propre le voir le donner à un membre ou à un groupe, ou le retirer créer ou modifier un rôle propre supprimer un rôle propre
rule le document de règles le lire — le remplacer —
attribute un attribut le voir donner ses valeurs à d'autres le définir ou le modifier le supprimer
audit_event une ligne du journal d'audit lire le journal d'audit — — —
placement où se trouvent les données d'une organisation — — le définir —
domain un domaine de messagerie prouvé le voir — l'ajouter et le prouver y renoncer
sign_in la connexion de votre entreprise la voir — l'ajouter et la relier la délier
service le service de l'organisation : ses offres, exceptions, périodes d'essai et la date de fin d'une démo le lire — donner et retirer des offres et des exceptions, fixer la date de fin d'une démo ; décidé dans l'organisation au-dessus —
service_plan une offre d'Artific la voir — la créer, la modifier la supprimer
webhook un webhook de l'organisation et ses livraisons le voir, jamais le secret — l'enregistrer, le modifier, remplacer le secret, l'activer, le tester, livrer de nouveau le supprimer
event les événements de l'organisation lire le flux, et recevoir une livraison — — —
export un export de l'organisation ou d'un membre voir les exports de l'organisation les télécharger en demander un —
notification_channel un canal Slack que l'organisation a connecté voir, jamais l'adresse — connecter, modifier, tester déconnecter
direct_chat le bureau des chats confiés à un collègue ; le rôle intégré consultant le détient voir le bureau et y lire un chat reprendre un chat, répondre, le libérer, le rendre — fermer une demande en attente
improvement les suggestions d'amélioration de l'organisation, leurs paramètres et les analyses lire les paramètres, les analyses et chaque suggestion — modifier les paramètres, lancer une analyse, accepter, écarter ou rouvrir une suggestion —

Un type n'accepte que les actions de sa ligne : service seulement see et write, et organisation, membership, invitation, group, domain et sign_in pas de use. OS refuse avec 422 une règle, une offre ou une exception qui nomme une autre action. Une règle sans actions vaut pour les actions que le type connaît, et allowed_actions n'en nomme jamais d'autre.

placement et service_plan, OS ne les décide que pour qui agit depuis l'organisation du sommet. Un write sur service, OS le décide dans l'organisation au-dessus, pour qui y a org-admin avec la portée descendants (comment).

Ce que match lit sur un élément d'OS :

Type match.labels lit match.names lit
membership les faits du membre : role, group, chaque attribut, et subject, le membre lui-même —
group, role les étiquettes qu'ils portent (32 au maximum) ; chaque rôle intégré porte builtin: true le nom
organisation ses étiquettes, que pose l'organisation au-dessus le nom
attribute — le nom

Les types des fonctions d'IA

Ces types concernent ce que les membres font dans les fonctions d'IA. Ils figurent dans CoreAccessKind.

Type Ce sur quoi une règle décide Actions
model quels modèles une conversation utilise see, use
tool quels outils le modèle reçoit et peut appeler see, use, write, delete
prompt, skill, agent, schedule, workflow quels prompts, skills, agents, planifications et workflows une personne atteint see, use, write, delete
knowledge_collection, knowledge_index, knowledge_graph, knowledge_table_set quelles collections de connaissances, index, graphes de connaissances et ensembles de tables une personne atteint see, use, write, delete
file, datastore quels fichiers et datastores une personne atteint par leur nom see, use, write, delete
thread quelles conversations une personne atteint see, write, delete
memory_record quelle mémoire une personne atteint see, write, delete
knowledge_source quelles sources de connaissances une recherche trouve see, write, delete
stored_file quels fichiers enregistrés et téléversements une personne atteint see, write, delete
datastore_record quelles lignes d'un datastore une personne atteint see, write, delete
router quels routeurs de modèles sont utilisés aucune
egress_host quelles adresses externes sont accessibles aucune
artifact_download si les fichiers créés par un outil peuvent être téléchargés aucune
share_link si les fichiers et pages enregistrés peuvent être partagés par un lien aucune
memory_write si les fonctions d'IA peuvent écrire dans la mémoire aucune

Un type sans actions ne connaît pas actions : la règle concerne le type dans son ensemble.

Tous les types n'acceptent pas toutes les parties d'une règle. OS refuse avec 422, quand vous l'écrivez, une règle avec une partie que le type n'accepte pas ou avec une action qu'il ne connaît pas :

  • Les lignes (thread, memory_record, knowledge_source, stored_file, datastore_record) n'ont pas de nom, donc pas de match.names. L'étiquette subject est qui a créé la ligne ; un subject vide ("") est une ligne partagée. Dans les fonctions d'IA, vous ne lisez l'étiquette subject que sur les lignes.
  • file et datastore ne portent pas d'étiquettes, donc pas de match.labels, et comme condition seulement attribute_has.
  • Pour toute l'organisation (router, egress_host, artifact_download, share_link, memory_write) : pas de condition sur la personne (when), et donc seulement dans le document de règles, jamais dans un rôle (comment). Elles n'acceptent pas d'étiquettes ; egress_host accepte match.names pour les adresses. Les routeurs de modèles et les téléchargements sont accessibles par défaut à chaque membre ; l'écriture dans la mémoire et le partage par un lien ne le sont à personne tant que le document de règles ne les autorise pas.