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_ADMIN | Configuração do sistema, gestão de utilizadores |
ROLE_SEC_ADMIN | Configuração de políticas de segurança |
ROLE_AUDITOR | Visualizaçã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
// 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:
php bin/console app:init-officersApós a inicialização, são criadas três contas predefinidas.
Contas predefinidas
| Papel | Nome de utilizador | Palavra-passe inicial |
|---|---|---|
| Administrador de sistema | admin | admin123 |
| Responsável pela segurança | security | security123 |
| Auditor de segurança | auditor | auditor123 |
⚠️ 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.