了解如何将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上启用“虚拟专用网络”。
首先,使用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'
使用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计划配置网络基础架构。
检查环境是否已完成 虚拟专用网络 使用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响应中是否包含 状态 之 就绪. 如果尚未准备就绪,请每隔几分钟重新检查一次状态。
启用并配置 虚拟专用网络 使用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
.
{
"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请求才需要这些规则。
对于每个环境,使用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'
可使用Cloud Manager API的 enableEnvironmentAdvancedNetworkingConfiguration 操作。 记住 enableEnvironmentAdvancedNetworkingConfiguration
是 PUT
因此,每次调用此操作时,都必须向所有规则提供。
现在,您可以在自定义AEM代码和配置中使用虚拟专用网络出口配置。
启用虚拟专用网络后,AEM代码和配置可以使用它们通过VPN调用外部服务。 AEM对两种外部调用的处理方式有所不同:
默认情况下,允许标准端口(80/443)上来自AEM的HTTP/HTTPS请求,但如果未按照以下所述进行适当配置,则这些请求不会使用VPN连接。
从AEM创建HTTP/HTTPS连接时,使用VPN时,HTTP/HTTPS连接会自动代理出AEM。 无需其他代码或配置即可支持HTTP/HTTPS连接。
请参阅AEMas a Cloud Service的虚拟专用网络文档,了解 整套路由规则.
![]() Java™代码示例使用HTTP/HTTPS协议使从AEM的HTTP/HTTPS连接as a Cloud Service到外部服务。 |
创建非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 |
![]() 通过配置AEM JDBC数据源池连接到外部SQL数据库的Java™代码示例。 |
![]() Java™代码示例使用Java™的SQL API连接到外部SQL数据库。 |
![]() 使用AEM连接到外部电子邮件服务的OSGi配置示例。 |
虚拟专用网络配置限制对AEMas a Cloud Service环境的VPN访问。
![]() 配置IP 允许列表,以便只有VPN流量可以访问AEM。 |
![]() 要求AEM Publish上的特定路径具有VPN访问权限。 |