Com o Non-public Networking for Amazon MQ for RabbitMQ, seus agentes podem estabelecer conexões de saída com recursos privados em sua VPC sem expor esses recursos publicamente. Esta postagem explica como o recurso funciona e orienta você na configuração.
Anteriormente, os corretores do Amazon MQ for RabbitMQ só podiam alcançar destinos externos pela Web pública. Se você usasse um servidor LDAP (Light-weight Listing Entry Protocol) privado para autenticação do intermediário, seria necessário expor esse servidor publicamente. Se você quisesse federar mensagens entre agentes privados, precisaria de soluções alternativas, como Community Load Balancers com lista de permissões de IP, conforme descrito em Implementando federação no Amazon MQ para corretores privados RabbitMQ. A rede privada take away essas restrições.
Você pode conectar seu agente a provedores de identidade privados, outros agentes do Amazon MQ para RabbitMQ ou agentes RabbitMQ auto-hospedados em execução em sub-redes privadas. Combinado com serviços de rede entre regiões, como AWS Transit Gatewayvocê pode estender essas conexões entre regiões e contas da AWS, com o tráfego permanecendo na rede privada da AWS.
Como funciona
A rede privada conecta seu corretor a destinos privados usando três serviços da AWS: Estrutura Amazon VPC, Gerenciador de acesso de recursos da AWS (AWS RAM)e AWS PrivateLink.
Você cria um gateway de recurso VPC Lattice em uma VPC que pode alcançar seu destino privado. Em seguida, você cria uma configuração de recurso VPC Lattice que outline o destino, como um endereço IP ou nome de sistema de nomes de domínio (DNS). Você adiciona a configuração de recursos a um compartilhamento de recursos RAM e associa o compartilhamento de recursos ao seu agente por meio do método UpdateBroker Operação de API. Após reinicializar o dealer, o caminho da rede estará ativo e seu dealer poderá alcançar o destino privado.
O corretor não precisa ser privado. Um corretor acessível publicamente funciona da mesma maneira.
Ao que você pode se conectar
A rede privada oferece suporte a três casos de uso.
Provedores de identidade privados
Se você usar um servidor LDAP ou outro provedor de identidade para autenticação RabbitMQ, não precisará mais expô-lo publicamente. Crie uma configuração de recurso apontando para seu provedor de identidade, associe-a ao seu corretor e use o nome DNS retornado pelo DescribeSharedResources Operação da API no lugar do endpoint público. Siga as orientações existentes para configurando um provedor de identidadesubstituindo o nome DNS privado.
Corretores RabbitMQ auto-hospedados
Você pode usar Shovel ou Federation para conectar seu agente do Amazon MQ for RabbitMQ a um agente RabbitMQ auto-hospedado em execução em uma sub-rede privada. Crie uma configuração de recurso apontando para o corretor auto-hospedado e use o nome DNS do DescribeSharedResources Operação de API em sua configuração Shovel ou Federation.
Este padrão é útil para arquiteturas de nuvem híbrida onde você executa RabbitMQ em Amazon Elastic Compute Cloud (Amazon EC2), Serviço Amazon Elastic Kubernetes (Amazon EKS)ou infraestrutura native e deseja trocar mensagens com o Amazon MQ sem expor publicamente nenhum dos lados.
Outros corretores do Amazon MQ para RabbitMQ
Você pode federar ou enviar mensagens entre dois agentes do Amazon MQ para RabbitMQ usando rede privada. Crie uma configuração de recurso apontando para o terminal do dealer de destino e especifique esse mesmo terminal como o nome de domínio customizado na configuração do recurso. Isso ajuda a verificar se o nome DNS é resolvido corretamente e se a verificação por pares do Transport Layer Safety (TLS) foi bem-sucedida.
Isso se estende a corretores em diferentes regiões da AWS e diferentes contas da AWS. Ao combinar redes privadas com serviços de rede entre regiões, como AWS Transit Gateway ou peering de VPC, você pode criar uma federação totalmente privada ou um caminho de escavação entre agentes, sem a necessidade de endpoints públicos.
Nomes DNS e domínios personalizados
Cada configuração de recurso pode incluir um nome de domínio personalizado. Se você adicionar um domínio verificado, esse domínio será resolvido para o destino privado. Se você não adicionar um domínio verificado, o Amazon MQ fornecerá um nome DNS para a conexão privada do agente. Recupere este nome DNS com o DescribeSharedResources Operação de API.
Se você especificar um domínio não verificado em uma configuração de recurso, ele será ignorado. A conexão privada do corretor recebe um nome DNS privado, que você pode recuperar com o DescribeSharedResources Operação de API.
Para obter mais detalhes sobre nomes de domínio personalizados e verificação de domínio com VPC Lattice, consulte Nomes de domínio personalizados para recursos VPC Lattice.
Verificação de pares TLS no RabbitMQ 4
Observação: Se você estiver executando o RabbitMQ 4, revise esta seção antes de configurar conexões Shovel ou Federation.
RabbitMQ 4 impõe verificação de pares de certificados TLS por padrão para conexões Shovel e Federation. RabbitMQ 3 não impõe isso por padrão. Ao usar a rede privada, o nome DNS que o Amazon MQ atribui à conexão privada não corresponderá ao certificado TLS do destino, o que causa falha na verificação por pares.
A abordagem recomendada é especificar o endpoint do corretor de destino (por exemplo, b-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111.mq.us-east-1.on.aws) como o nome de domínio personalizado na configuração do recurso. Essa exceção se aplica apenas aos endpoints do agente Amazon MQ for RabbitMQ. Você não pode usar um domínio não verificado para corretores auto-hospedados. A especificação do endpoint do Amazon MQ faz com que o nome DNS corresponda ao certificado TLS do destino e a verificação por pares seja bem-sucedida. Essa abordagem funciona independentemente da sua versão do RabbitMQ e evita totalmente o problema.
Começando
Para começar a usar a rede privada para Amazon MQ para RabbitMQ, siga estas etapas.
Pré-requisitos
Antes de começar, verifique se você tem o seguinte:
- Uma conta AWS.
- O Interface de linha de comando da AWS (AWS CLI) instalado e configurado.
- Permissões do AWS Identification and Entry Administration (IAM) para gerenciar recursos do Amazon MQ, VPC Lattice e AWS RAM.
- Uma VPC existente com conectividade ao seu destino privado.
Passo a passo
Depois de ter os pré-requisitos, siga estas etapas:
- Crie um corretor do Amazon MQ para RabbitMQ se você ainda não tiver um.
- Crie um gateway de recursos VPC Lattice em uma VPC que pode chegar ao seu destino privado. Certifique-se de que o grupo de segurança do gateway de recursos permita o tráfego de saída para o seu destino na porta necessária (por exemplo, porta 5671 para AMQPS (AMQP sobre TLS) ou porta 636 para LDAPS (LDAP sobre TLS)). O gateway de recursos deve compartilhar pelo menos uma zona de disponibilidade com o corretor. Os agentes de cluster cobrem várias zonas de disponibilidade, portanto, isso é satisfeito. Para agentes de instância única, verifique a sobreposição da zona de disponibilidade.
- Criar uma configuração de recurso VPC Lattice apontando para o seu destino privado (endereço IP ou nome DNS). Se você estiver se conectando a outro agente do Amazon MQ, especifique o endpoint do agente de destino como o nome de domínio personalizado na configuração do recurso, conforme mostrado na figura a seguir.
Figura 1: Configuração do recurso VPC Lattice mostrando o campo de nome de domínio personalizado e a definição de recurso preenchida com o endpoint do agente do Amazon MQ. - Adicione a configuração de recursos a um compartilhamento de recursos RAM. O compartilhamento de recursos deve permitir entidades externas, conforme mostrado na figura a seguir.
Figura 2: Configuração de compartilhamento de recursos RAM com a opção Permitir entidades externas selecionada. - Associe o compartilhamento de recursos ao seu corretor editando o corretor e adicionando o compartilhamento de recursos. Você também pode fazer isso usando o
update-brokercomando com a AWS CLI. Você deve passar toda a lista de ARNs de compartilhamento de recursos desejados no agente. Esta é uma operação de colocação, não uma operação de adição ou remoção.O compartilhamento de recursos de RAM associado aparece conforme mostrado na figura a seguir.

