Segurança
O controle de acesso aos dados contidos no sistema é realizado por meio da autenticação e autorização de usuários. Usuários são pessoas ou sistemas externos que podem utilizar o sistema e a eles são atribuídas uma credencial de acesso que consiste de um nome único e uma senha.
A autenticação dos usuários pode ser realizada de duas formas:
- Autenticação básica: utilizando o nome do usuário e sua senha.
- Tokens de autorização: mecanismo no qual o usuário cria uma credencial alternativa que pode ser utilizada por outros sistemas para acessar os dados em seu nome.
Uma vez que um usuário foi autenticado, o sistema implementa um controle de autorização por meio dos seguintes conceitos:
- Permissões: definem os privilégios aos dados, processos e relatórios do sistema.
- Políticas de segurança: privilégios que se aplicam de uma forma geral no sistema.
- Escopos de autorização: definem ou restringem o escopo de utilização das APIs do sistema.
Usuários podem ser associados a grupos e papéis a fim de simplificar a gestão da segurança do sistema. Permissões e escopos de autorização atribuídos aos grupos e papéis são herdados por todos os usuários associados a eles, diminuindo assim a quantidade de configurações necessárias.
Aos usuários, ou indiretamente aos seus grupos e papéis, podem ser atribuídas permissões. No modelo de segurança do sistema, o termo permissão tem um significado restrito: são chamadas de permissões as atribuições de privilégios, como de Ver, Modificar, Inserir e Excluir, aos dados e aos processos e relatórios do sistema. Para o sistema a atribuição de permissões se restringe ao modelo de classes de dados e para alguns tipos de arquivos da Virtual File System. Via de regra, não há como atribuir permissões para registros específicos de uma classe de dados, apenas para todos os registros dela.
O modelo de segurança do sistema é implementado por meio de APIs que são disponibilizadas para o desenvolvedor da plataforma. Cabe ao desenvolvedor a decisão de determinar quando e como deve ser realizada a validação das permissões do usuário. Via de regra, o sistema não valida de forma automática as permissões, ele apenas disponibiliza as APIs que simplificam o controle de autenticação e autorização dos usuários. Exemplo:
// Todos os registros de uma classe sem validar o acesso do usuário
ds = classes.getCachedDataSet(-1898145089 /* Servidores */);
// Apenas os registros que podem ser visualizados pelo usuário autenticado na sessão
ds = classes.getCachedDataSet(-1898145089 /* Servidores */, session.userKey);
No caso das APIs HTTP, os desenvolvedores devem utilizar a propriedade
scope
para indicar os escopos de autorização requeridos no uso de uma determinada rota ou de um conjunto
de rotas. Uma vez configurado o escopo de uma rota, os usuários, incluindo sistemas de terceiros,
somente poderão acessá-la se o administrador associar o usuário, ou um dos seus grupos ou
papéis, ao escopo configurado.