仮想プライベートネットワーク(VPN)
AEM as a Cloud Service を VPN に接続して、AEM と内部サービスの間に安全な通信チャネルを作成する方法を説明します。
仮想プライベートネットワークとは
仮想プライベートネットワーク(VPN)により、AEM as a Cloud Service のお客様は、Cloud Manager プログラム内の AEM 環境 を、サポートされている既存の VPN に接続できます。 VPN により、AEM as a Cloud Service とお客様のネットワーク内のサービスとの間で、安全で制御された接続を実現できます。
Cloud Manager プログラムでは、単一の ネットワークインフラストラクチャタイプのみを持つことができます。 次のコマンドを実行する前に、仮想プライベートネットワークが AEM as a Cloud Service に最も適切なタイプのネットワークインフラストラクチャであることを確認してください。
前提条件
Cloud Manager API を使用して仮想プライベートネットワークを設定する場合は、次が必要です。
-
Cloud Manager のビジネスオーナー権限のある Adobeアカウント
-
Cloud Manager API の認証資格情報へのアクセス
- 組織 ID(別名 IMS 組織 ID)
- クライアント ID(API キー)
- アクセストークン(Bearer トークン)
-
Cloud Manager プログラム ID
-
Cloud Manager 環境 ID
-
必要なすべての接続パラメーターにアクセスできる ルートに戻づいた 仮想プライベートネットワーク。
詳しくは、Cloud Manager API 資格情報の設定、構成、取得方法を確認し、それらを使用して Cloud Manager API 呼び出しを実行します。
このチュートリアルでは、curl
を使用して Cloud Manager API を設定します。 指定された curl
コマンドは、Linux/macOS 構文を想定しています。 Windows のコマンドプロンプトを使用する場合は、\
改行文字を ^
で置換します。
プログラムごとの仮想プライベートネットワークの有効化
AEM as a Cloud Service の仮想プライベートネットワークを有効化することから始めます。
Cloud Manager を使用すると、フレキシブルポートエグレスを有効にすることができます。次の手順では、Cloud Manager を使用して AEM as a Cloud Service でフレキシブルポートエグレスを有効にする方法の概要について説明します。
-
Cloud Manager ビジネスオーナーとして Adobe Experience Manager Cloud Manager にログインします。
-
目的のプログラムに移動します。
-
左側のメニューで、サービス/ネットワークインフラストラクチャ に移動します。
-
「ネットワークインフラストラクチャを追加」ボタンを選択します。
-
ネットワークインフラストラクチャを追加 ダイアログで、「仮想プライベートネットワーク」オプションを選択します。フィールドに入力して、「続行」を選択します。組織のネットワーク管理者と連携して、正しい値を取得します。
-
1 つ以上の VPN 接続を作成します。接続に意味のある名前を付けて、「接続を追加」ボタンを選択します。
-
VPN 接続を設定します。組織のネットワーク管理者と連携して、正しい値を取得します。「保存」を選択して、接続の追加を確認します。
-
複数の VPN 接続が必要な場合は、必要に応じてさらに接続します。すべての VPN 接続を追加する際は、「続行」を選択します。
-
「保存」を選択して、VPN と設定済みのすべての接続の追加を確認します。
-
ネットワークインフラストラクチャが作成され、準備完了 とマークされるまで待ちます。このプロセスには最大 1 時間かかる場合があります。
VPN を作成したので、以下の説明に従って Cloud Manager API を使用して VPN を設定できます。
Cloud Manager API を使用して、仮想プライベートネットワークを有効にすることができます。次の手順では、Cloud Manager API を使用して AEM as a Cloud Service で VPN を有効にする方法の概要について説明します。
-
まず、Cloud Manager API の listRegions 操作を使用して、詳細なネットワーク構成が必要な地域を決定します。
region name
は後続の Cloud Manager API 呼び出しを行うために必要です。 通常、実稼動環境が存在する地域が使用されます。Cloud Manager で、環境の詳細の下にある AEM as a Cloud Service 環境の地域を見つけます。 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'
-
Cloud Manager API の createNetworkInfrastructure 操作を使用して、Cloud Manager プログラムの仮想プライベートネットワークを有効化します。 Cloud Manager API の
listRegions
操作から取得した適切なregion
コードを使用します。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
vpn-create.json
で JSON パラメーターを定義し、... -d @./vpn-create.json
を介して curl に提供します。サンプルの 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 } }] }
Cloud Manager プログラムがネットワークインフラストラクチャをプロビジョニングするまで 45 ~ 60 分待ちます。
-
環境が、Cloud Manager API の getNetworkInfrastructure 操作を使用して 仮想プライベートネットワーク の設定を完了したことを、前の手順で
createNetworkInfrastructure
HTTP リクエストから返されたid
を使用して確認します。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 を使用して VPN を設定できます。
環境ごとの仮想プライベートネットワークプロキシの設定
-
Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration 操作を使用して、各 AEM as a Cloud Service 環境で 仮想プライベートネットワーク の設定を作成します。
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
vpn-configure.json
で JSON パラメーターを定義し、... -d @./vpn-configure.json
を介して curl に提供します。サンプル vpn-configure.json のダウンロード
code language-json { "nonProxyHosts": [ "example.net", "*.example.org" ], "portForwards": [ { "name": "mysql.example.com", "portDest": 3306, "portOrig": 30001 }, { "name": "smtp.sendgrid.com", "portDest": 465, "portOrig": 30002 } ] }
nonProxyHosts
は、ポート 80 または 443 が専用のエグレス IP ではなくデフォルトの共有 IP アドレス範囲を介してルーティングされるホストのセットを宣言します。 共有 IP を介して送信されたトラフィックがアドビによって自動的に最適化されるので、nonProxyHosts
が役立つ場合があります。各
portForwards
マッピングでは、詳細ネットワークは次の転送ルールを定義します。table 0-row-5 1-row-5 プロキシホスト プロキシポート 外部ホスト 外部ポート AEM_PROXY_HOST
portForwards.portOrig
→ portForwards.name
portForwards.portDest
AEM デプロイメントで必要とする外部サービスが HTTP/HTTPS のみ の場合は、
portForwards
配列を空のままにします。これらのルールは非 HTTP/HTTPS リクエストにのみ必要なためです。 -
環境ごとに、Cloud Manager API の getEnvironmentAdvancedNetworkingConfiguration 操作を使用して、VPN ルーティングルールが有効であることを検証します。
getEnvironmentAdvancedNetworkingConfiguration HTTP リクエスト
code language-shell $ 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 での処理方法が 2 種類あります。
- 外部サービスへの HTTP/HTTPS 呼び出し
- 標準の 80 または 443 ポート以外のポートで動作するサービスに対して行われる HTTP/HTTPS 呼び出しが含まれます。
- 外部サービスへの HTTP/HTTPS 以外の呼び出し
- HTTP 以外の呼び出し(メールサーバーとの接続、SQL データベース、HTTP/HTTPS 以外のプロトコルで実行されるサービスなど)が含まれます。
AEM からの標準ポート(80/443)での HTTP/HTTPS リクエストはデフォルトで許可されていますが、以下のように適切に設定されていない場合、VPN 接続は使用されません。
HTTP/HTTPS
AEM から HTTP/HTTPS で接続する場合、VPN を使用すると、HTTP/HTTPS 接続が自動的 AEM からプロキシされます。 HTTP/HTTPS 接続をサポートするために、追加のコードや設定は必要ありません。
コードの例
非 HTTP/HTTPS 接続コードの例
AEM から HTTP/HTTPS 以外の接続を作成する場合(例:SQL、SMTP など)、接続は AEM から提供される特別なホスト名を使用して行う必要があります。
AEM_PROXY_HOST
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 as a Cloud Service へのVPN 経由でのアクセスの制限
仮想プライベートネットワークの設定で、AEM as a Cloud Service 環境へのアクセスを VPN に制限します。