虚拟专用网络 (VPN)

了解如何将AEMas a Cloud Service与您的VPN连接起来,以便在AEM和内部服务之间创建安全的通信渠道。

什么是虚拟专用网络?

虚拟专用网络(VPN)允许AEMas a Cloud Service客户连接 AEM环境 Cloud Manager项目到现有, 支持 VPN。 VPN允许在AEMas a Cloud Service与客户网络内的服务之间安全且受控的连接。

Cloud Manager项目只能具有 单身 网络基础架构类型。 确保虚拟专用网络最大 适当类型的网络基础架构 的AEMas a Cloud Service。

NOTE
请注意,不支持将构建环境从Cloud Manager连接到VPN。 如果必须从专用存储库访问二进制工件,则必须使用公共Internet上可用的URL设置一个安全且受密码保护的存储库 如此处所述.

先决条件

使用Cloud Manager API设置虚拟专用网络时,需要满足以下条件:

有关更多详细信息,请观看以下演练,了解如何设置、配置和获取Cloud Manager API凭据,以及如何使用它们进行Cloud Manager API调用。

本教程使用 curl 以进行Cloud Manager API配置。 提供的 curl 命令采用Linux/macOS语法。 如果使用Windows命令提示符,请将 \ 换行符 ^.

为每个项目启用虚拟专用网络

首先在AEMas a Cloud Service上启用“虚拟专用网络”。

Cloud Manager

可以使用Cloud Manager启用灵活端口出口。 以下步骤概述了如何使用Cloud Manager在AEMas a Cloud Service上启用灵活端口出口。

  1. 登录到 Adobe Experience Manager Cloud Manager 作为Cloud Manager业务负责人。

  2. 导航到所需的项目。

  3. 在左侧菜单中,导航到 服务>网络基础架构.

  4. 选择 添加网络基础架构 按钮。

    添加网络基础架构

  5. 添加网络基础架构 对话框,选择 虚拟专用网络 选项。 填写字段并选择 继续. 请与贵组织的网络管理员合作以获取正确的值。

    添加VPN

  6. 创建至少一个VPN连接。 为连接提供一个有意义的名称,然后选择 添加连接 按钮。

    添加VPN连接

  7. 配置VPN连接。 请与贵组织的网络管理员合作以获取正确的值。 选择 保存 以确认添加连接。

    配置VPN连接

  8. 如果需要多个VPN连接,请根据需要使用更多连接。 添加所有VPN连接后,选择 继续.

    配置VPN连接

  9. 选择 保存 确认添加VPN和所有已配置的连接。

    确认VPN创建

  10. 等待网络基础架构创建并标记为 就绪. 此过程最多可能需要1小时。

    VPN创建状态

创建VPN后,您现在可以使用Cloud Manager API对其进行配置,如下所述。

Cloud Manager API

可使用Cloud Manager API启用虚拟专用网络。 以下步骤概述了如何使用Cloud Manager API在AEMas a Cloud Service上启用VPN。

  1. 首先,使用Cloud Manager API确定需要高级联网的区域 listRegions 操作。 此 region name 进行后续Cloud Manager API调用时需要使用。 通常,会使用生产环境所在的区域。

    在以下位置查找您的AEMas a Cloud Service环境所在的地区: Cloud Manager环境详细信息. Cloud Manager中显示的区域名称可以是 映射到区域代码 在Cloud Manager API中使用。

    listRegions HTTP请求

    code language-shell
    $ 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. 使用Cloud Manager API为Cloud Manager项目启用虚拟专用网络 createNetworkInfrastructure 操作。 使用适当的 region 从Cloud Manager API获得的代码 listRegions 操作。

    createNetworkInfrastructure HTTP请求

    code language-shell
    $ 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
    

    在中定义JSON参数 vpn-create.json 提供给curl的 ... -d @./vpn-create.json.

    下载示例vpn-create.json. 此文件只是一个示例。 根据中介绍的可选/必填字段,根据需要配置文件。 enableEnvironmentAdvancedNetworkingConfiguration.

    code language-json
    {
        "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
            }
        }]
    }
    

    等待45-60分钟,让Cloud Manager项目配置网络基础架构。

  3. 检查环境是否已完成 虚拟专用网络 使用Cloud Manager API进行配置 getNetworkInfrastructure 操作,使用 id 返回自 createNetworkInfrastructure HTTP请求。

    getNetworkInfrastructure HTTP请求

    code language-shell
    $ 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'
    

    验证HTTP响应中是否包含 状态就绪. 如果尚未准备就绪,请每隔几分钟重新检查一次状态。

