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:
| Rol | Alcance de permisos |
|---|---|
ROLE_SYS_ADMIN | Configuración del sistema, gestión de usuarios |
ROLE_SEC_ADMIN | Configuración de políticas de seguridad |
ROLE_AUDITOR | Consulta 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
// 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:
php bin/console app:init-officersTras la inicialización se crean tres cuentas por defecto.
Cuentas por defecto
| Rol | Nombre de usuario | Contraseña inicial |
|---|---|---|
| Administrador del sistema | admin | admin123 |
| Oficial de seguridad | security | security123 |
| Auditor de seguridad | auditor | auditor123 |
⚠️ 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.