Saltar al contenido
BeeuniBeeuni
Español
Esc
↑↓navegar↵abrir⌘Jvista previa
En esta página

Cuentas y acceso

Una cuenta reúne tus proyectos, tus compañeros de equipo y un modelo de acceso.

Una cuenta reúne tus proyectos y a las personas que trabajan en ellos. Cuando te registras, Beeuni crea una cuenta personal para ti. Invita a un compañero de equipo y se convierte en una cuenta de equipo. Las cuentas personales y de equipo usan los mismos roles, facturación y límites.

Un único modelo de acceso

Beeuni tiene un único registro de concesión: una asignación. Cada asignación vincula a un principal con un rol, en un ámbito.

Término Significado
Principal Quién tiene el acceso. Un user, un group, un service_account (la identidad de un agente) o el correo electrónico de un invitado pending.
Rol Un conjunto de permisos con nombre. Beeuni incluye los roles integrados que se indican a continuación. Una cuenta puede añadir roles personalizados.
Permiso Una acción, por ejemplo project.secret.read o member.update.
Ámbito Dónde se aplica el rol: en toda la account o en un solo project.
Objeto Opcional. Restringe la asignación a un solo agent, skill, secret, app o trigger dentro del ámbito.
Caducidad Opcional. La asignación deja de conceder acceso en expires_at.

No existe un segundo almacén de concesiones. El acceso de un grupo, una concesión por recurso y la vinculación de un rol personalizado son asignaciones. Solo se diferencian por el principal, el objeto y el rol.

Roles de cuenta

Cada persona de una cuenta tiene un rol de cuenta:

  • Propietario — control total, incluidos los miembros y la facturación.
  • Administrador — gestiona proyectos, miembros, grupos, roles y tokens.
  • Miembro — trabaja solo en los proyectos a los que tiene una asignación de proyecto.

Los propietarios y administradores tienen acceso equivalente al de un administrador en todos los proyectos de la cuenta. Una asignación de proyecto no puede reducirlo. Para limitar a un propietario o administrador en un proyecto, primero cambia su rol de cuenta a miembro.

El acceso equivalente al de un administrador no incluye las sesiones privadas de los miembros. El propietario de una cuenta puede habilitarlo para propietarios y administradores con Los administradores pueden abrir todas las sesiones en Settings → Security. Solo un propietario puede cambiar esta opción y cada uso queda registrado en la auditoría. Consulta Acceso a las sesiones.

Invita a un compañero de equipo por correo electrónico desde la página de miembros de la cuenta. La invitación es una asignación a un principal pending. Cuando la acepta, se convierte en una asignación user.

Roles de proyecto

Dentro de un proyecto, un principal tiene uno de dos roles:

  • Miembro — lee el proyecto, inicia y detiene sus sesiones y activa sus desencadenadores. No puede editar ni configurar.
  • Administrador — tiene todos los permisos del proyecto: lo edita, gestiona desencadenadores, conectores, habilidades, secretos y acceso, tiene las claves de la puerta de enlace y elimina el proyecto.

No hay un tercer rol de proyecto.

El rol de administrador incluye el conjunto completo de permisos del proyecto. Un rol personalizado solo añade permisos, así que ningún rol puede retirar uno a un administrador. Las asignaciones de objetos son el mecanismo independiente que restringe a qué objetos llega un permiso.

Configura el acceso al proyecto desde sus ajustes de acceso o con beeuni access — consulta CLI.

Grupos

Un grupo es un principal, igual que una persona. Asigna un rol a un grupo en un ámbito y todos sus miembros lo obtendrán. Un grupo añade acceso. Nunca elimina el acceso que una persona ya tiene. Un grupo aprovisionado mediante SCIM es del mismo tipo de principal que uno creado manualmente.

Asignaciones de objetos