Figura 3: Visualização das configurações de rede com compartilhamentos de recursos de RAM associados.
Selecione o compartilhamento de recursos na seção Compartilhamentos de recursos de RAM associados. O standing da rede de cada recurso compartilhado é exibido na seção Recursos compartilhados, conforme mostrado na figura a seguir.

Figura 4: Seleção de compartilhamento de recursos RAM mostrando o standing da rede de cada recurso compartilhado.
- Reinicie o agente no AWS Administration Console ou na AWS CLI para criar o caminho de rede:
- Recupere os nomes DNS para sua configuração do RabbitMQ. Esta operação também revela problemas encontrados durante a configuração:
- Use o nome DNS retornado na saída na configuração do Shovel, da Federação ou do provedor de identidade. Adicionar novas configurações de recursos a um compartilhamento de recursos RAM existente não atualiza automaticamente o agente. Você deve ligar
update-brokere reinicialize o dealer para que as novas configurações de recursos entrem em vigor.
Limpando
A rede privada usa recursos VPC Lattice e PrivateLink que geram cobranças contínuas. Se você não precisar mais da conexão privada:
- Chamar
update-brokercom o compartilhamento de recursos removido da lista (ou uma lista vazia para remover tudo), reinicie o corretor. - Depois que a reinicialização do dealer for concluída e os recursos não estiverem mais em uso, exclua a configuração do recurso VPC Lattice e o gateway de recursos.
- Opcionalmente, remova o principal da conta do Amazon MQ do compartilhamento de recursos RAM. Este principal ainda pode estar em uso se outros corretores estiverem associados ao mesmo compartilhamento de recursos, portanto, remova-o apenas se nenhum outro corretor depender dele.
- Se você criou um novo agente do Amazon MQ for RabbitMQ para esta demonstração e não precisa mais dele, exclua o agente do console do Amazon MQ ou com o
delete-brokercomando.
Comportamento operacional: acesso a recursos e reinicializações
A remoção de uma configuração de recurso VPC Lattice de um compartilhamento de recurso RAM enquanto o agente está usando-a ativamente revoga o acesso imediatamente, sem necessidade de reinicialização. A remoção de um principal de um compartilhamento de recursos RAM tem o mesmo efeito: os corretores associados por meio desse principal perdem imediatamente o acesso aos recursos do compartilhamento. Esses são comportamentos de segurança intencionais gerenciados por RAM e VPC Lattice.
A adição de novas configurações de recursos a um compartilhamento de recursos existente não entra em vigor automaticamente. Você deve ligar update-broker e reinicialize o dealer para que as novas configurações de recursos entrem em vigor. Isso ocorre intencionalmente. Ajuda a verificar se as alterações a uma partilha de recursos só chegam ao corretor quando alguém com permissões de gestão do corretor aciona explicitamente a atualização, proporcionando uma separação de segurança clara entre a gestão de ações e a gestão do corretor.
A rede privada está disponível para corretores do Amazon MQ para RabbitMQ em todas as regiões da AWS onde o Amazon VPC Lattice está disponível. Agentes do Amazon MQ for ActiveMQ não oferecem suporte a esse recurso.
Preços
A rede privada usa Amazon VPC Lattice e AWS PrivateLink. As taxas de processamento e transferência de dados aplicam-se ao tráfego enviado através da conexão privada. Há um preço do Amazon MQ de US$ 0,01 por GB de dados processados por meio do endpoint do recurso. Para obter detalhes, consulte o Página de definição de preço do Amazon MQ, Página de preços do VPC Lattice e Página de definição de preço do AWS PrivateLink.
Conclusão
Nesta postagem, explicamos como funciona a rede privada para Amazon MQ para RabbitMQ e percorremos o processo de configuração. Esteja você protegendo um provedor de identidade privado, federando mensagens entre corretores ou conectando-se ao RabbitMQ auto-hospedado, seu corretor agora pode alcançar destinos privados sem expô-los publicamente.
Para saber mais, consulte o Documentação de rede privada do Amazon MQ.
Se você tiver dúvidas ou comentários, deixe um comentário nesta postagem.
Figura 1: Configuração do recurso VPC Lattice mostrando o campo de nome de domínio personalizado e a definição de recurso preenchida com o endpoint do agente do Amazon MQ.
Figura 2: Configuração de compartilhamento de recursos RAM com a opção Permitir entidades externas selecionada.
