Introdução ao mTLS da Apigee

O recurso mTLS do Apigee adiciona segurança às comunicações entre componentes no cluster do Edge para nuvem privada. Ele oferece uma maneira padrão do setor de configurar e instalar a malha de serviço. Ele é compatível com gerenciamento de pacotes e automação de configuração.

Visão geral da arquitetura

Para fornecer comunicações seguras entre componentes, o mTLS da Apigee usa uma malha de serviço que estabelece conexões TLS seguras e autenticadas mutuamente entre componentes.

A imagem a seguir mostra as conexões entre os componentes da Apigee que o mTLS da Apigee protege (in red). As portas mostradas na imagem são exemplos. Consulte Uso de portas para ver uma lista de intervalos que cada componente pode usar.

As portas indicadas com um "M" são usadas para gerenciar o componente e precisam estar abertas nele para acesso pelo servidor de gerenciamento.

Como você pode ver no diagrama acima, o mTLS da Apigee adiciona segurança às conexões entre a maioria dos componentes no cluster, incluindo:

Origem Destino
Servidor de gerenciamento Nós do roteador, MP, QPid, LDAP, Postgres, Zookeeper e Cassandra
Roteador Loopback; nós do Qpid, Zookeeper e Cassandra
processador de mensagens Loopback; nós do Qpid, Zookeeper e Cassandra
ZooKeeper e Cassandra Outros nós do Zookeeper e do Cassandra
Interface do Edge SMTP (somente para IdP externo)
Postgres Outros nós do Postgres, Zookeeper e Cassandra

Criptografia/descriptografia de mensagens

A malha de serviço mTLS da Apigee consiste em servidores Consul executados em cada nó do ZooKeeper no cluster e nos seguintes serviços do Consul em todos os nós do cluster:

  • Um proxy de saída que intercepta mensagens enviadas no nó do host. Esse serviço criptografa as mensagens enviadas antes de encaminhá-las ao destino.
  • Um proxy de entrada que intercepta mensagens recebidas no nó do host. Esse serviço descriptografa as mensagens recebidas antes de enviá-las ao destino final.

Por exemplo, quando o servidor de gerenciamento envia uma mensagem ao roteador, o serviço de proxy de saída intercepta a mensagem de saída, a criptografa e a envia ao roteador. Quando o nó do roteador recebe a mensagem, o serviço de proxy de entrada a descriptografa e a transmite ao componente do roteador para processamento.

Tudo isso acontece de maneira transparente para os componentes do Edge: eles não têm conhecimento do processo de criptografia e descriptografia realizado pelos serviços de proxy do Consul.

Além disso, o mTLS da Apigee usa o utilitário iptables, um serviço de firewall do Linux que gerencia o redirecionamento de tráfego.

Requisitos

Antes de instalar o mTLS do Apigee, seu ambiente precisa atender aos seguintes requisitos:

As seções a seguir descrevem cada um desses requisitos em detalhes.

Requisitos de topologia

O mTLS da Apigee exige que a topologia do seu ambiente inclua pelo menos três nós do Zookeeper. Como resultado, só é possível instalar o mTLS da Apigee em topologias que usam 5, 9, 12 (vários data centers) ou 13 nós. Para mais informações, consulte Topologias de instalação.

Utilitários/pacotes

O mTLS do Apigee exige que você tenha os seguintes pacotes instalados e ativados em cada máquina do cluster, incluindo a máquina de administração, antes de iniciar o processo de instalação:

Utilitário/pacote Descrição Posso remover após a instalação?
base64 Verifica os dados nos scripts de instalação.
gnu-bash
gnu-sed
gnu-grep
Usado pelo script de instalação e outras ferramentas comuns.
iptables Substitui o firewall padrão, firewalld.
iptables-services Fornece funcionalidade para o utilitário iptables.
lsof Usado pelo script de instalação.
nc Verifica rotas de iptables.
openssl Assina certificados localmente durante o processo inicial de bootstrap.

Durante a instalação, você também instala o pacote Consul na máquina de administração para gerar credenciais e a chave de criptografia.

O pacote apigee-mtls instala e configura os servidores do Consul, incluindo os proxies de entrada e saída nos nós do ZooKeeper no cluster.

Permissões da conta de usuário

Antes da instalação, crie uma conta de usuário ou verifique se você tem acesso a uma com privilégios elevados.

A conta que executa a instalação do mTLS da Apigee em cada nó do cluster precisa ter permissão para:

  • Iniciar, interromper, reiniciar e inicializar componentes do Apigee
  • Definir regras de firewall
  • Criar uma conta de usuário do sistema/SO
  • Ativar, desativar, iniciar, interromper e mascarar serviços com systemctl

Máquina de administração (recomendada)

A Apigee recomenda que você tenha um nó no cluster em que possa realizar várias tarefas administrativas descritas neste documento, incluindo:

  1. Instale o HashiCorp Consul 1.6.2.
  2. Gere e distribua um par de certificado/chave e uma chave de criptografia de gossip.
  3. Atualize e distribua o arquivo de configuração.

Ao configurar a máquina de administração:

  • Verifique se você tem acesso root a ele.
  • Faça o download e instale os utilitários apigee-service e apigee-setup conforme descrito em Instalar o utilitário apigee-setup do Edge.
  • Verifique se é possível usar scp/ssh para acessar todos os nós do cluster na máquina de administração. Isso é necessário para que você possa distribuir seu arquivo de configuração e credenciais.

