Configuração de redes avançadas para o AEM as a Cloud Service

Este artigo tem como objetivo apresentar a você os diferentes recursos avançados de rede no AEM as a Cloud Service, incluindo o provisionamento de autoatendimento de VPN, portas não padrão e endereços IP de saída dedicados.

INFORMAÇÕES

Você também pode encontrar uma série de artigos projetados para orientá-lo em cada uma das opções avançadas de rede neste local.

Visão geral

O AEM as a Cloud Service oferece vários tipos de recursos avançados de rede que podem ser configurados por clientes usando as APIs do Cloud Manager. Dentre elas:

Este artigo descreve cada uma dessas opções em detalhes, incluindo como elas podem ser configuradas. Como estratégia de configuração geral, o endpoint da API /networkInfrastructures é chamado no nível do programa para declarar o tipo desejado de rede avançada, seguido de uma chamada para o endpoint /advancedNetworking para cada ambiente para habilitar a infraestrutura e configurar parâmetros específicos do ambiente. Consulte os endpoints apropriados na documentação da API do Cloud Manager para cada sintaxe formal, bem como exemplos de solicitações e respostas.

Um programa pode provisionar uma única variação avançada em rede. Ao decidir entre a saída de porta flexível e o endereço IP de saída dedicado, é recomendável escolher a saída de porta flexível se um endereço IP específico não for necessário, pois a Adobe pode otimizar o desempenho do tráfego de saída da porta flexível.

INFORMAÇÕES

A rede avançada não está disponível para o programa sandbox.
Além disso, os ambientes devem ser atualizados para o AEM versão 5958 ou superior.

OBSERVAÇÃO

Os clientes já provisionados com a tecnologia de saída dedicada herdada que precisam configurar uma dessas opções não devem fazê-lo, pois a conectividade do site pode ser afetada. Entre em contato com o Suporte da Adobe para obter assistência.

Saída flexível da porta

Esse recurso avançado de rede permite configurar o AEM as a Cloud Service para direcionar o tráfego de saída por portas diferentes da HTTP (porta 80) e HTTPS (porta 443), que são abertas por padrão.

Considerações

Saída de porta flexível é a opção recomendada se você não precisar de VPN e não precisar de um endereço IP de saída dedicado, pois o tráfego que não depende de um egresso dedicado pode alcançar um rendimento mais alto.

Configuração

Uma vez por programa, o endpoint /program/<programId>/networkInfrastructures POST é chamado, passando o valor de flexiblePortEgress para o parâmetro e região kind. O endpoint responde com a network_id, bem como com outras informações, incluindo o status. O conjunto completo de parâmetros e a sintaxe exata, bem como informações importantes, como quais parâmetros não poderão ser alterados posteriormente, podem ser referenciados nos documentos da API.

Uma vez chamada, normalmente leva aproximadamente 15 minutos para a infraestrutura de rede ser provisionada. Uma chamada para o endpoint da infraestrutura de rede GET do Cloud Manager mostraria o status de "pronto".

Se a configuração de saída de porta flexível com escopo de programa estiver pronta, o endpoint PUT /program/<program_id>/environment/<environment_id>/advancedNetworking deve ser chamado por ambiente para permitir a operação em rede no nível do ambiente e declarar, opcionalmente, quaisquer regras de encaminhamento de portas. Os parâmetros são configuráveis por ambiente para oferecer flexibilidade.

As regras de encaminhamento de porta devem ser declaradas para qualquer porta de destino além da 80/443, mas somente se não estiverem usando o protocolo http ou https por especificar o conjunto de hosts de destino (nomes ou IP, com portas). Para cada host de destino, os clientes devem mapear a porta de destino pretendida para uma porta de 30000 a 30999.

A API deve responder em apenas alguns segundos, indicando um status de atualização e, após cerca de 10 minutos, o método GET do endpoint deve indicar que a rede avançada está ativada.

Atualizações

A configuração do nível de programa pode ser atualizada chamando o endpoint PUT /api/program/<program_id>/network/<network_id> e terá efeito em alguns minutos.

OBSERVAÇÃO

O parâmetro "kind" (flexiblePortEgress, dedicatedEgressIP ou VPN) não pode ser modificado. Entre em contato com o suporte ao cliente para obter assistência, descrevendo o que já foi criado e o motivo da alteração.

