VPN (Virtual Private Network)

Saiba como se conectar AEM as a Cloud Service com sua VPN para criar canais de comunicação seguros entre AEM e serviços internos.

O que é a rede privada virtual?

A VPN (Virtual Private Network) permite que um cliente AEM as a Cloud Service se conecte os ambientes AEM dentro de um programa do Cloud Manager para um compatível VPN. Isso permite conexões seguras e controladas entre AEM serviços as a Cloud Service e na rede do cliente.

Um programa do Cloud Manager só pode ter um individual tipo de infraestrutura de rede. Certifique-se de que a rede privada virtual seja a mais tipo adequado de infraestrutura de rede para seu AEM as a Cloud Service antes de executar os seguintes comandos.

OBSERVAÇÃO

Observe que não há suporte para a conexão do ambiente de criação do Cloud Manager com uma VPN. Se você precisar acessar artefatos binários de um repositório privado, deverá configurar um repositório seguro e protegido por senha com um URL que esteja disponível na Internet pública conforme descrito aqui.

Pré-requisitos

Os itens a seguir são necessários ao configurar a Rede Virtual Privada:

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

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

Habilitar Rede Privada Virtual por programa

Comece ativando a Rede privada virtual AEM as a Cloud Service.

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

    solicitação HTTP listRegiões

    $ 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. Habilitar rede privada virtual para um programa do Cloud Manager usando APIs 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 @./vpn-create.json
    

    Defina os parâmetros JSON em um vpn-create.json e fornecidos por via de curl ... -d @./vpn-create.json.

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

    {
        "kind": "vpn",
        "region": "va7",
        "addressSpace": [
            "10.104.182.64/26"
        ],
        "dns": {
            "resolvers": [
                "10.151.201.22",
                "10.151.202.22",
                "10.154.155.22"
            ],
            "domains": [
                "wknd.site",
                "wknd.com"
            ]
        },
        "connections": [{
            "name": "connection-1",
            "gateway": {
                "address": "195.231.212.78",
                "addressSpace": [
                    "10.151.0.0/16",
                    "10.152.0.0/16",
                    "10.153.0.0/16",
                    "10.154.0.0/16",
                    "10.142.0.0/16",
                    "10.143.0.0/16",
                    "10.124.128.0/17"
                ]
            },
            "sharedKey": "<secret_shared_key>",
            "ipsecPolicy": {
                "dhGroup": "ECP256",
                "ikeEncryption": "AES256",
                "ikeIntegrity": "SHA256",
                "ipsecEncryption": "AES256",
                "ipsecIntegrity": "SHA256",
                "pfsGroup": "ECP256",
                "saDatasize": 102400000,
                "saLifetime": 3600
            }
        }]
    }
    

    Aguarde de 45 a 60 minutos para que o Programa Cloud Manager forneça a infraestrutura de rede.

  3. Verifique se o ambiente foi concluído Rede privada virtual configuração usando a API do Cloud Manager getNetworkInfrastructure , usando a 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: <YOUR_BEARER_TOKEN>' \
        -H 'Content-Type: application/json'
    

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

Configurar proxies de rede privada virtual por ambiente

  1. Ative e configure a variável Rede privada virtual configuração em cada ambiente 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 @./vpn-configure.json
    

    Defina os parâmetros JSON em um vpn-configure.json e fornecidos por via de curl ... -d @./vpn-configure.json.

Baixe o exemplo vpn-configure.json

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

nonProxyHosts declara um conjunto de hosts para os quais a porta 80 ou 443 deve ser roteada por meio dos intervalos de endereço IP compartilhado padrão em vez do IP de saída dedicado. nonProxyHosts pode ser útil, pois o rastreamento de tráfego por meio de IPs compartilhados pode ser otimizado ainda mais automaticamente pelo Adobe.

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

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

Se sua implantação de AEM only requer conexões HTTP/HTTPS para serviço externo, deixe a variável portForwards matriz vazia, pois essas regras são necessárias apenas para solicitações não HTTP/HTTPS.

  1. Para cada ambiente, valide se as regras de roteamento de vpn 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 'x-api-key: <CLIENT_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'Content-Type: application/json'
    
  2. As configurações de proxy de rede privada virtual podem ser atualizadas usando a API do Cloud Manager enableEnvironmentAdvancedNetworkingConfiguration operação. Lembrar enableEnvironmentAdvancedNetworkingConfiguration é um PUT , portanto, todas as regras devem ser fornecidas com cada invocação desta operação.

  3. Agora você pode usar a configuração de saída da Rede privada virtual em seu código e configuração de AEM personalizados.

Conexão com serviços externos pela rede privada virtual

Com a Rede privada virtual ativada, AEM código e configuração podem usá-las para fazer chamadas para serviços externos por meio da VPN. Há dois sabores de chamadas externas que AEM tratam de forma diferente:

  1. Chamadas HTTP/HTTPS para serviços externos
    • Inclui chamadas HTTP/HTTPS feitas para serviços em execução em portas diferentes das portas 80 ou 443 padrão.
  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.

Por padrão, as solicitações HTTP/HTTPS de AEM em portas padrão (80/443) são permitidas, mas não usarão a conexão VPN se não estiver configurada adequadamente, conforme descrito abaixo.

HTTP/HTTPS

Ao criar conexões HTTP/HTTPS a partir do AEM, ao usar VPN, as conexões HTTP/HTTPS são automaticamente enviadas por proxy AEM. Não é necessário nenhum código ou configuração adicional para suportar conexões HTTP/HTTPS.

DICA

Consulte AEM documentação da Virtual Private Network do as a Cloud Service para obter o conjunto completo de regras de roteamento.

Exemplos de código

HTTP/HTTPS

Exemplo de código Java™ tornando a conexão HTTP/HTTPS do AEM as a Cloud Service para um serviço externo usando o protocolo HTTP/HTTPS.

Exemplos de código de conexões não HTTP/HTTPS

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("AEM_PROXY_HOST") | $[env:AEM_PROXY_HOST] |

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

Host proxy Porta 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 AEM pool de fonte de dados JDBC.

Conexão SQL usando APIs Java

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

VPN (Virtual Private Network)

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

Limitar acesso a AEM as a Cloud Service via VPN

A configuração da Rede Privada Virtual limita o acesso a AEM ambientes as a Cloud Service a uma VPN.

Exemplos de configuração

Aplicação de uma lista de permissões IP

Configure uma IP lista de permissões de forma que somente o tráfego VPN possa acessar AEM.

Restrições de acesso à VPN baseada em caminho para o AEM Publish

Exigir acesso VPN para caminhos específicos na publicação do AEM.

Nesta página