Introdução ao mTLS da Apigee

Edge para nuvem privada v4.19.01

O recurso mTLS da Apigee adiciona segurança às comunicações entre componentes no Edge para o cluster de nuvem privada.

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 mutuamente autenticadas entre os componentes.

A imagem a seguir mostra as conexões entre os componentes da Apigee que o mTLS protege (in red). As portas mostradas na imagem são exemplos. Consulte Uso de portas para 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 no componente para acesso pelo servidor de gerenciamento.

Como é possível 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 de roteador, MP, QPid, LDAP, Postgres, Zookeeper e Cassandra
Roteador Loopback; nós Qpid, Zookeeper e Cassandra
processador de mensagens Loopback; nós 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 cada nó do cluster:

  • Um proxy de saída que intercepta as mensagens enviadas no nó do host. Este serviço criptografa as mensagens enviadas antes de enviá-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 para o roteador, o serviço de proxy de saída intercepta a mensagem enviada, 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 passa para o componente do roteador para processamento.

Tudo isso acontece de forma transparente com os componentes do Edge: eles não estão cientes 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

A Apigee mTLS oferece uma maneira padrão do setor de configurar e instalar a malha de serviço. Ele oferece suporte ao gerenciamento de pacotes e à automação de configuração.

Como os serviços de proxy do Consul estão fortemente acoplados como atribuições de porta para processos individuais, uma mudança em um nó afeta todos os outros. Como resultado, se sua topologia mudar, você precisará reconfigurar e reinicializar os serviços em cada nó no cluster.

Antes de instalar o mTLS da Apigee, o ambiente precisa atender aos seguintes requisitos descritos nesta seção.

Esses requisitos incluem:

  • Edge para a versão da nuvem privada
  • Um conjunto de utilitários instalados e ativados
  • Uma conta de usuário com o nível apropriado de permissões
  • Uma máquina de administração (recomendado)

Ponto de partida para os requisitos da nuvem privada

O mTLS da Apigee oferece suporte à seguinte versão do Edge para a nuvem privada, mas não em todas as plataformas compatíveis, conforme descrito nos requisitos do SO:

  • 4.19.06
  • 4.19.01

A Apigee mTLS exige que seu cluster de nuvem privada use uma topologia que 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.

Requisitos do SO

A Apigee mTLS oferece suporte às seguintes plataformas para seu cluster de nuvem privada (o SO com suporte para mTLS depende da versão da nuvem privada):

Sistema operacional Versão de nuvem privada compatível
v4.19.06 v4.50.00 v4.51.00
CentOS
RedHat Enterprise Linux (Ela)
Oracle Linux
7.5, 7.6, 7.7 7.5, 7.6, 7.7, 7.8 e 7.9 7.5, 7.6, 7.7, 7.8, 7.9 e 8.0

Utilitários/pacotes

A Apigee mTLS exige que os pacotes a seguir estejam 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 É possível 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 iptables rotas.
openssl Assina certificados localmente durante o processo inicial de inicialização.

Durante a instalação, você também instala o pacote do Consul na máquina de administração, para que possa 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

A conta que executa a instalação mTLS da Apigee em cada nó no cluster precisa ser capaz de:

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

Máquina de administração (recomendado)

A Apigee recomenda que você tenha um nó no cluster para executar várias tarefas descritas neste documento, incluindo:

  1. Instale o HashiCorp Consul 1.6.2.
  2. Gerar e distribuir um par de certificados/chaves e uma chave de criptografia de fofocas.
  3. Atualize e distribua o arquivo de configuração.

A máquina de administração exige que:

  • Você fez o download e instalou os utilitários apigee-service e apigee-setup, conforme descrito em Instalar o utilitário de configuração da Apigee do Edge.
  • Tem acesso scp/ssh a todos os nós no cluster. Para distribuir o arquivo de configuração e as credenciais, é preciso ter acesso de scp/ssh a todos os hosts no cluster.
  • Você tem acesso raiz à máquina de administração.

Uso e atribuição de portas

Nesta seção, descrevemos o uso e as atribuições de portas para oferecer suporte a comunicações do Consul com o mTLS da Apigee.

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

Todos os nós no cluster que usam o serviço apigee-mtls precisam permitir conexões de serviços no localhost (127.0.0.1). Dessa forma, os proxies do Consul podem se comunicar com os outros serviços enquanto processam mensagens recebidas e enviadas.

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

É preciso abrir a maioria das portas a seguir nos nós do servidor do Consul (os nós que executam o ZooKeeper) para aceitar as solicitações de todos os nós no cluster:

Porta do servidor do Consul Descrição Protocolo Permitir mtls-agents externos
*
Servidor Consul (nós do ZooKeeper) 8300 Conecta todos os servidores do Consul no cluster. RPC
8301 Processa a associação e mensagens de 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 Manipula conexões HTTP para as APIs do servidor Consul de processos no mesmo nó.

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

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

Como mostra esta 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 nos data centers. 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 os 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 as portas nos seguintes intervalos:

Componente da Apigee Intervalo Número de portas necessárias por nó
mTLS da Apigee 10.700 a 10.799 1
Cassandra 10.100 a 10.199 2
processador de mensagens 10.500 a 10.599 2
OpenLDAP 10.200 a 10.299 1
Postgres 10.300 a 10.399 3
Qpid 10.400 a 10.499 2
Roteador 10.600 a 10.699 2
ZooKeeper De 10.001 a 10.099 3

O Consul atribui portas de maneira linear simples. Por exemplo, se o cluster tiver dois nós do Postgres, o primeiro nó usará duas portas. Portanto, o Consul atribui as portas 10300 e 10301 a ele. O segundo nó também usa duas portas. Portanto, o Consol atribui 10302 e 10303 a esse nó. 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 Consul não podem detectar 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, o que inclui data centers. Isso significa que, se o proxy A no host A detectar na porta 15000, o proxy B no host B não poderá ouvir na 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 saber mais sobre como fazer isso, consulte Personalização do intervalo de portas do proxy.

Limitações

A Apigee mTLS tem as seguintes limitações:

  • Não criptografa comunicações do Cassandra entre nós (porta 7000)
  • A configuração não é idempotente. Isso significa que, se você fizer uma alteração em um nó, será necessário fazer a mesma alteração em todos os nós. O sistema não a seleciona e a aplica a outros nós. Saiba mais em Alterar uma configuração atual do apigee-mtls.

Terminologia

Esta seção usa a seguinte terminologia:

Termo Definição
cluster O grupo de máquinas que compõem seu Edge para a instalação da nuvem privada.
Consul A malha de serviço usada pelo mTLS da Apigee. Para mais informações sobre como o Consul protege suas comunicações na nuvem privada, consulte o Modelo de segurança do Consul.
mTLS TLS mutuamente autenticado.
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.