As regras de encaminhamento de porta por ambiente podem ser atualizadas chamando novamente o endpoint PUT /program/{programId}/environment/{environmentId}/advancedNetworking, certificando-se de incluir o conjunto completo de parâmetros de configuração, em vez de um subconjunto.

Desativar a saída de porta flexível

Para desabilitar a saída de porta flexível de um ambiente específico, chame DELETE [/program/{programId}/environment/{environmentId}/advancedNetworking]().

Para obter mais informações sobre as APIs, consulte a Documentação da API do Cloud Manager.

Roteamento de tráfego

Para o tráfego http ou https fluindo para portas que não sejam a 80 ou a 443, um proxy deve ser configurado usando as seguintes variáveis de ambiente de host e porta:

  • para HTTP: AEM_PROXY_HOST / AEM_HTTP_PROXY_PORT (padrão para proxy.tunnel:3128 em versões AEM < 6094)
  • para HTTPS: AEM_PROXY_HOST / AEM_HTTPS_PROXY_PORT (padrão para proxy.tunnel:3128 em versões AEM < 6094)

Por exemplo, este é um exemplo de código para enviar uma solicitação para o www.example.com:8443:

String url = "www.example.com:8443"
String proxyHost = System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel");
int proxyPort = Integer.parseInt(System.getenv().getOrDefault("AEM_HTTPS_PROXY_PORT", "3128"));
HttpClient client = HttpClient.newBuilder()
      .proxy(ProxySelector.of(new InetSocketAddress(proxyHost, proxyPort)))
      .build();

HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());

Ao usar bibliotecas de rede Java não padrão, configure proxies usando as propriedades acima para todo o tráfego.

O tráfego não http/s com destinos por meio de portas declaradas no parâmetro portForwards deve fazer referência a uma propriedade chamada AEM_PROXY_HOST, juntamente com a porta mapeada. Por exemplo:

DriverManager.getConnection("jdbc:mysql://" + System.getenv("AEM_PROXY_HOST") + ":53306/test");

A tabela abaixo descreve o roteamento de tráfego:

Tráfego Condição de destino Porta Conexão Exemplo de destino externo
Protocolo http ou https Tráfego http/s padrão 80 ou 443 Permitido
Tráfego não padrão (em outras portas fora a 80 ou 443) por proxy http configurado, usando a variável de ambiente a seguir e o número da porta do proxy. Não declare a porta de destino no parâmetro portForwards da chamada da API do Cloud Manager:
  • AEM_PROXY_HOST (padrão para `proxy.tunnel` em versões AEM < 6094)
  • AEM_HTTPS_PROXY_PORT (padrão para a porta 3128 em versões AEM < 6094)
Exceto portas 80 ou 443 Permitido example.com:8443
Tráfego não padrão (em outras portas fora das portas 80 ou 443) não usando proxy http Exceto portas 80 ou 443 Bloqueado
Não http ou não https O cliente se conecta à variável de ambiente AEM_PROXY_HOST usando um portOrig declarado no parâmetro da API portForwards. Qualquer Permitido mysql.example.com:3306
Todo o resto Qualquer Bloqueado db.example.com:5555

Configuração do Apache/Dispatcher

A diretiva mod_proxy da camada do AEM Cloud Service Apache/Dispatcher pode ser configurada usando as propriedades descritas acima.

ProxyRemote "http://example.com:8080" "http://${AEM_PROXY_HOST}:3128"
ProxyPass "/somepath" "http://example.com:8080"
ProxyPassReverse "/somepath" "http://example.com:8080"
SSLProxyEngine on //needed for https backends

ProxyRemote "https://example.com:8443" "http://${AEM_PROXY_HOST}:3128"
ProxyPass "/somepath" "https://example.com:8443"
ProxyPassReverse "/somepath" "https://example.com:8443"

Endereço IP de saída dedicado

OBSERVAÇÃO

Se um IP de saída dedicado tiver sido provisionado a você antes da versão de setembro de 2021 (06/10/21), consulte Clientes com endereço de saída dedicado herdado.

Benefícios