Una asignación puede especificar un objeto dentro de un proyecto: un agent, un skill, un secret, un app o un trigger. Actualmente, Beeuni aplica las asignaciones de objetos a agentes y habilidades.

  • Los agentes están cerrados de forma predeterminada. Un miembro solo puede acceder a un agente si una asignación lo nombra a él, a uno de sus grupos o a todos los miembros del proyecto.
  • Todos los demás tipos de objetos están abiertos de forma predeterminada. Si el objeto no tiene asignaciones, un miembro puede acceder a él. Una cuenta de conector compartida con una asignación solo puede ser utilizada por las personas que esta nombra — consulta Elegir quién puede usar una cuenta compartida.
  • Todos los miembros del proyecto también forman un principal. En el cuadro de diálogo Grant access, selecciona Everyone in seguido del nombre del proyecto para dar acceso a un agente a todos los miembros a la vez (principal_type: "project", principal_id = el ID del proyecto). Solo admite asignaciones de objetos, nunca un rol, por lo que cada persona conserva su propio rol de proyecto.
  • Una asignación de objeto también restringe a un administrador de proyecto. Así, «restringir este agente al grupo de finanzas» tiene sentido. Lo que otorga el rol de administrador es el acceso predeterminado sin restricciones de ámbito, no una exención.
  • Las asignaciones de objetos nunca restringen a los propietarios ni a los administradores de la cuenta, ni a una cuenta de servicio que actúe sobre sus propias asignaciones.

Una asignación de objeto no concede permisos por sí misma. Responde a «¿a qué objetos?», no a «¿qué acciones?».

Caducidad

Añade una expires_at a una asignación y dejará de conceder acceso en ese instante. El motor ignora las asignaciones caducadas. El registro se conserva para el historial de auditoría.

Un vocabulario, dos vinculaciones

Una persona, un grupo o un agente obtiene acceso de Beeuni mediante roles: las asignaciones descritas anteriormente. Un agente tiene una segunda vinculación independiente: los permisos de Beeuni que declara su manifiesto en beeuni.yaml dentro de agents.<name>.beeuni_permissions. Una sesión solo puede hacer lo que permiten ambos. Ninguno amplía los permisos del otro. Si el manifiesto de un agente incluye project.secret.read, aun así no podrá leer nada cuando la evaluación del rol lo deniegue. Y si un propietario inicia un agente, este tampoco podrá leer nada si su manifiesto no incluye la acción. Los roles son estado de la cuenta; los permisos de Beeuni son estado del repositorio en el manifiesto. Consulta Referencia del manifiesto.

El rol que cuenta para una sesión de agente es el vinculado a la propia cuenta de servicio del agente —su límite máximo— o el límite predeterminado del agente si no hay ninguno vinculado. No se aplica el rol de la persona que inició la sesión. Un permiso, project.credentials.issue, es exclusivo para personas y nunca se aplica a un agente. Un agente solo concede los permisos que tiene. Los administradores eligen un agente como principal de un rol de proyecto en el Centro de acceso, en Agents. Consulta Permisos de agentes.

Roles personalizados

Un rol personalizado es un rol propiedad de la cuenta, con los permisos que elijas. Al asignarlo, se crea una única asignación: no hay una fila de referencia integrada por debajo. Un rol personalizado puede conceder acceso al proyecto sin ningún rol de proyecto integrado, que es la forma de crear un rol propio de un departamento.

Un rol personalizado solo añade permisos. Beeuni no tiene reglas de denegación.

Los roles personalizados requieren la suscripción rbac de Enterprise. Sin ella, al asignar uno se responde 402 con code: "entitlement_required".

Superadministrador

Superadministrador no es un rol. Es una marca en una pertenencia a una cuenta. Omite todas las comprobaciones de permisos y cada omisión queda registrada en el registro de auditoría. Los roles son el mecanismo habitual para controlar el acceso; el superadministrador es la vía de escape auditada.

