仮想プライベートネットワーク(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 に最も適切なタイプのネットワークインフラストラクチャであることを確認してください。

NOTE
ビルド環境を Cloud Manager から VPN に接続することはサポートされていません。プライベートリポジトリからバイナリアーティファクトにアクセスする必要がある場合は、ここで説明するように、パブリックインターネット上からアクセスできる URL を使用して、パスワードで保護されたセキュアなリポジトリを設定する必要があります。

前提条件

仮想プライベートネットワークを設定する場合は、以下が必要です。

  • 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 の仮想プライベートネットワークを有効化することから始めます。

  1. まず、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'
    
  2. 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 分待ちます。

  3. 環境が 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 応答に、準備完了 ​の​ ステータス ​が含まれていることを確認します。まだ完了していない場合は、数分ごとにステータスを再確認します。

環境ごとの仮想プライベートネットワークプロキシの設定

  1. 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 リクエストにのみ必要なためです。

  1. 環境ごとに、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'
    
  2. 仮想プライベートネットワークのプロキシ設定は、Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration 操作を使用して更新できます。enableEnvironmentAdvancedNetworkingConfigurationPUT 操作であるため、この操作を呼び出すたびにすべてのルールを提供する必要があることに注意してください。

  3. これで、カスタム AEM コードと設定で、仮想プライベート ネットワークのエグレス設定を使用できるようになりました。

仮想プライベートネットワーク経由での外部サービスへの接続

仮想プライベートネットワークを有効にすると、AEM のコードと設定で使用して、VPN 経由で外部サービスを呼び出すことができます。外部呼び出しには、AEM での処理方法が 2 種類あります。

  1. 外部サービスへの HTTP/HTTPS 呼び出し
    • 標準の 80 または 443 ポート以外のポートで動作するサービスに対して行われる HTTP/HTTPS 呼び出しが含まれます。
  2. 外部サービスへの HTTP/HTTPS 以外の呼び出し
    • HTTP 以外の呼び出し(メールサーバーとの接続、SQL データベース、HTTP/HTTPS 以外のプロトコルで実行されるサービスなど)が含まれます。

AEM からの標準ポート(80/443)での HTTP/HTTPS リクエストはデフォルトで許可されていますが、以下のように適切に設定されていない場合、VPN 接続は使用されません。

HTTP/HTTPS

AEM から HTTP/HTTPS で接続する場合、VPN を使用すると、HTTP/HTTPS 接続が自動的 AEM からプロキシされます。HTTP/HTTPS 接続をサポートするために、追加のコードや設定は必要ありません。

TIP
ルーティングルールの完全なセットについては、AEM as a Cloud Service の仮想プライベートネットワークのドキュメントを参照してください。

コードの例

HTTP/HTTPS

HTTP/HTTPS

HTTP/HTTPS プロトコルを使用して、AEM as a Cloud Service から外部サービスへの HTTP/HTTPS 接続を作成する Java™ コードの例。

非 HTTP/HTTPS 接続コードの例

AEM から HTTP/HTTPS 以外の接続を作成する場合(例: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

コードの例

JDBC DataSourcePool を使用した SQL 接続

JDBC DataSourcePool を使用した SQL 接続

AEM JDBC データソースプールを設定して外部 SQL データベースに接続する Java™コード例。

Java API を使用した SQL 接続

Java™ API を使用した SQL 接続

Java™ の SQL API を使用して外部 SQL データベースに接続する Java™ コードの例。

仮想プライベートネットワーク(VPN)

メールサービス

外部のメールサービスに接続するために AEM を使用する OSGi 設定例です。

AEM as a Cloud Service へのVPN 経由でのアクセスの制限

仮想プライベートネットワークの設定で、AEM as a Cloud Service 環境へのアクセスを VPN に制限します。

設定例

IP 許可リストの適用

IP 許可リストの適用

VPN トラフィックのみが AEM にアクセスできるように IP 許可リストを設定します。

AEM パブリッシュへのパスベースの VPN アクセス制限

AEM パブリッシュへのパスベースの VPN アクセス制限

AEM パブリッシュ上の特定のパスに対して VPN アクセスを要求します。

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69