Esse endereço IP dedicado pode melhorar a segurança ao ser integrado a fornecedores SaaS (como um fornecedor de CRM) ou outras integrações fora do AEM as a Cloud Service que oferecem uma lista de permissões de endereços IP. Adicionar o endereço IP dedicado à lista de permissões garante que somente o tráfego do AEM Cloud Service do cliente possa fluir para o serviço externo. Além do tráfego de qualquer outro IP permitido.

Sem o recurso de endereço IP dedicado habilitado, o tráfego proveniente do AEM as a Cloud Service flui por meio de um conjunto de IPs compartilhados com outros clientes.

Configuração

INFORMAÇÕES

O recurso de encaminhamento do Splunk não é possível em um endereço IP de saída dedicado.

A configuração do endereço IP de saída dedicado é idêntica à saída de porta flexível.

A principal diferença é que o tráfego sempre sairá de um IP dedicado e único. Para localizar esse IP, use um resolvedor de DNS para identificar o endereço IP associado a p{PROGRAM_ID}.external.adobeaemcloud.com. Não é esperado que o endereço IP mude, mas se precisar mudar no futuro, será fornecida uma notificação com antecedência.

Além das regras de roteamento compatíveis com egressos flexíveis da porta no endpoint PUT /program/<program_id>/environment/<environment_id>/advancedNetworking, o endereço IP de saída dedicado suporta um parâmetro nonProxyHosts. Isso permite declarar um conjunto de hosts que devem rotear por um intervalo de endereços IPs compartilhados em vez do IP dedicado, o que pode ser útil, pois a criação de tráfego por meio de IPs compartilhados pode ser otimizada ainda mais. Os URLs nonProxyHost podem seguir os padrões example.com ou *.example.com, em que o curinga é compatível somente no início do domínio.

Ao decidir entre saída de porta flexível e endereço IP de saída dedicado, os clientes devem escolher saída de porta flexível se um endereço IP específico não for necessário, pois a Adobe pode otimizar o desempenho do tráfego de saída de porta flexível.

Desativar o endereço IP de saída dedicado

Para desativar o endereço IP de saída dedicado de um ambiente específico, chame DELETE [/program/{programId}/environment/{environmentId}/advancedNetworking]().

Para obter mais informações sobre as APIs, consulte a Documentação da API do Cloud Manager.

Roteamento de tráfego

O tráfego http ou https passará por um proxy pré-configurado, desde que use propriedades padrão do sistema Java para configurações de proxy.

O tráfego não http/s com destinos por meio de portas declaradas no parâmetro portForwards deve fazer referência a uma propriedade chamada AEM_PROXY_HOST, juntamente com a porta mapeada. Por exemplo:

DriverManager.getConnection("jdbc:mysql://" + System.getenv("AEM_PROXY_HOST") + ":53306/test");
Tráfego Condição de destino Porta Conexão Exemplo de destino externo
Protocolo http ou https Tráfego para serviços do Azure ou da Adobe Qualquer Por meio dos IPs de cluster compartilhados (não o IP dedicado) adobe.io
api.windows.net
Host correspondente ao parâmetro nonProxyHosts 80 ou 443 Por meio dos IPs de cluster compartilhados
Host correspondente ao parâmetro nonProxyHosts Exceto portas 80 ou 443 Bloqueado
Por meio da configuração de proxy http, configurada por padrão para tráfego http/s usando a biblioteca HTTP Java padrão do cliente Qualquer Por meio do IP de saída dedicado
Ignora a configuração do proxy http (por exemplo, se for removido explicitamente da biblioteca HTTP Java padrão do cliente ou se uma biblioteca Java que ignora a configuração do proxy padrão for usada) 80 ou 443 Por meio dos IPs de cluster compartilhados
Ignora a configuração do proxy http (por exemplo, se for removido explicitamente da biblioteca HTTP Java padrão do cliente ou se uma biblioteca Java que ignora a configuração do proxy padrão for usada) Exceto portas 80 ou 443 Bloqueado
Não http ou não https O cliente se conecta à variável env AEM_PROXY_HOST usando uma portOrig declarada no parâmetro de API portForwards Qualquer Por meio do IP de saída dedicado mysql.example.com:3306
Qualquer outra coisa Bloqueado

Uso de recursos

O recurso é compatível com código Java ou bibliotecas que resultam em tráfego de saída, desde que usem propriedades padrão do sistema Java para configurações de proxy. Na prática, isso deve incluir as bibliotecas mais comuns.

