Saltar a contenido

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 permit que encaje; un forbid que encaje deniega siempre. El orden no importa.
  • Una regla encaja si todo su match se cumple para la cosa y todo su when para 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 forbid sobre organisation, membership, invitation, group, role, rule o attribute: sobre la administración solo escribes lo que se permite;
  • una regla sobre placement fuera de la organización más alta;
  • un attribute_has con 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, use sobre group o membership no 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_link o memory_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 tienen match.names. La etiqueta subject es quien creó la fila; un subject vacío ("") es una fila compartida. De las funciones de IA, la etiqueta subject solo la lees en filas.
  • file y datastore no llevan etiquetas, así que no tienen match.labels, y como condición solo attribute_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_host admite match.names para 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.