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

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

前提条件

Cloud Manager API を使用して仮想プライベートネットワークを設定する場合は、次が必要です。

  • Cloud Manager のビジネスオーナー権限のある Adobeアカウント

  • Cloud Manager API の認証資格情報へのアクセス

    • 組織 ID(別名 IMS 組織 ID)
    • クライアント ID(API キー)
    • アクセストークン(Bearer トークン)
  • Cloud Manager プログラム ID

  • Cloud Manager 環境 ID

  • 必要なすべての接続パラメーターにアクセスできる​ ルートに戻づいた ​仮想プライベートネットワーク。

詳しくは Cloud Manger API 資格情報の設定、設定、取得方法を確認、それらを使用してCloud Manager API 呼び出しを行う方法を参照してください。

このチュートリアルでは、curl を使用して Cloud Manager API を設定します。 指定された curl コマンドは、Linux/macOS 構文を想定しています。 Windows のコマンドプロンプトを使用する場合は、\ 改行文字を ^ で置換します。

プログラムごとの仮想プライベートネットワークの有効化

AEM as a Cloud Service の仮想プライベートネットワークを有効化することから始めます。

Cloud Manager

Cloud Manager を使用すると、フレキシブルポートエグレスを有効にすることができます。次の手順では、Cloud Manager を使用して AEM as a Cloud Service でフレキシブルポートエグレスを有効にする方法の概要について説明します。

  1. Cloud Manager ビジネスオーナーとして Adobe Experience Manager Cloud Manager にログインします。

  2. 目的のプログラムに移動します。

  3. 左側のメニューで、サービス/ネットワークインフラストラクチャ ​に移動します。

  4. ネットワークインフラストラクチャを追加」ボタンを選択します。

    ネットワークインフラストラクチャを追加

  5. ネットワークインフラストラクチャを追加 ​ダイアログで、「仮想プライベートネットワーク」オプションを選択します。フィールドに入力して、「続行」を選択します。組織のネットワーク管理者と連携して、正しい値を取得します。

    VPN を追加

  6. 1 つ以上の VPN 接続を作成します。接続に意味のある名前を付けて、「接続を追加」ボタンを選択します。

    VPN 接続を追加

  7. VPN 接続を設定します。組織のネットワーク管理者と連携して、正しい値を取得します。「保存」を選択して、接続の追加を確認します。

    VPN 接続を設定

  8. 複数の VPN 接続が必要な場合は、必要に応じてさらに接続します。すべての VPN 接続を追加する際は、「続行」を選択します。

    VPN 接続を設定

  9. 保存」を選択して、VPN と設定済みのすべての接続の追加を確認します。

    VPN 作成を確認

  10. ネットワークインフラストラクチャが作成され、準備完了 ​とマークされるまで待ちます。このプロセスには最大 1 時間かかる場合があります。

    VPN の作成ステータス

VPN を作成したので、以下の説明に従って Cloud Manager API を使用して VPN を設定できます。

Cloud Manager API

Cloud Manager API を使用して、仮想プライベートネットワークを有効にすることができます。次の手順では、Cloud Manager API を使用して AEM as a Cloud Service で VPN を有効にする方法の概要について説明します。

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

VPN を作成したので、以下の説明に従って Cloud Manager API を使用して VPN を設定できます。

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

  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 アドレス範囲を介してルーティングされるホストのセットを宣言します。 共有 IP を介して送信されたトラフィックがアドビによって自動的に最適化されるので、nonProxyHosts が役立つ場合があります。

portForwards マッピングでは、詳細ネットワークは次の転送ルールを定義します。

プロキシホスト
プロキシポート
外部ホスト
外部ポート
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest

AEM デプロイメントで必要とする外部サービスが HTTP/HTTPS のみ ​の場合は、portForwards 配列を空のままにします。これらのルールは非 HTTP/HTTPS リクエストにのみ必要なためです。

​2. 環境ごとに、Cloud Manager API の getEnvironmentAdvancedNetworkingConfiguration 操作を使用して、VPN ルーティングルールが有効であることを検証します。

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'

​3. 仮想プライベートネットワークのプロキシ設定は、Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration 操作を使用して更新できます。 enableEnvironmentAdvancedNetworkingConfigurationPUT 操作であるため、この操作を呼び出すたびにすべてのルールを提供する必要があることに注意してください。

​4. これで、カスタム 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