Abaixo está uma amostra de código:

public JSONObject getJsonObject(String relativePath, String queryString) throws IOException, JSONException {
  String relativeUri = queryString.isEmpty() ? relativePath : (relativePath + '?' + queryString);
  URL finalUrl = endpointUri.resolve(relativeUri).toURL();
  URLConnection connection = finalUrl.openConnection();
  connection.addRequestProperty("Accept", "application/json");
  connection.addRequestProperty("X-API-KEY", apiKey);

  try (InputStream responseStream = connection.getInputStream(); Reader responseReader = new BufferedReader(new InputStreamReader(responseStream, Charsets.UTF_8))) {
    return new JSONObject(new JSONTokener(responseReader));
  }
}

Algumas bibliotecas exigem configuração explícita para usar as propriedades padrão do sistema Java para configurações de proxy.

Um exemplo usando o Apache HttpClient, que requer chamadas explícitas ao
HttpClientBuilder.useSystemProperties() ou o uso de
HttpClients.createSystem():

public JSONObject getJsonObject(String relativePath, String queryString) throws IOException, JSONException {
  String relativeUri = queryString.isEmpty() ? relativePath : (relativePath + '?' + queryString);
  URL finalUrl = endpointUri.resolve(relativeUri).toURL();

  HttpClient httpClient = HttpClientBuilder.create().useSystemProperties().build();
  HttpGet request = new HttpGet(finalUrl.toURI());
  request.setHeader("Accept", "application/json");
  request.setHeader("X-API-KEY", apiKey);
  HttpResponse response = httpClient.execute(request);
  String result = EntityUtils.toString(response.getEntity());
}

O mesmo IP dedicado é aplicado a todos os programas de um cliente em sua Organização Adobe e para todos os ambientes em cada um de seus programas. Isso se aplica aos serviços de autor e de publicação.

Considerações sobre depuração

Para validar se o tráfego está saindo no endereço IP dedicado esperado, verifique os logs no serviço de destino, se disponível. Caso contrário, pode ser útil chamar um serviço de depuração como https://ifconfig.me/IP, que retornará o endereço IP de chamada.

Clientes de endereço de saída dedicado herdado

Se você tiver sido provisionado com um IP de saída dedicado antes de 30/09/2021, seu recurso de IP de saída dedicado só será compatível com portas HTTP e HTTPS.
Isso inclui HTTP/1.1 e HTTP/2 quando há criptografia. Além disso, um endpoint de saída dedicado pode conversar com qualquer público-alvo somente por HTTP/HTTPS nas portas 80/443, respectivamente.

VPN (Virtual Private Network)

A VPN permite a conexão com uma infraestrutura local ou data center do autor, publicação ou pré-visualização. Por exemplo, para os meios de acessar um banco de dados.

Também permite a Conexão com fornecedores SaaS, como um fornecedor CRM que oferece suporte a VPN ou à conexão de uma rede corporativa ao autor, pré-visuzliação ou publicação do AEM as a Cloud Service.

A maioria dos dispositivos VPN com tecnologia IPSec é compatível. Consulte a lista de dispositivos nesta página, com base nas informações da coluna instruções de configuração RouteBased. Configure o dispositivo conforme descrito na tabela.

Considerações gerais

  • Suporte limitado a uma única conexão VPN
  • O recurso de encaminhamento do Splunk não é possível em uma conexão VPN.

Criação

Uma vez por programa, o endpoint POST /program/<programId>/networkInfrastructures é chamado, transmitindo uma carga de informações de configuração incluindo: o valor de "vpn" para o parâmetro kind, região, espaço de endereço (lista de CIDRs - observe que isso não pode ser modificado posteriormente), resolvedores de DNS (para resolver nomes na rede do cliente) e informações de conexão VPN, como configuração de gateway, chave VPN compartilhada e política de segurança de IP. O endpoint responde com network_id, bem como através de outras informações, incluindo o status. O conjunto completo de parâmetros e a sintaxe exata devem ser referenciados na documentação da API.

Uma vez chamada, a infraestrutura de rede, normalmente, levará de 45 a 60 minutos para ser provisionada. O método GET da API pode ser chamado para retornar o status atual, que em dado momento inverterá de creating para ready. Consulte a documentação da API para todos os estados.

