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:

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.