O recurso mTLS da Apigee adiciona segurança às comunicações entre componentes no cluster do Edge para nuvem privada. Ele fornece uma maneira padrão do setor de configurar e instalar a malha de serviço. Ele é compatível com o gerenciamento de pacotes e a 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 mutuamente autenticadas entre os 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 no componente para acesso pelo servidor de gerenciamento.
Como mostrado 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, do ZooKeeper e do Cassandra | |
| processador de mensagens | Loopback; nós do Qpid, do ZooKeeper e do 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 que são 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 mensagens enviadas no nó do host. Esse serviço criptografa as mensagens enviadas antes de enviá-las ao destino.
- Um proxy de entrada que intercepta as 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 enviada para o roteador, o serviço de proxy de saída intercepta a mensagem, criptografa-a 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 ao componente do roteador para processamento.
Tudo isso acontece de forma transparente para os componentes do Edge: eles não sabem 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 a mTLS da Apigee, seu ambiente precisa atender aos seguintes requisitos:
- Requisitos de topologia
- Utilitários instalados e ativados
- Conta de usuário com o nível de permissões adequado
- Uma máquina de administração (recomendado)
- Uso de portas
As seções a seguir descrevem cada um desses requisitos em detalhes.
Requisitos de topologia
A 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 a 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
A mTLS da Apigee 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 | Posso remover depois da instalação? |
|---|---|---|
base64 |
Verifica os dados nos scripts de instalação. | |
gnu-bashgnu-sedgnu-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 as rotas de iptables. |
|
openssl |
Assina certificados localmente durante o processo de inicialização. |
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
Antes de instalar, crie uma nova conta de usuário ou verifique se você tem acesso a uma que tenha privilégios elevados.
A conta que executa a instalação da 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 SO/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 em que possa realizar várias tarefas administrativas descritas neste documento, incluindo:
- Instale o HashiCorp Consul 1.6.2.
- Gerar e distribuir um par de certificados/chaves e uma chave de criptografia de fofoca.
- Atualize e distribua o arquivo de configuração.
Ao configurar a máquina de administração:
- Verifique se você tem acesso raiz a ele.
- Faça o download e instale os utilitários
apigee-serviceeapigee-setupnele, conforme descrito em Instalar o utilitário apigee-setup do Edge. - Verifique se é possível usar
scp/sshpara acessar todos os nós no cluster pela máquina de administração. Isso é necessário para que você possa distribuir o arquivo de configuração e as credenciais.
Uso e atribuição de portas
Nesta seção, descrevemos o uso e as atribuições de portas para dar suporte às 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). Isso permite que os proxies do Consul se comuniquem com os
outros serviços enquanto processam mensagens recebidas e enviadas.
Uso de portas: nós do servidor 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:
| Nó | 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 mensagens de associaçã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 do Consul de processos no mesmo nó.
Essa porta não é usada para comunicação ou coordenação remotas. Ela detecta apenas o 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 do Consul 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 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 estão executando
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 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 | 10500 a 10599 | 2 |
| OpenLDAP | 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 nó usará duas portas, então o Consul atribuirá as portas 10300 e 10301 a ele. O segundo nó também usa duas portas, então o Consol atribui 10302 e 10303 a 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, será necessário abrir quatro portas (dois nós vezes duas portas cada).
Observe o seguinte:
- Os proxies do Consul não podem detectar as 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 de 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á detectar 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 pela mTLS da Apigee. Para saber como fazer isso, consulte Personalização do intervalo de portas do proxy.
Limitações
A mTLS da Apigee tem as seguintes limitações:
- Não criptografa as comunicações entre nós do Cassandra (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 aplica essa alteração para você em nenhum outro nó. Para mais informações, consulte Alterar uma configuração atual da apigee-mtls.
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 saber como o Consul protege as comunicações da 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 | Transport Layer Security. Um protocolo de autenticação padrão do setor para comunicações seguras. |