仮想プライベートネットワーク(VPN)
AEM as a Cloud Service を VPN に接続して、AEM と内部サービスの間に安全な通信チャネルを作成する方法を説明します。
仮想プライベートネットワークとは
仮想プライベートネットワーク(VPN)により、AEM as a Cloud Service のお客様は、Cloud Manager プログラム内の AEM 環境 を、サポートされている既存の VPN に接続できます。これにより、AEM as a Cloud Service とお客様のネットワーク内のサービスとの間で、安全で制御された接続を実現できます。
Cloud Manager プログラムでは、単一の ネットワークインフラストラクチャタイプのみを持つことができます。次のコマンドを実行する前に、仮想プライベートネットワークが AEM as a Cloud Service に最も適切なタイプのネットワークインフラストラクチャであることを確認してください。
前提条件
仮想プライベートネットワークを設定する場合は、以下が必要です。
-
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 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 応答に、準備完了 の ステータス が含まれていることを確認します。まだ完了していない場合は、数分ごとにステータスを再確認します。
環境ごとの仮想プライベートネットワークプロキシの設定
-
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 のダウンロード
{
"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 アドレス範囲を介してルーティングされるホストのセットを宣言します。nonProxyHosts
は、共有 IP を介して送信されたトラフィックがアドビによって自動的に最適化される場合に役立ちます。
各 portForwards
マッピングでは、詳細ネットワークは次の転送ルールを定義します。
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 に制限します。