虛擬私人網路 (VPN)

上次更新: 2024-01-26
  • 主題:
  • Security
    檢視有關此主題的更多資訊
  • 建立對象:
  • Intermediate
    Developer

瞭解如何將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。 如果您必須從私人存放庫存取二進位成品,則必須使用公開網際網路上可用的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,透過 ... -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,透過 ... -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 對應,進階網路會定義下列轉送規則:

Proxy主機 Proxy連線埠 外部主機 外部連線埠
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呼叫,例如與郵件伺服器、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連線的Proxy主機 System.getenv("AEM_PROXY_HOST") $[env:AEM_PROXY_HOST]

然後,會透過呼叫外部服務的連線。 AEM_PROXY_HOST 和對應的連線埠(portForwards.portOrig),則AEM會路由至對應的外部主機名稱(portForwards.name)和連線埠(portForwards.portDest)。

Proxy主機 Proxy連線埠 外部主機 外部連線埠
AEM_PROXY_HOST portForwards.portOrig portForwards.name portForwards.portDest

程式碼範例

使用JDBC DataSourcePool的SQL連線

Java™程式碼範例透過設定AEM JDBC資料來源集區來連線到外部SQL資料庫。

使用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存取權。

本頁內容