了解如何将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的 ... -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的 ... -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
通过Adobe可进一步自动优化通过共享IP传出的流量,因此可能会很有用。
对于每个 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,则会自动从AEM中代理HTTP/HTTPS连接。 无需其他代码或配置即可支持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 |
![]() Java™代码示例通过配置AEM JDBC数据源池连接到外部SQL数据库。 |
![]() Java™代码示例使用Java™的SQL API连接到外部SQL数据库。 |
![]() 使用AEM连接到外部电子邮件服务的OSGi配置示例。 |
虚拟专用网络配置限制对AEMas a Cloud Service环境的VPN访问。
![]() 列入允许列表配置IP,以便只有VPN通信可以访问AEM。 |
![]() 要求AEM Publish上的特定路径具有VPN访问权限。 |