El creador de la cuenta empieza como propietario y superadministrador. Cuando se degrada a un propietario, el rol de propietario y la marca de superadministrador van juntos: el cambio elimina la marca y registra iam.member.super_admin.revoke. Si se concede la marca de superadministrador a alguien que no es propietario, permanece hasta que un propietario la revoque.

Dominio de inicio de sesión único

Un proveedor de identidad SAML afirma la dirección de correo electrónico de cada persona. Beeuni confía en esa dirección fuera de tu cuenta solo para un dominio que tu cuenta haya verificado. Hasta entonces:

  • una persona que inicie sesión mediante tu proveedor de identidad se une a tu cuenta y obtiene sus grupos;
  • su identidad SSO no coincide con ninguna invitación de otra cuenta, y la opción «añadir miembro por correo electrónico» de otra cuenta no la encuentra;
  • el inicio de sesión SSO nunca combina una identidad existente con la identidad SSO;
  • Enforce SSO no tiene efecto y el inicio de sesión con contraseña sigue funcionando para el dominio.

Para verificar el dominio, abre Identity en los ajustes de la cuenta. La tarjeta SSO muestra un registro DNS TXT: nombre _beeuni-verification.<your-domain>, valor beeuni-verification=<token>. Publícalo en tu proveedor de DNS y selecciona Verify domain (POST /v1/accounts/:accountId/iam/sso/provider/verify-domain). Cada dominio pertenece a una sola cuenta: un dominio que otra cuenta ya haya verificado no se puede volver a verificar. Al cambiar el dominio principal, se inicia una nueva solicitud de verificación.

Cuando el dominio está verificado y Enforce SSO está activado, el formulario web de inicio de sesión, /v1/access/check-email y las rutas sin interfaz /v1/auth/sign-in/password, /v1/auth/sign-in/magic-link y /v1/auth/verify-otp rechazan las opciones de contraseña y código de correo electrónico para ese dominio (403 sso_required).

El inicio de sesión SSO nunca combina a un propietario o superadministrador con una identidad SSO, ni siquiera en un dominio verificado. Conservan su identidad actual y la identidad SSO se une como miembro independiente.

Ajustes de acceso por función

Algunas funciones tienen sus propios ajustes de visibilidad, además del modelo de roles:

Ajuste Determina
Modo de acceso a la aplicación Quién puede abrir una aplicación implementada
Acceso a las sesiones de desencadenadores Quién puede abrir las sesiones que crea un desencadenador
Política de canales de Slack Quién puede iniciar una sesión desde un canal
Capacidades de Computer Qué llamadas al sistema de archivos, al shell y al escritorio acepta un ordenador conectado

Cada ajuste limita el acceso a un recurso. Ninguno concede un permiso que la evaluación del rol deniegue.

La API de acceso

Método + ruta Función
GET /v1/accounts/{accountId}/iam/assignments Enumera las asignaciones. Filtra por principal, ámbito, objeto o rol.
POST /v1/accounts/{accountId}/iam/assignments Crea una asignación.
DELETE /v1/accounts/{accountId}/iam/assignments/{assignmentId} Revoca una asignación.
GET /v1/accounts/{accountId}/iam/permissions El catálogo de permisos, como datos.
GET /v1/accounts/{accountId}/iam/roles Roles integrados y personalizados.
GET /v1/accounts/{accountId}/iam/roles/{roleId}/permissions Los permisos de un rol.

El catálogo son datos, no una lista codificada. Cada permiso incluye sus indicadores action, scope_type, resource_type, delegable, description, area, level y implies. Léelo en lugar de codificar cadenas de acciones.

Las rutas de escritura determinan el permiso necesario según lo que estés concediendo: project.members.manage para un rol de proyecto o una asignación de objeto, project.connector.connections.manage para una asignación connection, member.update para un rol de cuenta y policy.create para un rol personalizado. No puedes eludir un límite máximo eligiendo otra ruta.

Marca

