Menu Docs
Página inicial do Docs
/ /
Serviços Atlas App
/

Guia de permissões do Edge Server - Visualização

Nesta página

  • Permissões Edge Server
  • Todos os servidores de borda
  • Um Edge Serverespecífico
  • Permissões do cliente
  • Permissões de nível de campo

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:

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.

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
}

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 .

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
}

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
}

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 o facility_id corresponde à instância user_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 o patient_id é o user_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.

Documentos que mostram dados diferentes disponíveis para três funções diferentes - um doente, um especialista em cobrança e um médico.
clique para ampliar

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.

Voltar

Usar APIs MongoDB com Edge Server