虚拟专用网络 (VPN)

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

什么是虚拟专用网络?

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

Cloud Manager程序只能具有 单身 网络基础架构类型。 确保虚拟专用网络最多 适当类型的网络基础架构 ,然后才可执行AEMas a Cloud Service。

注意

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

前提条件

设置虚拟专用网络时需要以下内容:

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

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

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

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

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

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

    listRegions HTTP请求

    $ 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请求

    $ 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 via ... -d @./vpn-create.json.

    下载示例vpn-create.json. 此文件只是一个示例。 根据以下位置记录的可选/必填字段,根据需要配置文件: 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
            }
        }]
    }
    

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

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

    getNetworkInfrastructure HTTP请求

    $ 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响应中是否包含 状态就绪. 如果尚未准备就绪,请每隔几分钟重新检查一次状态。

按环境配置虚拟专用网络代理

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

    enableEnvironmentAdvancedNetworkingConfiguration HTTP请求

    $ 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 via ... -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 可能很有用,因为通过共享IP传出的流量可由Adobe进一步自动优化。

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

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

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

  1. 对于每个环境,使用Cloud Manager API的 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'
    
  2. 可使用Cloud Manager API的 enableEnvironmentAdvancedNetworkingConfiguration 操作。 记住 enableEnvironmentAdvancedNetworkingConfigurationPUT 因此,每次调用此操作时,都必须向所有规则提供。

  3. 现在,您可以在自定义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时,HTTP/HTTPS连接会自动代理出AEM。 无需其他代码或配置即可支持HTTP/HTTPS连接。

小贴士

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

代码示例

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数据源池的SQL连接

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

使用Java API的SQL连接

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

虚拟专用网络 (VPN)

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

限制通过VPN访问AEMas a Cloud Service

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

配置示例

应用IP允许列表

配置IP 允许列表,以便只有VPN流量可以访问AEM。

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

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

在此页面上