Se a configuração de VPN com escopo de programa estiver pronta, o endpoint PUT /program/<program_id>/environment/<environment_id>/advancedNetworking deve ser chamado por ambiente para habilitar a rede no nível do ambiente e declarar quaisquer regras de encaminhamento de porta. Os parâmetros são configuráveis por ambiente para oferecer flexibilidade.

Consulte a documentação da API para obter mais informações.

As regras de encaminhamento de portas devem ser declaradas para qualquer tráfego TCP de protocolo não http/s, roteado através da VPN, especificando o conjunto de hosts de destino (nomes ou IP e com portas). Para cada host de destino, os clientes devem mapear a porta de destino pretendida para uma porta de 30000 a 30999, em que os valores sejam exclusivos nos ambientes no programa. Os clientes também podem listar um conjunto de url no parâmetro nonProxyHosts, que declara o URL para o qual o tráfego deve ignorar o roteamento VPN, seguindo através de um intervalo de IP compartilhado. Os padrões seguidos são os de example.com ou *.example.com, em que o curinga é compatível somente no início do domínio.

A API deve responder em apenas alguns segundos, indicando um status de updating e após cerca de 10 minutos, uma chamada para o endpoint de GET do ambiente do Cloud Manager mostraria um status de ready, indicando que a atualização do ambiente foi aplicada.

Observe que mesmo se não houver regras de roteamento de tráfego de ambiente (hosts ou ignoradas), PUT /program/<program_id>/environment/<environment_id>/advancedNetworking ainda deve ser chamado, apenas com uma carga vazia.

Atualização da VPN

A configuração de VPN no nível do programa pode ser atualizada chamando o endpoint PUT /api/program/<program_id>/network/<network_id>.

Observe que o espaço de endereço não pode ser alterado após o provisionamento de VPN inicial. Se isso for necessário, entre em contato com o suporte ao cliente. Além disso, o parâmetro kind (flexiblePortEgress, dedicatedEgressIP ou VPN) não pode ser modificado. Entre em contato com o suporte ao cliente para obter assistência, descrevendo o que já foi criado e o motivo da alteração.

As regras de roteamento por ambiente podem ser atualizadas chamando novamente o endpoint PUT /program/{programId}/environment/{environmentId}/advancedNetworking, certificando-se de incluir o conjunto completo de parâmetros de configuração, em vez de um subconjunto. As atualizações de ambiente normalmente levam de 5 a 10 minutos para serem aplicadas.

Desativar a VPN

Para desativar a VPN para um ambiente específico, chame DELETE /program/{programId}/environment/{environmentId}/advancedNetworking. Mais detalhes na Documentação da API.

Roteamento de tráfego

A tabela abaixo descreve o roteamento de tráfego.

Tráfego Condição de destino Porta Conexão Exemplo de destino externo
Protocolo http ou https Tráfego para serviços do Azure ou da Adobe Qualquer Por meio dos IPs de cluster compartilhados (não o IP dedicado) adobe.io
api.windows.net
Host correspondente ao parâmetro nonProxyHosts 80 ou 443 Por meio dos IPs de cluster compartilhados
Host correspondente ao parâmetro nonProxyHosts Exceto portas 80 ou 443 Bloqueado
Se o IP cair no intervalo Endereço de gateway de VPN e por meio da configuração de proxy http (configurada por padrão para tráfego http/s usando a biblioteca Java padrão do cliente HTTP) Qualquer Através da VPN 10.0.0.1:443Também pode ser um nome de host.
Se o IP não cair no intervalo de endereço de gateway de VPN e por meio da configuração de proxy http (configurada por padrão para tráfego http/s usando a biblioteca Java padrão do cliente HTTP) Qualquer Por meio do IP de saída dedicado
Ignora a configuração do proxy http (por exemplo, se for removido explicitamente da biblioteca Java padrão do cliente HTTP ou se estiver usando a biblioteca Java que ignora a configuração de proxy padrão) 80 ou 443 Por meio dos IPs de cluster compartilhados
Ignora a configuração do proxy http (por exemplo, se for removido explicitamente da biblioteca Java padrão do cliente HTTP ou se estiver usando a biblioteca Java que ignora a configuração de proxy padrão) Exceto portas 80 ou 443 Bloqueado
Não http ou não https Se o IP cai no intervalo de espaço de endereço do gateway de VPN e o cliente se conecta à AEM_PROXY_HOST variável env usando uma portOrig declarada no parâmetro portForwards de API Qualquer Através da VPN 10.0.0.1:3306Também pode ser um nome de host.
Se o IP não cair no intervalo de espaço de endereço do gateway de VPN e o cliente se conectar à AEM_PROXY_HOST variável env usando uma portOrig declarada no parâmetro portForwards de API Qualquer Por meio do IP de saída dedicado
Qualquer outra coisa Qualquer Bloqueado

