Saída de porta flexível

Última atualização em 2023-12-04
  • Tópicos
  • Security
    Exibir mais informações sobre este tópico
  • Criado para:
  • Intermediate
    Developer

Saiba como configurar e usar saída de porta flexível para suportar conexões externas do AEM as a Cloud Service para serviços externos.

O que é saída de porta flexível?

Saída de porta flexível permite que regras de encaminhamento de porta personalizadas e específicas sejam anexadas ao AEM as a Cloud Service, permitindo que conexões do AEM a serviços externos sejam feitas.

Um programa do Cloud Manager só pode ter um solteiro tipo de infraestrutura de rede. Certifique-se de que o endereço IP de saída dedicado seja o mais tipo adequado de infraestrutura de rede para o AEM as a Cloud Service antes de executar os seguintes comandos.

Pré-requisitos

Os seguintes requisitos são necessários ao configurar a saída de porta flexível:

Para obter mais detalhes, assista à seguinte apresentação de como configurar e obter credenciais da API do Cloud Manager e como usá-las para fazer uma chamada de API do Cloud Manager.

Este tutorial usa curl para fazer as configurações da API do Cloud Manager. Os dados fornecidos curl assumem uma sintaxe Linux/macOS. Se estiver usando o prompt de comando do Windows, substitua o \ caractere de quebra de linha com ^.

Habilitar saída de porta flexível por programa

Comece ativando a saída de porta flexível no AEM as a Cloud Service.

  1. Primeiro, determine a região em que a Rede avançada é configurada usando a API do Cloud Manager listRegions operação. A variável region name O é necessário para fazer chamadas de API subsequentes do Cloud Manager. Normalmente, a região em que o ambiente de Produção reside é usada.

    Encontre a região do seu ambiente as a Cloud Service AEM em Cloud Manager no detalhes do ambiente. O nome da região exibido no Cloud Manager pode ser mapeado para o código de região usada na API do Cloud Manager.

    solicitação HTTP listRegions

    $ curl -X GET https://cloudmanager.adobe.io/api/program/{programId}/regions \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'Content-Type: application/json'
    
  2. Ativar saída de porta flexível para um programa do Cloud Manager usando a API do Cloud Manager createNetworkInfrastructure operação. Use o region código obtido da API do Cloud Manager listRegions operação.

    solicitação HTTP createNetworkInfrastructure

    $ curl -X POST https://cloudmanager.adobe.io/api/program/{programId}/networkInfrastructures \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'Content-Type: application/json' \
        -d '{ "kind": "flexiblePortEgress", "region": "va7" }'
    

    Aguarde 15 minutos para que o programa do Cloud Manager provisione a infraestrutura de rede.

  3. Verifique se o ambiente terminou saída de porta flexível configuração usando a API do Cloud Manager getNetworkInfrastructure operação, utilizando o id retornado da solicitação HTTP createNetworkInfrastructure na etapa anterior.

    solicitação HTTP getNetworkInfrastructure

    $ curl -X GET https://cloudmanager.adobe.io/api/program/{programId}/networkInfrastructure/{networkInfrastructureId} \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'Content-Type: application/json'
    

    Verifique se a resposta HTTP contém um status de pronto. Se ainda não estiver pronto, verifique novamente o status a cada poucos minutos.

Configuração de proxies de saída de porta flexíveis por ambiente

  1. Habilite e configure o saída de porta flexível configuração em cada ambiente do AEM as a Cloud Service usando a API do Cloud Manager enableEnvironmentAdvancedNetworkingConfiguration operação.

    solicitação HTTP enableEnvironmentAdvancedNetworkingConfiguration

    $ curl -X PUT https://cloudmanager.adobe.io/api/program/{programId}/environment/{environmentId}/advancedNetworking \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'Content-Type: application/json' \
        -d @./flexible-port-egress.json
    

    Defina os parâmetros JSON em uma flexible-port-egress.json e fornecido para curl via ... -d @./flexible-port-egress.json.

    Baixe o exemplo de Flex-port-egress.json. Este arquivo é apenas um exemplo. Configure seu arquivo conforme necessário com base nos campos opcionais/obrigatórios documentados em enableEnvironmentAdvancedNetworkingConfiguration.

    {
        "portForwards": [
            {
                "name": "mysql.example.com",
                "portDest": 3306,
                "portOrig": 30001
            },
            {
                "name": "smtp.sendgrid.com",
                "portDest": 465,
                "portOrig": 30002
            }
        ]
    }
    

    Para cada portForwards de rede avançada define a seguinte regra de encaminhamento:

    Host do proxy Porta do proxy Host externo Porta externa
    AEM_PROXY_HOST portForwards.portOrig portForwards.name portForwards.portDest

    Se a sua implantação do AEM somente exige conexões HTTP/HTTPS (porta 80/443) para o serviço externo, deixe o portForwards matriz vazia, pois essas regras são necessárias somente para solicitações não HTTP/HTTPS.

  2. Para cada ambiente, valide se as regras de saída estão em vigor usando a API do Cloud Manager getEnvironmentAdvancedNetworkingConfiguration operação.

    solicitação HTTP getEnvironmentAdvancedNetworkingConfiguration

    $ curl -X GET https://cloudmanager.adobe.io/api/program/{programId}/environment/{environmentId}/advancedNetworking \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Content-Type: application/json'
    
  3. Configurações flexíveis de saída de porta podem ser atualizadas usando a API do Cloud Manager enableEnvironmentAdvancedNetworkingConfiguration operação. Lembrar enableEnvironmentAdvancedNetworkingConfiguration é um PUT para que todas as regras sejam fornecidas com cada chamada desta operação.

  4. Agora você pode usar a configuração flexível de saída de porta em seu código e configuração personalizados AEM.