Una cuenta Enterprise puede personalizar la marca de la aplicación para todos sus miembros: un logotipo apaisado, un icono cuadrado y un favicon, cada uno con una variante opcional para el modo oscuro, además del nombre del producto, que reemplaza a «Beeuni» en el título de la pestaña del navegador. Abre Account → Branding (/accounts/{accountId}?tab=branding). Se aceptan archivos PNG, JPEG, WebP, SVG e ICO de hasta 1 MB. Si falta el logotipo, se usa el icono; si falta el favicon, se usa el icono; y si falta la variante oscura, se usa la imagen clara. Los elementos de marca de la aplicación siguen el tema de la aplicación; el favicon sigue el esquema de color del sistema operativo.

La marca depende de la cuenta, no del navegador: dentro de un proyecto, los miembros ven la marca de la cuenta propietaria del proyecto. Las páginas de inicio de sesión, los correos electrónicos y las páginas públicas para compartir conservan la marca Beeuni, porque no hay una cuenta que personalizar hasta que alguien inicia sesión. Cuando caduca la suscripción Enterprise, los miembros vuelven a ver Beeuni. No se elimina nada y la cuenta puede quitar en cualquier momento lo que haya subido.

Método + ruta Función
GET /v1/accounts/{accountId}/branding El registro almacenado y si el plan lo permite.
PUT /v1/accounts/{accountId}/branding Establece o borra app_name. Requiere account.write y la suscripción branding (de lo contrario, 402 entitlement_required).
POST /v1/accounts/{accountId}/branding/assets/{kind} Sube una imagen como file multiparte. kind puede ser logo, icon, favicon o sus variantes _dark. Tiene los mismos requisitos que PUT.
DELETE /v1/accounts/{accountId}/branding/assets/{kind} Quita una imagen. Solo account.write.
DELETE /v1/accounts/{accountId}/branding Restablece todo a Beeuni. Solo account.write.

GET /v1/accounts incluye branding efectivo de cada cuenta: el registro mientras la suscripción está activa, null en caso contrario, para que el cliente muestre la marca con una sola solicitud que ya realiza. En el SDK: beeuni.accounts.branding.{get, update, uploadAsset, removeAsset, reset}.

Cambiar de cuenta

Si perteneces a más de una cuenta, puedes cambiar entre ellas desde el selector de cuentas. Cada cuenta conserva sus propios proyectos, miembros y ajustes.

Dispositivos con sesión iniciada

Settings → Security → Devices muestra todos los lugares donde tienes una sesión iniciada: navegadores, la aplicación de escritorio y la aplicación móvil.

  • Sign out en un dispositivo cierra esa sesión de inmediato. No se puede renovar, su token deja de funcionar en las rutas de la cuenta y el teléfono deja de recibir notificaciones push.
  • Sign out other devices cierra todas las demás sesiones. Ninguna se puede renovar y sus teléfonos dejan de recibir notificaciones push de inmediato.

Si se vuelve a iniciar sesión en un teléfono, este volverá a recibir notificaciones push.

Tokens

Beeuni te identifica mediante un token de acceso personal (beeuni_pat_...). Actúa como el usuario que lo creó y tiene exactamente las asignaciones de ese usuario. Una cuenta de servicio (beeuni_sa_...) es un principal independiente, no la credencial de una persona, y no tiene acceso a proyectos hasta que una asignación se lo concede.

Los dos tipos aparecen en secciones distintas porque pertenecen a propietarios distintos. Tus propias claves de API están en tus ajustes, en Settings → API keys (/settings/tokens): solo tú puedes verlas y dejan de funcionar cuando termina tu pertenencia a la cuenta. Los tokens de cuenta de servicio forman parte de la configuración de la cuenta, en Account → Tokens, junto a las reglas de claves que rigen su caducidad.

Consulta Autenticación del SDK para obtener información completa sobre los tokens.

Registro de auditoría