创建VPN后,您现在可以使用Cloud Manager API对其进行配置,如下所述。

为每个环境配置虚拟专用网络代理

  1. 启用并配置 虚拟专用网络 使用Cloud Manager API在每个AEMas a Cloud Service环境中进行配置 enableEnvironmentAdvancedNetworkingConfiguration 操作。

    enableEnvironmentAdvancedNetworkingConfiguration HTTP请求

    code language-shell
    $ 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
    

    在中定义JSON参数 vpn-configure.json 提供给curl的 ... -d @./vpn-configure.json.

下载示例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 声明了一组主机,应通过默认共享IP地址范围而不是专用出口IP为其路由端口80或443。 nonProxyHosts 可能很有用,因为Adobe会自动优化通过共享IP传出的流量。

对于每个 portForwards 映射,高级联网定义以下转发规则:

代理主机
代理端口
外部主机
外部端口
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest

如果您的AEM部署 仅限 需要外部服务的HTTP/HTTPS连接,请保留 portForwards 数组为空,因为只有非HTTP/HTTPS请求才需要这些规则。

​2. 对于每个环境,使用Cloud Manager API的,验证VPN路由规则的有效性 getEnvironmentAdvancedNetworkingConfiguration 操作。

getEnvironmentAdvancedNetworkingConfiguration HTTP请求

$ 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'

​3. 可使用Cloud Manager API的 enableEnvironmentAdvancedNetworkingConfiguration 操作。 记住 enableEnvironmentAdvancedNetworkingConfigurationPUT 因此,所有规则都必须随此操作的每次调用一起提供。

​4. 现在,您可以在自定义AEM代码和配置中使用虚拟专用网络出口配置。

通过虚拟专用网络连接到外部服务

启用虚拟专用网络后,AEM代码和配置可以使用它们通过VPN调用外部服务。 AEM对两种外部调用的处理方式有所不同:

  1. 对外部服务的HTTP/HTTPS调用
    • 包括对在标准80或443端口以外的端口上运行的服务发出的HTTP/HTTPS调用。
  2. 对外部服务的非HTTP/HTTPS调用
    • 包括任何非HTTP调用,例如与Mail服务器、SQL数据库或在其他非HTTP/HTTPS协议上运行的服务的连接。

默认情况下,允许标准端口(80/443)上来自AEM的HTTP/HTTPS请求,但如果配置不正确,请勿使用VPN连接,如下所述。

HTTP/HTTPS

从AEM创建HTTP/HTTPS连接时,如果使用VPN,则会自动从AEM中代理HTTP/HTTPS连接。 无需其他代码或配置即可支持HTTP/HTTPS连接。

TIP
请参阅AEMas a Cloud Service的虚拟专用网络文档,了解 整套路由规则.

代码示例

HTTP/HTTPS

HTTP/HTTPS

Java™代码示例使用HTTP/HTTPS协议使从AEM的HTTP/HTTPS连接as a Cloud Service到外部服务。

非HTTP/HTTPS连接代码示例

创建非HTTP/HTTPS连接时(例如 AEM SQL、SMTP等),必须通过AEM提供的特殊主机名建立连接。

变量名称
使用
Java™代码
OSGi配置
AEM_PROXY_HOST
非HTTP/HTTPS连接的代理主机
System.getenv("AEM_PROXY_HOST")
$[env:AEM_PROXY_HOST]

然后,通过调用与外部服务的连接 AEM_PROXY_HOST 和映射的端口(portForwards.portOrig),则AEM会路由到映射的外部主机名(portForwards.name)和端口(portForwards.portDest)。

代理主机
代理端口
外部主机
外部端口
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest

代码示例

使用JDBC DataSourcePool的SQL连接

使用JDBC DataSourcePool的SQL连接

Java™代码示例通过配置AEM JDBC数据源池连接到外部SQL数据库。

使用Java API的SQL连接

使用Java™ API的SQL连接

Java™代码示例使用Java™的SQL API连接到外部SQL数据库。

虚拟专用网络 (VPN)

电子邮件服务

使用AEM连接到外部电子邮件服务的OSGi配置示例。

限制通过VPN访问AEMas a Cloud Service

虚拟专用网络配置限制对AEMas a Cloud Service环境的VPN访问。

配置示例

应用IP允许列表

应用IP允许列表

列入允许列表配置IP,以便只有VPN通信可以访问AEM。

AEM发布的基于路径的VPN访问限制

AEM发布的基于路径的VPN访问限制

要求AEM Publish上的特定路径具有VPN访问权限。

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69