Guia de permissões do Edge Server - Visualização
Nesta página
O acesso a dados do Edge Server é regido pela interseção de:
Permissões baseadas em função
Autenticação de usuários
A query usada para sincronizar dados com a instância do Edge Server
Se estiver usando o Atlas Device SDK, a query usada para sincronizar dados com o cliente
Edge Server oferece suporte a permissões baseadas em funções no nível do documento e do campo. Esta página explora a configuração de permissões de cliente e Edge Server de alto nível e fornece exemplos para ilustrar os princípios básicos de permissões.
Documentação relacionada:
Se você é novo nas permissões baseadas em funções no Atlas, obtenha uma visão geral do mecanismo de permissões em Permissões baseadas em funções.
Para obter informações sobre como definir funções e permissões, consulte Definir funções e permissões.
Edge Server usa o Device Sync para sincronizar dados entre as instâncias do Edge Server e do Atlas. As roles de servidor e cliente de Edge Server devem usar permissões compatíveis com o Device Sync.
Permissões Edge Server
Uma instância do Edge Server é um usuário, semelhante a outras conexões de cliente de entrada. O Edge Server deve autenticar com Atlas e tem suas próprias permissões para determinar quais dados a instância pode ler e escrever.
Você pode configurar as regras para se aplicarem de forma geral a todos os servidores de borda em seu serviço. Ou você pode ficar mais granular com regras para especificar um subconjunto de dados que a instância do Edge Server pode ler e escrever.
Todos os servidores de borda
Você pode criar um papel que se aplica a todas as instâncias do Edge Server especificando uma expressão de regra do applyWhen
onde o %%user_type é edge
:
{ "name": "edgeServerRole", "apply_when": { "%%user.type": "edge" }, ...customize the permissions for all Edge Server instances... }
Por exemplo, se seu conjunto de dados não contiver dados confidenciais, como um serviço meteorológico, você poderá adicionar uma função informando que os servidores de borda podem ler e gravar todos os dados:
{ "name": "readAndWriteAll", "apply_when": { "%%user.type": "edge" }, "document_filters": { "read": true, "write": true }, "insert": true, "delete": true, "search": true, "read": true, "write": true }
Um Edge Serverespecífico
Em alguns casos, sua lógica de negócios significa que você deseja sincronizar apenas um subconjunto dos dados com uma determinada instância do Edge Server . Por exemplo, você pode querer restringir um Edge Server a um subconjunto dos dados quando:
O conjunto de dados contém PII ou outros dados confidenciais que não devem ser sincronizados com todas as instâncias do Edge Server
É um grande conjunto de dados que você não deseja sincronizar com dispositivos com restrição de recursos
O host do Edge Server é um hardware não confiável que deve ter os dados mínimos necessários para concluir uma tarefa
Os dados são limitados por região para fins legais ou regulatórios, e você deseja sincronizar somente os dados relevantes para a região do Edge Server
Você pode usar permissões para filtrar o acesso de uma instância específica a um subconjunto dos dados. Ou você pode usar permissões para configurar uma instância do Edge Server para ler dados, mas não para registrá-los.
Como cada instância do Edge Server é um usuário, você pode usar o user_id
do Edge Server para configurar permissões para uma determinada instância. Você pode criar uma função que restringe os dados que sincronizam com uma instância específica do Edge Server usando uma expressão de regra em que %%user_id é o user_id
do Edge Server. Você pode obter a instância do Edge Server user_id
nos Detalhes da instância doEdge Server ou do endpoint Servidores de borda da lista de API de administrador .
Ler/gravar documentos
Você pode restringir uma instância do Edge Server para ler e escrever somente seus próprios documentos usando o user_id
.
Por exemplo, se uma instância do Edge Server representar uma consulta de saúde, talvez você só queira sincronizar os dados relevantes para os pacientes dessa consulta.
Neste exemplo, cada documento tem uma propriedade facility_id
cujo valor é o user_id
do Edge Server. Essa função significa que o Edge Server só pode ler e escrever documentos com um facility_id
correspondente ao seu próprio user_id
.
{ "name": "facilityItemsOnly", "apply_when": { "%%user.type": "edge" }, "document_filters": { "write": { "facility_id": "%%user.id" }, "read": { "facility_id": "%%user.id" }, }, "read": true, "write": true, "insert": true, "delete": true, "search": true }
Ler todos, Escreva seus próprios documentos
Você pode configurar uma instância do Edge Server para ler todos os dados, mas escrever somente seus próprios dados. Por exemplo, em um ambiente de varejo, uma instância do Edge Server pode representar um sistema de inventário de armazenamento. Você pode querer que a loja tenha a capacidade de fazer uma Atlas Search em todo o inventário de um item, mas apenas venda itens em seu próprio inventário.
{ "name": "readAllWriteOnlyStoreItems", "apply_when": { "%%user.type": "edge" }, "document_filters": { "write": { "store_id": "%%user.id" }, "read": true }, "read": true, "write": true, "insert": true, "delete": true, "search": true }
Permissões do cliente
Os clientes que se conectam a uma instância do Edge Server têm suas próprias permissões. Você pode pensar nas permissões de uma instância do Edge Server como um filtro entre os dados no Atlas e os dados que um cliente pode ler e escrever.
Em um ambiente de saúde semelhante ao exemplo de instância do servidor de borda acima, a instância do Edge Server só pode ler e gravar dados relevantes para suas próprias instalações. Uma segunda função pode restringir ainda mais as permissões para clientes conectados. Por exemplo, um doente na instalação só pode visualizar seus próprios dados.
Você os representa como funções independentes dentro da array roles
.
O mecanismo de regras avalia a expressão apply_when
de cada role na ordem em que você a especifica. A primeira função cuja expressão apply_when
avalia para true
se torna a função atribuída. Quando nenhuma função corresponde, o acesso é negado.
Neste exemplo, um banco de dados PatientRecords
possui uma coleção Visits
. As duas funções determinam quais documentos a instância do Edge Server pode sincronizar e quais documentos um cliente individual conectado à instância pode sincronizar:
A função
facilityItemsOnly
filtra itens que sincronizam com a instância do Edge Server . Os únicos itens sincronizados com a instalação são registros em que ofacility_id
corresponde à instânciauser_id
do Edge Server .A função
patientOwnRecordsOnly
filtra itens que podem ser sincronizados com um dispositivo cliente conectado. Os únicos itens que sincronizam com um cliente conectado são visitas em que opatient_id
é ouser_id
do cliente.
{ "collection": "Visits", "database": "PatientRecords", "roles": [ { "name": "facilityItemsOnly", "apply_when": { "%%user.type": "edge" }, "document_filters": { "write": { "facility_id": "%%user.id" }, "read": { "facility_id": "%%user.id" }, }, "insert": true, "delete": true, "search": true, "read": true, "write": true }, { "name": "patientOwnRecordsOnly", "apply_when": {}, "document_filters": { "write": { "patient_id": "%%user.id" }, "read": { "patient_id": "%%user.id" } }, "read": true, "write": true, "insert": true, "delete": true, "search": true } ] }
Importante
A ordem das funções é importante
Neste exemplo, a primeira entrada na array roles
é a função de Edge Server , cuja expressão apply_when
se aplica somente ao Edge Server. Quando o cliente está avaliando funções, a primeira função é avaliada como false
para o cliente, então ele passa para a próxima função. Se a primeira entrada fosse a role do cliente , com uma expressão apply_when
vazia, essa role seria avaliada como true
para o Edge Server. Como o user_id
do Edge Server nunca corresponderia a um patient_id
, nenhum documento seria sincronizado com o Edge Server.
Em uma configuração onde você tem muitos tipos diferentes de clientes que cada um deve ter acesso a um subconjunto dos dados, você pode definir muitas funções de cliente diferentes. Por exemplo, em um ambiente de saúde, você pode usar roles diferentes para:
Doentes: forneça acesso apenas aos seus próprios registos médicas e consulte informações de faturação de endereço.
especialistas em cobrança: forneça acesso a todas as informações de endereço e cobrança de pacientes, mas não a registros médicas.
Métodos de consulta: forneça acesso a todos os registros médicas de pacientes, mas não a informações de endereço e cobrança.
Permissões de nível de campo
Edge Server também oferece suporte a permissões em nível de campo, que determinam o acesso de leitura ou gravação a campos específicos em um documento. Você pode definir permissões de campo para a instância do Edge Server , para os clientes que se conectam à instância do Edge Server ou a ambos.