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
permitqui s'applique ; unforbidqui s'applique refuse toujours. L'ordre n'a pas d'importance. - Une règle s'applique si tout son
matchconvient à l'élément et tout sonwhenà 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
forbidsurorganisation,membership,invitation,group,role,ruleouattribute: sur la gestion, vous n'écrivez que ce qui est permis ; - une règle sur
placementhors de l'organisation du sommet ; - un
attribute_hasavec 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,
usesurgroupoumembershipn'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_linkoumemory_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 dematch.names. L'étiquettesubjectest qui a créé la ligne ; unsubjectvide ("") est une ligne partagée. Dans les fonctions d'IA, vous ne lisez l'étiquettesubjectque sur les lignes. fileetdatastorene portent pas d'étiquettes, donc pas dematch.labels, et comme condition seulementattribute_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_hostacceptematch.namespour 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.