El registro de auditoría registra todas las solicitudes que llegan a la API, tanto si identifican a quien las llama como si no. El servidor escribe una fila por cada solicitud HTTP, actualización de WebSocket, solicitud de vista previa, transferencia Git y llamada SCIM. La cobertura no depende de la ruta.

Cada fila indica a quién identificó la solicitud:

actor_type Quién realiza la llamada
human Una persona con sesión iniciada o el token de una persona (source: api_key).
agent La credencial de agente de una sesión. La fila también indica en nombre de qué persona actúa el agente.
service_account Un token de cuenta de servicio.
system Una clave de API de cuenta, un token de directorio SCIM, un webhook de integración con firma verificada o una tarea en segundo plano de Beeuni (source: worker).
anonymous Una solicitud sin credenciales o con credenciales no válidas o falsificadas.

Cada fila también registra la credencial que autenticó la API, en credential_kind y credential_id. El ID identifica la credencial, nunca el secreto. La aplicación web lo muestra como Via, con el nombre del token o de la aplicación cuando lo hay.

credential_kind Credencial credential_id
browser_session Una sesión de inicio de sesión de Beeuni (la aplicación web o un cliente con un JWT de inicio de sesión). El id de la sesión de inicio de sesión.
personal_access_token Un token de acceso personal, como el de la CLI. El id del token.
oauth_app El token beeuni_oat_ de una aplicación conectada, como un cliente MCP. El id del cliente OAuth.
session_token El token propio de una sesión de agente. El id de la sesión.
api_key Una clave de API de cuenta. El id de la clave.
service_account Un token de cuenta de servicio. El id de la cuenta de servicio.
scim_token Un token de directorio SCIM. El id del token.

La API nunca lee X-Beeuni-Client. La CLI, el servidor MCP y la aplicación web llaman a la misma API, y cualquier cliente puede enviar cualquier valor de encabezado, así que el registro refleja lo que la API puede demostrar. Las filas escritas antes del 2026-09-30 pueden incluir un client_reported_source declarado por el propio cliente. Las filas nuevas lo dejan vacío. Filtra por credencial con ?credential_kind=oauth_app en GET /v1/accounts/:accountId/audit, o beeuni audit ls --credential-kind oauth_app.

Las filas escritas antes de 2026-10 incluyen session_sequence, integrity_previous_hash y integrity_hash: un contador por sesión y una cadena de hash. Las filas nuevas dejan vacíos los tres campos, que están obsoletos. Nadie verificaba la cadena y mantenerla serializaba todas las escrituras de una sesión. El registro de una sesión se ordena por hora de creación: primero aparecen las filas con session_sequence, en ese orden, y luego las filas más nuevas, en el orden en que las creó la API.

Una solicitud rechazada es una fila con outcome: denied. metadata.auth registra cómo se autenticó el cliente: el id del token, nunca el secreto. Un clon de Git es la acción git.clone. Una inserción es git.push, y metadata.refs enumera cada referencia que creó, actualizó o eliminó.

Retención

Antigüedad del evento Dónde se almacena Cómo leerlo
De 0 a 90 días PostgreSQL, una partición por semana El registro de auditoría en la aplicación web, GET /v1/accounts/:accountId/audit, beeuni audit ls, los webhooks de auditoría y la exportación
De 90 a 365 días Un archivo de S3 con Object Lock (modo de cumplimiento) Solo mediante exportación: GET /v1/accounts/:accountId/audit/export o beeuni audit export
Más de 365 días Eliminado No disponible

Las semanas van del lunes a las 00 UTC al lunes siguiente a las 00 UTC. Una semana pasa al archivo cuando su último instante tiene 90 días de antigüedad, así que un evento pasa a estar disponible solo mediante exportación entre 90 y 97 días después de ocurrir. El archivo conserva un evento hasta 365 días después del final de su semana, por lo que se conserva entre 365 y 372 días en total. El bloqueo de retención impide que cualquier persona, incluido el personal de Beeuni, acorte ese plazo o lo elimine antes. La política de privacidad establece el mismo límite: los registros de la aplicación se conservan hasta 365 días.

