Introdução ao mTLS da Apigee

Edge para nuvem privada v4.19.01

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

Visão geral da arquitetura

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

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

Observe que as portas indicadas com um "M" são usadas para gerenciar o componente e precisam ser 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 do 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
IU 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ó no cluster:

  • Um proxy de saída que intercepta mensagens enviadas no nó host. Esse serviço criptografa as mensagens enviadas antes de enviá-las ao destino.
  • Um proxy de entrada que intercepta mensagens recebidas no nó 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 para o roteador. Quando o nó do roteador recebe a mensagem, o serviço de proxy de entrada a descriptografa e a transmite para o componente do roteador para processamento.

Tudo isso de forma transparente para 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, a Apigee mTLS usa o utilitário iptables, um serviço de firewall 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 é compatível com 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 alteração em um nó afeta todos os outros nós. Como resultado, se a topologia for alterada, será necessário reconfigurar e reinicializar os serviços em cada nó do cluster.

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

Esses requisitos incluem:

  • Versão Edge 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)

Requisitos do Edge para nuvem privada

A Apigee mTLS é compatível com a seguinte versão do Edge para a nuvem privada (mas não em todas as plataformas compatíveis, conforme descrito em Requisitos do SO):

  • 19/04/2006
  • 19/04/2001

O Apigee mTLS exige que o cluster da nuvem privada use uma topologia que inclua pelo menos três nós do Zookeeper. Como resultado, só é possível instalar a Apigee mTLS em topologias que usam 5, 9, 12 (multidata center) ou 13 nós. Para mais informações, consulte Topologias de instalação.

Requisitos do sistema operacional

O Apigee mTLS é compatível com as seguintes plataformas para seu cluster de nuvem privada (o SO compatível com 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 (RHEL)
Oracle Linux
7,5, 7,6, 7,7 7,5, 7,6, 7,7, 7,8, 7,9 7.5, 7.6, 7.7, 7.8, 7.9, 8.0

Utilitários/pacotes

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

Utilitário/pacote Descrição 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 ao utilitário iptables.
lsof Usado pelo script de instalação.
nc Verifica iptables trajetos.
openssl Assina certificados localmente durante o processo de inicialização inicial.

Durante a instalação, você também instala o pacote do 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

A conta que executa a instalação do mTLS na 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
  • Ativar, desativar, iniciar, interromper e mascarar serviços com o systemctl

Máquina de administração (recomendado)

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

  1. Instale o HashiCorp Consul 1.6.2.
  2. Gere e distribua um par de certificado/chave e chave de criptografia de fofoca.
  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 de borda da Apigee.
  • Tem acesso scp/ssh a todos os nós no cluster. Para distribuir o arquivo de configuração e as credenciais, você precisa ter acesso scp/ssh a todos os hosts no cluster.
  • Você tem acesso raiz à máquina de administração.

Uso e atribuição da porta

Nesta seção, descrevemos o uso e as atribuições de porta para serem compatíveis com as comunicações do Consul com a Apigee mTLS.

Uso da porta: todos os nós que executam o 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). Isso permite que os proxies do Consul se comuniquem com os outros serviços enquanto processam as 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 solicitações de todos os nós no cluster:

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

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

HTTP
8502 Lida com conexões gRPC+HTTPS para as APIs do Consul Server de outros nós no cluster. gRPC+HTTPS
8503 Lida com conexões HTTPS para as APIs do Consul Server de outros nós no cluster. HTTPS
8600 Processa o DNS do servidor do Consul. UDP/TCP
* A Apigee recomenda que você restrinja as solicitações de entrada apenas aos membros do cluster, incluindo o armazenamento de dados cruzado. Você pode fazer isso com iptables.

Como mostra a tabela, os nós que executam o componente consul-server (ZooKeeper) precisam abrir as portas 8301, 8302, 8502 e 8503 para todos os membros do cluster que executam o serviço apigee-mtls, mesmo entre 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 nós com 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 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 10.001 a 10.099 3

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

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

Observe o seguinte:

  • Os proxies do Consul não podem escutar nas mesmas portas que os serviços da Apigee.
  • O Consul tem apenas um espaço de endereço de porta. As atribuições da 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 escuta na porta 15000, o proxy B no host B não pode escutar 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 o mTLS também precisam abrir a porta 8302.

É possível personalizar as portas padrão que a Apigee mTLS usa. Para mais informações 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 Cassandra entre nós (porta 7000)
  • A configuração não é idempotente. Isso significa que, se você fizer uma alteração em um nó, precisará fazer a mesma alteração em todos os nós. O sistema não escolhe essa alteração e a aplica a outros nós. Para mais informações, consulte 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 o 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 de nuvem privada, consulte Modelo de segurança do Consul (em inglês).
mTLS (em inglês) TLS mutuamente autenticado.
malha de serviço Uma rede overlay (ou uma rede dentro de uma rede).
TLS Segurança da camada de transação. Um protocolo de autenticação padrão do setor para comunicações seguras.