Usando o Atlas Data Federation para controlar o acesso ao seu nó de análise
Avalie esse Artigo
Os conjuntos de réplicas do MongoDB, os nós de análise e as preferências de leitura são ferramentas poderosas que podem ajudá-lo a garantir a alta disponibilidade, otimizar o desempenho e controlar como seus aplicativos acessam e consultam dados em um MongoDB database. Este blog abordará como usar o Atlas Data Federation para controlar o acesso ao seu nó de análise, personalizar preferências de leitura e definir conjuntos de tags para uma experiência de dados mais contínua e segura.
O MongoDB implantado em conjuntos de réplicas é uma estratégia para obter alta disponibilidade. Essa estratégia fornece failover automático e redundância de dados para seus aplicativos. Um conjunto de réplicas é um grupo de MongoDB Server que contém as mesmas informações, com um servidor designado como nó primário e os outros como nós secundários.
O nó primário é o líder de um conjunto de réplicas e é o único que pode receber operações de gravação, enquanto os nós secundários, por outro lado, replicam continuamente os dados do nó primário e podem ser usados para servir operações de leitura. Se o nó primário cair, um dos secundários poderá ser promovido a primário, permitindo que o conjunto de réplicas continue a operar sem tempo de inatividade. Isso geralmente é chamado de failover automático. Nesse caso, o novo primário é escolhido por meio de um processo de eleição "" , que envolve os nós no conjunto de réplicas votando no novo primário.
No entanto, em alguns casos, você pode não querer que seu nó secundário se torne o nó primary em seu conjunto de réplicas. Por exemplo, imagine que você tenha um nó primário e dois nós secundários em seu cluster de banco de dados. O nó primário é responsável por lidar com todas as operações de gravação e os nós secundários são responsáveis por lidar com as operações de leitura. Agora, suponha que você tenha uma consulta pesada que verifica uma grande quantidade de dados por um longo período de tempo em um dos nós secundários. Essa consulta exigirá que o nó secundário faça muito trabalho porque ele precisa examinar uma grande quantidade de dados para encontrar os resultados relevantes. Se o primário falhar enquanto essa query estiver em execução, o nó secundário que está executando a query poderá ser promovido a primário. No entanto, como o nó está ocupado executando a query pesada, ele pode ter dificuldade em lidar com a carga adicional de operações de gravação agora que é o primary. Como resultado, o desempenho do banco de dados pode ser prejudicado, ou o nó recém-promovido pode falhar completamente.
Se um banco de dados executar operações complexas ou de longa execução, como ETL ou relatórios, convém isolar essas queries do restante da carga de trabalho operacional executando-as em nós de análise que são completamente dedicados a esse tipo de operação.
Os nós analíticos são um tipo de nó secundário em um conjunto de réplicas do MongoDB que podem ser designados para lidar com cargas de trabalho especiais somente leitura e, o que é importante, não podem ser promovidos a primários. Eles podem ser dimensionados de forma independente para lidar com consultas analíticas complexas que envolvem grandes quantidades de dados. Quando você descarrega cargas de trabalho de leitura intensiva do nó primário em um conjunto de réplicas do MongoDB, você está direcionando as operações de leitura para outros nós no conjunto de réplicas, em vez de para o nó primário. Isso pode ajudar a reduzir a carga no nó primário e garantir que ele não fique sobrecarregado.
Para usar nós de análise, você deve configurar seu cluster com nós adicionais que são designados como "Analytic Nodes." Isso é feito no fluxo de configuração de configuração do cluster. Em seguida, para que seu aplicativo cliente utilize os nós analíticos, você deve utilizar conjuntos de tags ao se conectar. A utilização desses conjuntos de tags permite direcionar todas as operações de leitura para os nós de analítica.
As read preferences no MongoDB permitem que você controle a qual nó, dentro de um cluster padrão, você está se conectando e do qual deseja ler.
O MongoDB oferece suporte a vários tipos de read preference que você pode usar para especificar qual membro de um conjunto de réplicas deseja ler. Aqui estão os tipos de preferência de leitura mais usados:
- Primário: as operações de leitura são enviadas para o nó primário. Esta é a preferência de leitura padrão.
- PrimaryPreferred: as operações de leitura são enviadas para o nó primário, se ele estiver disponível. Caso contrário, eles serão enviados para um nó secundário.
- Secundário: As operações de leitura são enviadas para um nó secundário.
- SecondaryPreferred: as operações de leitura são enviadas para um nó secundário, se houver um disponível. Caso contrário, eles serão enviados para o nó primário.
- Mais próximo: as operações de leitura são enviadas ao membro do conjunto de réplicas com a menor latência de rede, independentemente de ser o nó primário ou secundário.
* É importante observar que as read preferences são usadas apenas para operações de leitura, não para operações de gravação.
Os conjuntos de tags permitem controlar ainda mais detalhes sobre o nó que você lê. Os conjuntos de tags MongoDB são uma forma de identificar nós específicos em um conjunto de réplicas. Você pode pensar neles como rótulos. Isso permite que o aplicativo cliente de chamada especifique quais nós em um conjunto de réplicas você deseja usar para operações de leitura, com base nas tags que foram aplicadas a eles.
Os clusters do MongoDB Atlas são configurados automaticamente com conjuntos de tags predefinidos para diferentes tipos de membros, dependendo de como você configurou seu cluster. Você pode usar essas tags de conjunto de réplicas predefinidas para direcionar consultas de aplicativos específicos para os tipos de nós e regiões desejados. Aqui estão alguns exemplos:
- Provedor: Fornecedor de serviços em nuvem no qual o nó é provisionado
- {"provedor" : "AWS"}
- {"provedor" : "GCP"}
- {"provedor" : "AZURE"}
- Região: região da nuvem na qual o nó reside
- {"region" : "US_EAST_2"}
- Node: Node type
- {"nodeType" : "ANALYTICS"}
- {"nodeType" : "READ_ONLY"}
- {"nodeType" : "ELECTABLE"}
- Tipo de carga de trabalho: Tag para distribuir sua carga de trabalho uniformemente entre seus nós não analíticos (elegíveis ou somente leitura).
- {"workloadType" : "OPERATIONAL"}
As preferências de leitura e os conjuntos de tags podem ser úteis para controlar qual nó é utilizado para uma consulta específica. No entanto, eles podem não ser suficientes por si só para proteger contra certos tipos de riscos ou erros. Por exemplo, se você estiver preocupado com o fato de outros usuários ou desenvolvedores acessarem acidentalmente o nó primário do cluster, as preferências de leitura e os conjuntos de tags podem não fornecer proteção suficiente, pois alguém com um usuário de banco de dados pode esquecer de definir a preferência de leitura ou optar por não usar um conjunto de tags. Nesse caso, talvez você queira usar medidas adicionais para garantir que determinados usuários ou aplicativos tenham acesso apenas a nós específicos do cluster.
O MongoDB Atlas Data Federation pode ser usado como uma visualização sobre seus dados, personalizada para as necessidades específicas do usuário ou do aplicativo. Você pode criar usuários de banco de dados no Atlas que são provisionados apenas para se conectar a clusters específicos ou instâncias de bancos de dados federados. Assim, quando você fornecer os pontos de extremidade para as instâncias do banco de dados federado e os usuários de banco de dados necessários, poderá ter certeza de que o usuário final só poderá se conectar aos nós aos quais você deseja que ele tenha acesso. Isso pode ajudar a " a bloquear " um usuário ou aplicativo em um nó específico, permitindo que eles controlem melhor quais dados estão acessíveis a eles e garantindo que seus dados sejam acessados de forma segura e protegida.
O Atlas Data Federation é um mecanismo de consulta sob demanda que permite consultar, transformar e mover dados entre várias fontes de dados, como se estivessem todos no mesmo local e formato. Com o Atlas Data Federation, você pode criar collections virtuais que se referem às suas collections subjacentes do Atlas cluster e bloqueá-las em uma read preference ou conjunto de tags específico. Em seguida, você pode restringir os usuários do banco de dados para que só possam se conectar à instância do banco de dados federado, dando aos parceiros da sua empresa acesso dinâmico aos dados do cluster, sem ter nenhum risco de que eles se conectem ao principal. Isso permite isolar diferentes cargas de trabalho e reduzir o risco de contenção entre elas.
Por exemplo, você pode criar um endpoint separado para queries de analítica que seja bloqueado para acesso somente leitura e restringir queries para serem executadas somente em nós de analítica, continuando a usar a conexão do cluster para suas queries de aplicativos operacionais. Isso permitiria que você executasse consultas de análise com acesso a dados em tempo real sem afetar o desempenho do cluster.
Para fazer isso, você criaria uma coleção virtual, escolheria a origem de uma coleção de clusters específica e especificaria um conjunto de tags para o nó de análise. Em seguida, um usuário pode consultar sua instância de banco de dados federado, sabendo que ela sempre consultará o nó de análise e que seu cluster primário não será afetado. A única maneira de fazer uma alteração seria na configuração de armazenamento da instância do banco de dados federado, que você pode evitar, garantindo que nenhum erro ocorra.
Além de restringir a instância do banco de dados federado para ler apenas a partir do nó de análise, o gerenciador de banco de dados também pode colocar restrições no usuário para ler apenas a partir dessa instância específica do banco de dados federado. Agora, além de ter uma string de conexão para a instância do banco de dados federado que nunca consultará o nó primário, você também pode garantir que os usuários recebam as funções corretas e que não possam se conectar acidentalmente à string de conexão do cluster.
Ao bloquear um nó de análise para acesso somente leitura, você pode proteger suas cargas de trabalho mais confidenciais e melhorar a segurança enquanto ainda compartilha o acesso aos seus dados mais valiosos.
As etapas a seguir permitirão que você defina suas preferências de leitura no Atlas Data Federation para usar o nó analítico:
Etapa 1: Faça login no MongoDB Atlas.
Etapa 2: Selecione a opção Data Federation na navegação à esquerda.
Etapa 3: clique em "set up manually " no menu suspenso "criar novo banco de dados federado" no canto superior direito da interface do usuário.
Etapa 4: Repita esta etapa para cada uma das suas fontes de dados. Selecione o conjunto de dados para sua instância do banco de dados federado na seção Fontes de dados.
4a. Selecione seu cluster e coleção.
- Selecione o seu "Read Preference Mode. " Data Federation habilita 'mais próximo' como seu padrão.
4b. Clique em “Cluster Read Preference.”
- Selecione o seu "Read Preference Mode. " Data Federation habilita 'mais próximo' como seu padrão.
- Digite seus TagSets. Por exemplo:
- [ [ { "nome": "nodeType", "valor": "ANALYTICS" } ] ]
4c. Selecione “Next.”
Etapa 5: Mapeie seus conjuntos de dados do painel Fontes de Dados à esquerda para o painel Instância de Banco de Dados Federado à direita.
Etapa 6: Clique em "Save " para criar a instância do banco de dados federado.
*Para se conectar à sua instância de banco de dados federado, continue seguindo as instruções descritas em nossa documentação.
Observação: se você tiver muitos bancos de dados e coleções em seu cluster subjacente, poderá usar nosso “wildcard syntax” junto com a preferência de leitura para expor facilmente todos os bancos de dados e coleções do cluster sem enumerar cada um. Isso pode ser definido depois que você tiver configurado a read preference acessando a visualização do editor JSON.
1 "databases" : [ 2 { 3 "name" : "*", 4 "collections" : [ 5 { 6 "name" : "*", 7 "dataSources" : [ 8 { 9 "storeName" : "<atlas-store-name>" 10 } 11 ] 12 } 13 ] 14 } 15 ]
Você deve criar um usuário do banco de dados para acessar sua implantação. Por motivos de segurança, o Atlas exige que os clientes autentiquem-se como usuários de banco de dados MongoDB para acessar instâncias de banco de dados federadas. Para adicionar um usuário de banco de dados ao seu cluster, execute as seguintes etapas:
Etapa 1: Na seção Segurança do painel de navegação à esquerda, clique em "Database Access. ".
1a. Certifique-se de que ele mostre a exibição da guia "Database Users ".
1b. Clique em “+ Add New Database User.”
Etapa 2: selecione "Password " e insira as informações do usuário.
Etapa 3: Atribua privilégios de usuário, como acesso de leitura/escrita.
3a. Selecione uma função integrada no menu suspenso “Built-in Role”. Você pode selecionar uma função integrada por usuário do banco de dados dentro da IU do Atlas. Se você excluir a opção padrão, você poderá clicar em “Add Built-in Role” para selecionar uma nova função integrada.
3b. Se você tiver alguma funções personalizadas definidas, você pode expandir a seção “Custom Roles” e selecionar uma ou mais funções no menu suspenso “Custom Roles”. Clique em “Add Custom Role” para adicionar mais funções personalizadas. Você também pode clicar no link “Custom Roles” para ver as funções personalizadas para seu projeto.
3C. Expanda a seção "Specific Privileges " e selecione um ou mais privilégios do menu suspenso "Specific Privileges ". Clique em "Add Specific Privilege " para adicionar mais privilégios. Isso atribui privilégios específicos do usuário em bancos de dados e collection individuais.
Etapa 4: Opcional: Especifique os recursos no projeto que o usuário pode acessar.
Por padrão, os usuários do banco de dados podem acessar todos os clusters e instâncias do banco de dados federado no projeto. Você pode restringir os usuários do banco de dados a terem acesso a clusters específicos e instâncias de banco de dados federado fazendo o seguinte:
- Alterne “Restrict Access to Specific Clusters/Federated Database Instances” para “ON.”
- Selecione os clusters e as instâncias de banco de dados federados aos quais conceder acesso ao usuário na lista “Grant Access To”.
Etapa 5: Opcional: salvar como usuário temporário.
Etapa 6: Clique em "Add User. "
Seguindo estas etapas, você pode controlar o gerenciamento de acesso utilizando o nó de analítica com o Atlas Data Federation. Essa pode ser uma maneira útil de garantir que apenas usuários autorizados tenham acesso ao nó de análise e que os dados no nó sejam protegidos.
No geral, definir preferências de leitura e usar nós de análise pode ajudar você a gerenciar melhor o acesso aos seus dados e melhorar o desempenho e a escalabilidade do seu aplicativo.
Para saber mais sobre oAtlas Data Federation e se ele é a solução certa para você, confira nossa documentação e tutoriais.