La exportación devuelve el archivo y PostgreSQL como una sola lista, del más antiguo al más reciente, con los mismos filtros, los mismos campos y la misma paginación X-Audit-Next-Cursor. Ambas vías de lectura requieren el derecho auditAccess. Los eventos archivados incluyen los mismos campos que los actuales; session_sequence y los hashes de integridad están vacíos en los eventos escritos desde 2026-10 (consulta más arriba).

Acciones

Cada fila tiene un action llamado domain.resource.verb y un título que muestran la aplicación web y beeuni audit ls:

Acción Título Registrado por
gateway.key.revoke Clave de la pasarela LLM revocada Una solicitud a DELETE /v1/projects/:projectId/gateway/keys/:keyId.
iam.group.create Grupo creado La solicitud que creó el grupo. La fila incluye el nuevo grupo en after.
secret.consumer.used Secreto utilizado Un entorno aislado que leyó un secreto.
api.rate_limit.exceeded Límite de solicitudes de la API alcanzado Un limitador que rechazó una solicitud. metadata.limiter lo identifica.

Cada ruta de la API tiene exactamente una acción. La fila de una solicitud conserva la plantilla de ruta en metadata.http, nunca la ruta sin procesar, que puede contener un token. Si un controlador registra su propio evento para la solicitud, con el estado anterior y posterior, ese evento es la única fila de la solicitud. Una solicitud que no coincide con ninguna ruta es api.route.unmatched.

Filtra por un prefijo de acción: ?action=iam. en GET /v1/accounts/:accountId/audit, beeuni audit ls --action iam. o --action-prefix de un webhook de auditoría. Acciones del registro de auditoría enumera todas las acciones y sus títulos. Las filas escritas antes del 2026-09-24 tienen METHOD /template como acción y muestran los mismos títulos.

Los trabajos en segundo plano de Beeuni actúan sin una solicitud: vencen concesiones y permisos de túnel, eliminan ramas de sesión vencidas, activan implementaciones de App y mueven proyectos entre proveedores de entornos aislados. Sus filas tienen source: worker, y metadata.auth.worker identifica el trabajo, por ejemplo tunnel-cleanup o app-deployments. La fila de una implementación de App también identifica como iniciador al miembro que la inició.

Las solicitudes anónimas que mencionan uno de tus proyectos se registran en tu registro. Selecciona estas filas con actor_type=anonymous. Las filas anónimas tienen un límite de frecuencia en cada proceso de la API, así que una avalancha de ellas no puede desplazar las filas atribuidas. No se registran las comprobaciones de estado, las solicitudes previas de CORS ni el tráfico anónimo a una App implementada.

Facturación

Free incluye un proyecto y 20 $ en créditos iniciales, válidos durante 30 días desde su recepción. Desde el siguiente período recibes 2 $ al mes, sin acumulación. Los créditos cubren el funcionamiento del ordenador y los modelos oficiales.

La oferta inicial se concede una sola vez por cuenta personal. Quienes recibieron los antiguos 2 $ obtienen la diferencia de 18 $; quienes nunca los recibieron obtienen 20 $. Crear otro equipo o proyecto no concede la oferta de nuevo. Los créditos comprados se guardan por separado y no se eliminan al caducar o renovarse los créditos gratuitos.

La facturación se aplica a nivel de cuenta y cubre todos los proyectos de la cuenta. Beeuni ofrece un plan gratuito, un plan Pro y un plan Team por asiento, cada uno con acceso a modelos y créditos propios. Usar tu propia clave de modelo no hace que el uso sea gratuito: Beeuni sigue cobrando una tarifa de plataforma, salvo en el plan gratuito.

¿Te ha resultado útil esta página?