Skip to content

Modelo de tres funcionarios

Doggy implementa el modelo de seguridad de tres funcionarios conforme a las normas de seguridad de la información chinas (等保), con control de permisos mediante ThreeOfficersVoter.

Descripción general

El modelo de tres funcionarios separa los permisos de administración del sistema en tres roles independientes, con comprobaciones de permisos de grano fino mediante App\Security\Voter\ThreeOfficersVoter:

RolAlcance de permisos
ROLE_SYS_ADMINConfiguración del sistema, gestión de usuarios
ROLE_SEC_ADMINConfiguración de políticas de seguridad
ROLE_AUDITORConsulta de registros de auditoría

Los tres funcionarios son mutuamente independientes y se controlan entre sí: ningún rol por sí solo puede controlar completamente el sistema.

Definición de permisos del Voter

php
// src/Security/Voter/ThreeOfficersVoter.php
class ThreeOfficersVoter extends Voter
{
    public const SYSTEM_CONFIG = 'SYSTEM_CONFIG';  // Administrador del sistema
    public const USER_MANAGE   = 'USER_MANAGE';     // Oficial de seguridad
    public const AUDIT_VIEW    = 'AUDIT_VIEW';       // Auditor de seguridad
    public const BUSINESS_DATA = 'BUSINESS_DATA';   // Acceso de los usuarios normales a los datos de negocio
}

Responsabilidades de los roles

Administrador del sistema (ROLE_SYS_ADMIN)

  • Gestión de cuentas de usuario
  • Mantenimiento de la configuración del sistema (permiso SYSTEM_CONFIG)
  • Gestión del despliegue de aplicaciones
  • No puede consultar los registros de auditoría
  • No puede modificar las políticas de seguridad

Oficial de seguridad (ROLE_SEC_ADMIN)

  • Configuración de políticas de contraseñas
  • Gestión de políticas de permisos (permiso USER_MANAGE)
  • Tratamiento de incidentes de seguridad
  • No puede gestionar cuentas de usuario
  • No puede consultar los registros de auditoría

Auditor de seguridad (ROLE_AUDITOR)

  • Consulta de todos los registros de operaciones (permiso AUDIT_VIEW)
  • Generación de informes de auditoría
  • Detección de comportamientos anómalos
  • No puede modificar ninguna configuración del sistema
  • No puede gestionar usuarios

Inicialización

Las tres cuentas de administrador se inicializan mediante el comando InitOfficersCommand:

bash
php bin/console app:init-officers

Tras la inicialización se crean tres cuentas por defecto.

Cuentas por defecto

RolNombre de usuarioContraseña inicial
Administrador del sistemaadminadmin123
Oficial de seguridadsecuritysecurity123
Auditor de seguridadauditorauditor123

⚠️ En producción es obligatorio cambiar todas las contraseñas por defecto.

Acceso a los datos de negocio

Los usuarios autenticados normales (ROLE_USER) pueden acceder con normalidad a los datos de negocio mediante el permiso BUSINESS_DATA, pero no pueden realizar operaciones de administración.

Código abierto bajo MIT | Copyright © 2026 Doggy