Conexão com serviços externos por meio de saída de porta flexível

Com o proxy de saída de porta flexível ativado, o código e a configuração do AEM podem usá-los para fazer chamadas para serviços externos. Há duas opções de chamadas externas que o AEM trata de forma diferente:

  1. Chamadas HTTP/HTTPS para serviços externos em portas fora do padrão
    • Inclui chamadas HTTP/HTTPS feitas para serviços executados em portas diferentes das portas padrão 80 ou 443.
  2. chamadas não HTTP/HTTPS para serviços externos
    • Inclui chamadas não HTTP, como conexões com servidores de email, bancos de dados SQL ou serviços que são executados em outros protocolos não HTTP/HTTPS.

As solicitações HTTP/HTTPS do AEM em portas padrão (80/443) são permitidas por padrão e não precisam de configuração ou considerações extras.

HTTP/HTTPS em portas fora do padrão

Ao criar conexões HTTP/HTTPS com portas fora do padrão (não-80/443) do AEM, as conexões devem ser feitas por meio de hosts e portas especiais, fornecidas por meio de espaços reservados.

O AEM fornece dois conjuntos de variáveis especiais do sistema Java™ que são mapeadas para proxies HTTP/HTTPS do AEM.

Nome da variável Utilização Código Java™ Configuração OSGi
AEM_PROXY_HOST Host proxy para conexões HTTP/HTTPS System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel") $[env:AEM_PROXY_HOST;default=proxy.tunnel]
AEM_HTTP_PROXY_PORT Porta proxy para conexões HTTPS (defina o fallback como 3128) System.getenv().getOrDefault("AEM_HTTP_PROXY_PORT", 3128) $[env:AEM_HTTP_PROXY_PORT;default=3128]
AEM_HTTPS_PROXY_PORT Porta proxy para conexões HTTPS (defina o fallback como 3128) System.getenv().getOrDefault("AEM_HTTPS_PROXY_PORT", 3128) $[env:AEM_HTTPS_PROXY_PORT;default=3128]

Ao fazer chamadas HTTP/HTTPS para serviços externos em portas fora do padrão, nenhuma portForwards deve ser definido usando a API do Cloud Manager enableEnvironmentAdvancedNetworkingConfiguration operação, já que as "regras" de encaminhamento de porta são definidas "no código".

DICA

Consulte a documentação de saída de porta flexível do AEM as a Cloud Service para o conjunto completo de regras de roteamento.

Exemplos de código

HTTP/HTTPS em portas fora do padrão

Exemplo de código Java™ que faz a conexão HTTP/HTTPS do AEM as a Cloud Service para um serviço externo em portas HTTP/HTTPS não padrão.

Conexões não HTTP/HTTPS com serviços externos

Ao criar conexões não HTTP/HTTPS (por exemplo, SQL, SMTP e assim por diante) do AEM, a conexão deve ser feita por meio de um nome de host especial fornecido pelo AEM.

Nome da variável Utilização Código Java™ Configuração OSGi
AEM_PROXY_HOST Host proxy para conexões não HTTP/HTTPS System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel") $[env:AEM_PROXY_HOST;default=proxy.tunnel]

As conexões com serviços externos são então chamadas por meio do AEM_PROXY_HOST e a porta mapeada (portForwards.portOrig), que o AEM roteia para o nome de host externo mapeado (portForwards.name) e porta (portForwards.portDest).

Host do proxy Porta do proxy Host externo Porta externa
AEM_PROXY_HOST portForwards.portOrig portForwards.name portForwards.portDest

Exemplos de código

Conexão SQL usando JDBC DataSourcePool

Exemplo de código Java™ conectando-se a bancos de dados SQL externos configurando o pool de fontes de dados JDBC do AEM.

Conexão SQL usando APIs Java

Exemplo de código Java™ conectando-se a bancos de dados SQL externos usando APIs SQL do Java™.

VPN (Virtual Private Network)

Exemplo de configuração OSGi usando AEM para se conectar a serviços de email externos.

Nesta página