Skip to content

Separação de três responsáveis

O Doggy implementa o modelo de segurança de separação de três responsáveis, em conformidade com os padrões de classificação de segurança da informação da China, controlando as permissões através do ThreeOfficersVoter.

Visão geral

A separação de três responsáveis divide as permissões de administração do sistema em três papéis independentes, com verificações de permissões granulares através de App\Security\Voter\ThreeOfficersVoter:

PapelÂmbito de permissões
ROLE_SYS_ADMINConfiguração do sistema, gestão de utilizadores
ROLE_SEC_ADMINConfiguração de políticas de segurança
ROLE_AUDITORVisualização de registos de auditoria

Os três responsáveis são independentes e controlam-se mutuamente; nenhum papel individual consegue controlar o sistema por completo.

Definição de permissões do Voter

php
// src/Security/Voter/ThreeOfficersVoter.php
class ThreeOfficersVoter extends Voter
{
    public const SYSTEM_CONFIG = 'SYSTEM_CONFIG';  // Administrador de sistema
    public const USER_MANAGE   = 'USER_MANAGE';     // Responsável pela segurança
    public const AUDIT_VIEW    = 'AUDIT_VIEW';       // Auditor de segurança
    public const BUSINESS_DATA = 'BUSINESS_DATA';   // Utilizador normal aceder a dados de negócio
}

Responsabilidades dos papéis

Administrador de sistema (ROLE_SYS_ADMIN)

  • Gestão das contas de utilizador
  • Manutenção da configuração do sistema (permissão SYSTEM_CONFIG)
  • Gestão da implementação de aplicações
  • Não pode consultar registos de auditoria
  • Não pode modificar políticas de segurança

Responsável pela segurança (ROLE_SEC_ADMIN)

  • Configuração de políticas de palavras-passe
  • Gestão de políticas de permissões (permissão USER_MANAGE)
  • Tratamento de incidentes de segurança
  • Não pode gerir contas de utilizador
  • Não pode consultar registos de auditoria

Auditor de segurança (ROLE_AUDITOR)

  • Consulta de todos os registos de operações (permissão AUDIT_VIEW)
  • Geração de relatórios de auditoria
  • Deteção de comportamentos anómalos
  • Não pode modificar nenhuma configuração do sistema
  • Não pode gerir utilizadores

Inicialização

Os três papéis de administrador são inicializados com o comando InitOfficersCommand:

bash
php bin/console app:init-officers

Após a inicialização, são criadas três contas predefinidas.

Contas predefinidas

PapelNome de utilizadorPalavra-passe inicial
Administrador de sistemaadminadmin123
Responsável pela segurançasecuritysecurity123
Auditor de segurançaauditorauditor123

⚠️ Em ambiente de produção, todas as palavras-passe predefinidas devem ser alteradas.

Acesso a dados de negócio

Os utilizadores autenticados normais (ROLE_USER) podem aceder normalmente aos dados de negócio através da permissão BUSINESS_DATA, mas não podem executar operações de administração.

Código aberto sob MIT | Copyright © 2026 Doggy