Uso e atribuição de portas

Esta seção descreve o uso e as atribuições de portas para oferecer suporte às comunicações do Consul com o mTLS da Apigee.

Uso da porta: todos os nós que executam o apigee-mtls

Todos os nós do cluster que usam o serviço apigee-mtls precisam permitir conexões de serviços no localhost (127.0.0.1). Isso permite que os proxies do Consul se comuniquem com os outros serviços ao processar mensagens recebidas e enviadas.

Uso da porta: nós do servidor Consul (nós que executam o ZooKeeper)

Você precisa abrir a maioria das seguintes portas nos nós do servidor Consul (os nós que executam o ZooKeeper) para aceitar solicitações de todos os nós do cluster:

Porta do servidor do Consul Descrição Protocolo Permitir mtls-agents externos
*
Servidor do Consul (nós do ZooKeeper) 8300 Conecta todos os servidores do Consul no cluster. RPC
8301 Gerencia as mensagens de inscrição e transmissão no cluster. UDP/TCP
8302 Porta WAN que processa mensagens de associação e transmissão em uma configuração de vários data centers. UDP/TCP
8500 Processa conexões HTTP com as APIs do servidor Consul de processos no mesmo nó.

Essa porta não é usada para comunicação ou coordenação remota. Ela detecta apenas no localhost.

HTTP
8502 Processa conexões gRPC+HTTPS com as APIs do servidor do Consul de outros nós no cluster. gRPC+HTTPS
8503 Processa conexões HTTPS com as APIs do servidor Consul de outros nós no cluster. HTTPS
8600 Processa o DNS do servidor Consul. UDP/TCP
* A Apigee recomenda restringir as solicitações de entrada apenas aos membros do cluster (incluindo entre repositórios de dados). Faça isso com iptables.

Como mostrado nesta tabela, os nós que executam o componente consul-server (nós do ZooKeeper) precisam abrir as portas 8301, 8302, 8502 e 8503 para todos os membros do cluster que executam o serviço apigee-mtls, mesmo em data centers diferentes. Os nós que não estão executando o ZooKeeper não precisam abrir essas portas.

Atribuições de porta para todos os nós do Consul (incluindo nós que executam o ZooKeeper)

Para oferecer suporte às comunicações do Consul, os nós que executam os seguintes componentes da Apigee precisam permitir conexões externas com portas nos seguintes intervalos:

Componente da Apigee Intervalo Número de portas necessárias por nó
mTLS da Apigee 10700 a 10799 1
Cassandra 10100 a 10199 2
processador de mensagens 10.500 a 10.599 2
SymasLDAP 10200 a 10299 1
Postgres 10300 a 10399 3
Qpid 10400 a 10499 2
Roteador 10600 a 10699 2
ZooKeeper 10000 a 10099 3

O Consul atribui portas de maneira linear simples. Por exemplo, se o cluster tiver dois nós do Postgres, o primeiro usará duas portas. Assim, o Consul vai atribuir as portas 10300 e 10301 a ele. O segundo nó também usa duas portas. Por isso, o Consol atribui 10302 e 10303 a ele. Isso se aplica a todos os tipos de componentes.

Como você pode ver, o número real de portas depende da topologia: se o cluster tiver dois nós do Postgres, será necessário abrir quatro portas (dois nós vezes duas portas cada).

Observe o seguinte:

  • Os proxies do Consul não podem fazer detecção nas mesmas portas que os serviços da Apigee.
  • O Consul tem apenas um espaço de endereço de porta. As atribuições de porta do proxy do Consul precisam ser exclusivas em todo o cluster, incluindo data centers. Isso significa que, se o proxy A no host A detectar a porta 15000, o proxy B no host B não poderá detectar a porta 15000.
  • O número de portas usadas varia de acordo com a topologia, conforme descrito anteriormente.

Em uma configuração de vários data centers, todos os hosts que executam mTLS também precisam abrir a porta 8302.

É possível personalizar as portas padrão usadas pelo mTLS da Apigee. Para informações sobre como fazer isso, consulte Personalização do intervalo de portas de proxy.

Limitações

A mTLS da Apigee tem as seguintes limitações:

  • Não criptografa as comunicações do Cassandra entre nós (porta 7000)
  • A configuração e a instalação não são idempotentes. Isso significa que, se você fizer uma mudança em um nó, precisará fazer a mesma mudança em todos os nós. O sistema não aplica essa mudança para você em nenhum outro nó. Para mais informações, consulte Mudar uma configuração apigee-mtls atual.

Terminologia

Nesta seção, usamos a seguinte terminologia:

Termo Definição
cluster O grupo de máquinas que compõem a instalação do Edge para nuvem privada.
Consul A malha de serviço usada pela mTLS da Apigee. Para informações sobre como o Consul protege suas comunicações de nuvem privada, consulte o modelo de segurança do Consul.
mTLS TLS autenticado mutuamente.
malha de serviço Uma rede de sobreposição (ou uma rede dentro de uma rede).
TLS Transaction Layer Security. Um protocolo de autenticação padrão do setor para comunicações seguras.