Jerarquía organizacional
Una instancia contiene organizaciones de nivel superior. Una organización puede contener un nivel de SubOrg; cada organización sigue siendo un límite de política, membresía, marca, RBAC y aislamiento.
Una OrgUnit es un departamento o equipo dentro de una organización. Nunca cambia TenantContext, emisor, notificaciones de token ni el límite de SubOrg de un nivel.
- Los árboles OrgUnit admiten una profundidad máxima de ocho.
- Cada miembro puede tener una OrgUnit principal y ubicaciones adicionales.
- El administrador activo más cercano en la cadena ancestral de OrgUnit es el primer candidato a aprobador de solicitudes de acceso.
Proyectos y política de acceso
Aplicaciones de grupo de proyectos y roles de autorización. La access_policy por proyecto controla solo los usuarios de la misma organización sin una UserGrant efectiva; La autorización de ProjectGrant entre organizaciones no se ve afectada.
| Política del proyecto | Comportamiento en la misma organización | Ruta de autoservicio |
|---|---|---|
| Abrir | Permitido sin UserGrant. | No se necesita ninguna solicitud de acceso. |
| Restringido | Denegado; un administrador otorga acceso directamente. | No hay ninguna solicitud de autoservicio disponible. |
| Se requiere aprobación | Denegada hasta que se apruebe una AccessRequest. | El usuario envía una solicitud de acceso. |
Ciclo de vida de la solicitud de acceso
AccessRequest pasa de pendiente a aprobada, rechazada, cancelada o caducada. Cada resultado es terminal y las solicitudes pendientes caducan lentamente después de 14 días.
La aprobación crea una UserGrant rastreable en la misma transacción. El solicitante no puede aprobar su propia solicitud; la resolución pasa del gerente de la OrgUnit a los gerentes de proyectos y organizaciones.
| Método | Ruta | Propósito | Alcance requerido |
|---|---|---|---|
GET, POST |
/auth/access-requests |
Cree y enumere las solicitudes del usuario actual. | session |
POST |
/auth/access-requests/:id/cancel |
Cancelar la solicitud pendiente del usuario actual. | session |
GET |
/auth/access-approvals |
Enumere las solicitudes en espera de la aprobación del usuario actual. | session |
POST |
/auth/access-approvals/:id/{approve|deny} |
Aprobar o rechazar una solicitud pendiente asignada al usuario actual. | session |
GET |
/v1/organizations/:orgId/access-requests |
Enumerar solicitudes dentro de una organización. | access-requests:read |
GET |
/v1/organizations/:orgId/units |
Lea el árbol de unidades organizativas. | org-units:read |
POST, PATCH, DELETE, PUT |
/v1/organizations/:orgId/units/* |
Cree, actualice, mueva, archive y administre miembros de unidades. | org-units:write |
Límites de seguridad
- Cada consulta de OrgUnit y AccessRequest tiene como alcance
tenant_idyorg_id. Los identificadores entre organizaciones o entre inquilinos devuelven 404 sin revelar su existencia. - La membresía y el acceso al proyecto son independientes: las invitaciones se unen a una organización, mientras que AccessRequest otorga a un miembro activo existente acceso a un proyecto.
- SCIM aprovisiona usuarios y membresías, pero no asigna grupos de directorios a OrgUnits o roles de proyecto en la implementación actual.
- La API de administración utiliza paginación del cursor y claves de API compartidas o protecciones de administrador de organización. No reutiliza las rutas comerciales de los usuarios finales.