Skip to content

Segurança

Mecanismos de segurança, modelo de permissões e aplicação CRUD/FLS.

Modelo de Permissões

Permission Sets

PERMISSION SETS FTS_App_Access (Administradores) App: FlexibleTeamShare Guias: todas visíveis Apex: todas as classes Objetos: CRUD completo + MAR Team_Sharing_Config: CRUD FTS_Data_Access (Usuários finais) ObjectTeamMember__c: CRUD Team_Sharing_Config__c: Read Apex: apenas controladores Sem View/Modify All Records
Permission SetPúblicoCapacidades
FTS_App_AccessAdministradoresAcesso completo ao aplicativo, todas as abas, todas as classes Apex, CRUD completo + Modify All Records em objetos, Team_Sharing_Config CRUD
FTS_Data_AccessUsuários FinaisObjectTeamMember__c CRUD, Team_Sharing_Config__c Read, apenas classes Apex controller, sem View/Modify All Records

Lógica de Controle de Acesso

Quem pode gerenciarmembros da equipe? Não Não Não Sim Sim Sim Administradordo sistema? Proprietáriodo registro? Membro da equipe comRole = Managerou Owner? PERMITIDO NEGADO

O método isCurrentUserManager() determina quem pode gerenciar membros da equipe:

  1. System Administrators — sempre permitido
  2. Record Owners — sempre permitido
  3. Membros da equipe com função Manager/Owner — permitido
  4. Todos os outros — negado

Aplicação CRUD/FLS

VERIFICAÇÕES CRUD/FLS Create isCreateable() Update isUpdateable() +isCurrentUserManager() Delete isDeletable() +isCurrentUserManager() Read WITH USER_MODE MODO DE EXECUÇÃO Aplicado no controlador Acesso elevado(without sharing) Respeita OWD/Sharing
OperaçãoVerificação de SegurançaImplementação
Create Team MemberSchema.sObjectType.ObjectTeamMember__c.isCreateable()Aplicado no controller
Update Team MemberisUpdateable() + isCurrentUserManager()Acesso elevado (without sharing) após autorização
Delete Team MemberisDeletable() + isCurrentUserManager()Acesso elevado (without sharing) após autorização
Read Team MembersWITH USER_MODE / sharing modelRespeita OWD/sharing

Validação de Entrada

EntradaValidaçãoLocalização
recordIdNão em branco, formato de ID Salesforce válidoController
userIdNão em branco, ID de User válidoController
accessLevelNão em branco, valor de picklist válidoController + Picklist
roleNão em branco, valor de picklist válidoController + Picklist
endDateDeve ser data futura ou nullController + Validation Rule
objectApiNameDerivado do ID Salesforce (não entrada do usuário)Controller

Validation Rules

RegraObjetoDescrição
End_Date_Cannot_Be_PastObjectTeamMember__cImpede definir data de término no passado

Mapeamento de Nível de Acesso

ObjectTeamMember__cAccess_Level__c Read Only Read/Write [Object]ShareAccessLevel Read Edit

Visão Geral Completa de Segurança

PERMISSION SETS FTS_App_AccessAdministradores FTS_Data_AccessUsuários finais CONTROLE DE ACESSO System Admin Record Owner Papel Manager/Owner MODELO DE COMPARTILHAMENTO ObjectTeamMember__Share [Object]Share NÍVEIS DE ACESSO Read Only → Read Read/Write → Edit

Melhores Práticas de Segurança Implementadas

ControleStatusImplementação
Verificações CRUD em controllersImplementadoisAccessible(), isCreateable(), isUpdateable(), isDeletable()
Aplicação FLSImplementadoPermission Sets controlam acesso a campos
Prevenção de injeção SOQLImplementadoBind variables para entrada de usuário, whitelist para nomes de objeto
Sharing modelImplementadowith sharing em controllers, without sharing apenas onde documentado
Validação de entradaImplementadoVerificações null, validação de formato, regras de negócio
Prevenção XSSImplementadoFramework LWC trata codificação de saída

Segurança de Integração Externa

VerificaçãoResultado
HTTP CalloutsNenhum — pacote não faz chamadas externas
Named CredentialsNão usado
External ObjectsNão usado
Remote Site SettingsNão necessário
CSP ViolationsPass — sem violações de Content-Security-Policy