Tipos y acciones¶
Esta página es de consulta: qué aspecto tiene una regla, qué tipos de cosas puede nombrar una regla y qué significa cada acción sobre cada tipo. Qué son las reglas y los roles está en Roles y acceso.
Una regla¶
{"id": "own-department", "effect": "permit", "kind": "membership",
"actions": ["see", "write"],
"match": {"labels": {"office": "utrecht"}},
"when": [{"atom": "label_among", "label": "department", "attribute": "department"}]}
| Parte | Significado |
|---|---|
effect |
permit permite, forbid deniega |
kind |
el tipo de cosa sobre el que trata la regla (OS, funciones de IA) |
actions |
see, use, write, delete; omitirlo es toda acción que conoce el tipo |
match.names |
patrones de los que debe encajar uno con el nombre de la cosa: *, ? y [a-z], distingue mayúsculas; omitirlo es cualquier nombre |
match.labels |
etiquetas que debe llevar la cosa, cada una con este valor entre sus valores; como máximo 16 |
when |
condiciones sobre la persona, que deben cumplirse todas; como máximo 16 |
id |
opcional: un nombre propio para la regla, minúsculas, cifras y -, empezando por una letra, único en el documento; un rechazo nombra la regla por este id |
Una condición en when es una de tres:
| Condición | Se cumple si |
|---|---|
{"atom": "label_is_subject", "label": "subject"} |
la propia persona está entre los valores de esa etiqueta en la cosa: «esto es mío» |
{"atom": "label_among", "label": "department", "attribute": "department"} |
al menos un valor de la etiqueta en la cosa es también un valor del atributo de la persona |
{"atom": "attribute_has", "attribute": "role", "value": "org-admin"} |
el atributo de la persona tiene ese valor; no lee nada de la cosa |
Los atributos que puede leer una condición son role (el nombre de un rol integrado o el id rol_...
de un rol propio), group (el id grp_... de un grupo) y todo atributo que haya definido la
organización o una organización superior. OS rechaza una condición sobre otro atributo.
Cómo decide OS¶
- Nada se puede hacer sin un
permitque encaje; unforbidque encaje deniega siempre. El orden no importa. - Una regla encaja si todo su
matchse cumple para la cosa y todo suwhenpara la persona. No hay «o» ni «no»: dos valores posibles son dos reglas. - Las etiquetas y los atributos son conjuntos de valores. Una cosa sin la etiqueta no encaja con ninguna prueba sobre esa etiqueta.
- Ninguna acción incluye otra. OS pregunta primero por
see; lo que la persona no puede ver no existe para ella (404). - Crear algo es un
write, decidido sobre las etiquetas de la solicitud. Cambiar etiquetas se decide sobre las etiquetas antiguas y las nuevas.
Límites y restricciones¶
| Dónde | Límite |
|---|---|
| documento de reglas | como máximo 500 reglas y 2.000 patrones de nombre en conjunto |
| rol propio | como máximo 200 reglas, cada una con como máximo 15 condiciones |
| una regla | como máximo 200 patrones de nombre, 16 pruebas de etiqueta, 16 condiciones |
| organización | como máximo 100 roles propios y 16 atributos; todo lo que dan juntas la organización y las organizaciones superiores, como máximo 500 reglas en las funciones de IA; la organización y cada organización de debajo juntas, como máximo 32 atributos y etiquetas que leen reglas (409 por encima) |
Además, OS rechaza:
- un
forbidsobreorganisation,membership,invitation,group,role,ruleoattribute: sobre la administración solo escribes lo que se permite; - una regla sobre
placementfuera de la organización más alta; - un
attribute_hascon un valor que queda fuera de la lista fija del atributo, también si una organización superior lo definió; - una condición sobre un atributo que nadie ha definido;
- una regla sobre un tipo de OS con una acción que el tipo no conoce: cada tipo admite solo las
acciones de su fila, de modo que, por ejemplo,
usesobregroupomembershipno es posible; - una regla sobre las funciones de IA con una parte que el tipo no admite (más abajo);
- en un rol propio: una regla sobre
router,egress_host,artifact_download,share_linkomemory_write.
Cada uno de estos rechazos es un 422 al escribir; no cambia nada.
Una regla que permite lo que no está en el servicio de la
organización, la rechaza OS con 403 (This is not part of your organisation's service.): en un rol
propio, en el documento de reglas, y si das un rol propio o un grupo con un rol así. Un rol integrado
siempre lo das; el servicio solo lo hace más pequeño.
En el servicio¶
Un plan o una excepción nombra tipos con sus acciones, igual que una regla, pero sin match ni
when. Estos tipos están en todo servicio y en ningún plan: organisation, membership,
invitation, group, role, rule, attribute, audit_event, service, webhook, event, export y notification_channel, y además placement y
service_plan, que solo administra Artific. OS rechaza con 422 un plan o una excepción que nombre
uno de estos tipos. Cualquier otro tipo está en el servicio solo si un plan o una excepción lo da,
y también los tipos del inicio de sesión de tu empresa, domain y sign_in.
Un elemento nombra solo acciones que el tipo conoce: para los tipos de OS, las de
su fila; para los de las funciones de IA, las de su tabla. Así thread
no admite use. Los tipos sin acciones (router, egress_host, artifact_download, share_link,
memory_write) están enteros en el servicio o no están: un elemento sobre ellos no nombra actions.
De lo contrario, OS rechaza el plan o la excepción con 422.
Los tipos de OS¶
| Tipo | La cosa | see |
use |
write |
delete |
|---|---|---|---|---|---|
organisation |
la organización, sus ajustes, y una organización de debajo | verla, ver las organizaciones de debajo | — | modificar sus ajustes; crear una organización de debajo | eliminarla |
membership |
un miembro | ver miembros | — | invitar, desactivar, volver a activar, dar atributos | eliminar |
invitation |
una invitación pendiente | ver | — | volver a enviar | retirar |
group |
un grupo | ver | — | crear, cambiar el nombre, añadir y quitar miembros, dar roles y valores | eliminar |
role |
un rol integrado o propio | ver | darlo a un miembro o grupo, o quitarlo | crear o modificar un rol propio | eliminar un rol propio |
rule |
el documento de reglas | leer | — | sustituir | — |
attribute |
un atributo | ver | dar sus valores a otros | definir o modificar | eliminar |
audit_event |
una fila del registro de auditoría | leer el registro de auditoría | — | — | — |
placement |
dónde están los datos de una organización | — | — | configurar | — |
domain |
un dominio de correo demostrado | ver | — | añadir y demostrar | renunciar |
sign_in |
el inicio de sesión de tu empresa | ver | — | añadir y conectar | desconectar |
service |
el servicio de la organización: sus planes, excepciones, periodos de prueba y la fecha de fin de una demo | leer | — | dar y quitar planes y excepciones, fijar la fecha de fin de una demo; se decide en la organización superior | — |
service_plan |
un plan de Artific | ver | — | crear, modificar | eliminar |
webhook |
un webhook de la organización y sus entregas | ver, nunca el secreto | — | registrar, modificar, reemplazar el secreto, activar, probar, entregar de nuevo | eliminar |
event |
los eventos de la organización | leer el feed, y recibir una entrega | — | — | — |
export |
una exportación de la organización o de un miembro | ver las exportaciones de la organización | descargarlas | pedir una | — |
notification_channel |
un canal de Slack que la organización conectó | ver, nunca la dirección | — | conectar, cambiar, probar | desconectar |
direct_chat |
la mesa de los chats pasados a un compañero; el rol integrado consultant la tiene |
ver la mesa y leer un chat en ella | tomar un chat, responder, liberarlo, devolverlo | — | cerrar una solicitud en espera |
improvement |
las sugerencias de mejora de la organización, sus ajustes y los análisis | leer los ajustes, los análisis y cada sugerencia | — | cambiar los ajustes, iniciar un análisis, aceptar, descartar o reabrir una sugerencia | — |
Un tipo admite solo las acciones de su fila: service solo see y write, y organisation, membership, invitation, group, domain y sign_in no admiten use.
OS rechaza con 422 una regla, plan o excepción que nombre otra acción. Una regla sin actions vale
para las acciones que conoce el tipo, y allowed_actions nunca nombra otra.
placement y service_plan los decide OS solo para quien actúa desde la organización más alta. Un
write sobre service lo decide OS en la organización superior, para quien tiene allí org-admin
con alcance descendants (cómo).
Lo que lee match en una cosa de OS:
| Tipo | match.labels lee |
match.names lee |
|---|---|---|
membership |
los datos del miembro: role, group, cada atributo, y subject, el propio miembro |
— |
group, role |
las etiquetas que lleva (como máximo 32); cada rol integrado lleva builtin: true |
el nombre |
organisation |
sus etiquetas, que pone la organización superior | el nombre |
attribute |
— | el nombre |
Los tipos de las funciones de IA¶
Estos tipos tratan de lo que hacen los miembros en las funciones de IA. Están en CoreAccessKind.
| Tipo | Sobre qué decide una regla | Acciones |
|---|---|---|
model |
qué modelos usa una conversación | see, use |
tool |
qué herramientas recibe el modelo y puede llamar | see, use, write, delete |
prompt, skill, agent, schedule, workflow |
a qué prompts, skills, agentes, planificaciones y workflows llega alguien | see, use, write, delete |
knowledge_collection, knowledge_index, knowledge_graph, knowledge_table_set |
a qué colecciones de conocimiento, índices, grafos de conocimiento y conjuntos de tablas llega alguien | see, use, write, delete |
file, datastore |
a qué archivos y datastores llega alguien por nombre | see, use, write, delete |
thread |
a qué conversaciones llega alguien | see, write, delete |
memory_record |
a qué memoria llega alguien | see, write, delete |
knowledge_source |
qué fuentes de conocimiento encuentra una búsqueda | see, write, delete |
stored_file |
a qué archivos guardados y cargas llega alguien | see, write, delete |
datastore_record |
a qué filas de un datastore llega alguien | see, write, delete |
router |
qué enrutadores de modelos se usan | ninguna |
egress_host |
a qué direcciones externas se puede llegar | ninguna |
artifact_download |
si se pueden descargar los archivos que creó una herramienta | ninguna |
share_link |
si los archivos y páginas guardados se pueden compartir mediante un enlace | ninguna |
memory_write |
si las funciones de IA pueden escribir memoria | ninguna |
Un tipo sin acciones no conoce actions: la regla trata del tipo como un todo.
No todo tipo admite toda parte de una regla. OS rechaza con 422 al escribirla una regla con una
parte que el tipo no admite, o con una acción que no conoce:
- Las filas (
thread,memory_record,knowledge_source,stored_file,datastore_record) no tienen nombre, así que no tienenmatch.names. La etiquetasubjectes quien creó la fila; unsubjectvacío ("") es una fila compartida. De las funciones de IA, la etiquetasubjectsolo la lees en filas. fileydatastoreno llevan etiquetas, así que no tienenmatch.labels, y como condición soloattribute_has.- Para toda la organización (
router,egress_host,artifact_download,share_link,memory_write): ninguna condición sobre la persona (when), y por eso solo en el documento de reglas, nunca en un rol (cómo). No admiten etiquetas;egress_hostadmitematch.namespara las direcciones. Los enrutadores de modelos y las descargas están por defecto al alcance de todo miembro; escribir memoria y compartir mediante un enlace, de nadie, hasta que el documento de reglas los permite.