Domínios úteis para configuração

O diagrama abaixo fornece uma representação visual de um conjunto de domínios e IPs associados que são úteis para configuração e desenvolvimento. A tabela abaixo do diagrama descreve esses domínios e IPs.

Configuração de domínio VPN

Padrão de domínio Significado de saída (do AEM) Significado de entrada (no AEM)
p{PROGRAM_ID}.external.adobeaemcloud.com Endereço IP de saída dedicado para o tráfego flui para a Internet e não para redes privadas As conexões da VPN seriam exibidas na CDN como provenientes desse IP. Para permitir que somente conexões da VPN entrem no AEM, configure o Cloud Manager para permitir somente esse IP e bloquear todo o resto. Consulte a seção "Restringir ingresso em conexões VPN" para obter mais detalhes.
p{PROGRAM_ID}.{REGION}-gateway.external.adobeaemcloud.com N/A O IP do gateway de VPN no lado do AEM. A equipe de engenharia de rede de um cliente pode usar isso para permitir somente conexões VPN, de um endereço IP específico, ao respectivo gateway de VPN.
p{PROGRAM_ID}.{REGION}.inner.adobeaemcloud.net O IP do tráfego vindo do lado AEM da VPN para o lado do cliente. Isso pode ser incluído na lista de permissões na configuração do cliente para garantir que as conexões só possam ser feitas a partir do AEM. Se o cliente quiser permitir o acesso por VPN ao AEM, ele deverá configurar as entradas de DNS CNAME para mapear seu domínio personalizado e/ou author-p{PROGRAM_ID}-e{ENVIRONMENT_ID}.adobeaemcloud.com e/ou publish-p{PROGRAM_ID}-e{ENVIRONMENT_ID}.adobeaemcloud.com para isso.

Restringir VPN a conexões de entrada

Se você quiser permitir somente o acesso VPN ao AEM, as listas de permissões do ambiente poderão ser configuradas no Cloud Manager para que somente o IP definido por p{PROGRAM_ID}.external.adobeaemcloud.com tenha permissão para se comunicar com o ambiente. Isso pode ser feito da mesma forma que qualquer outra lista de permissões baseada em IP no Cloud Manager.

Se as regras tiverem de ser baseadas em caminho, use as diretivas http padrão no nível do dispatcher para negar ou permitir determinados IPs. Isso deve garantir que os caminhos desejados também não sejam armazenados em cache na CDN, para que a solicitação sempre chegue à origem.

Exemplo De Configuração Httpd

Order deny,allow
Deny from all
Allow from 192.168.0.1
Header always set Cache-Control private

Excluir a infraestrutura de rede de um programa

Para excluir a infraestrutura de rede de um programa, chame DELETE /program/{program ID}/networkinfrastructure/{networkinfrastructureID}.

OBSERVAÇÃO

Isso só excluirá a infraestrutura se todos os ambientes tiverem suas redes avançadas desativadas.

Transição entre tipos avançados de rede

É possível migrar entre tipos avançados de rede seguindo o procedimento abaixo:

  • desativar a rede avançada em todos os ambientes
  • excluir a infraestrutura de rede avançada
  • recriar as infraestruturas de rede avançadas com os valores corretos
  • reativar a rede avançada no nível do ambiente
AVISO

Esse procedimento resultará em um tempo de inatividade dos serviços de rede avançada durante o período de exclusão e recriação

Se o tempo de inatividade causar um impacto significativo nos negócios, entre em contato com o suporte ao cliente para obter assistência, descrevendo o que já foi criado e o motivo da alteração.

Nesta página