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