アプリコネクタを使用した Google Cloud 以外のアプリケーションの保護

このページでは、BeyondCorp Enterprise アプリコネクタを設定して使用し、Google Cloud 以外のアプリケーションを保護する方法について説明します。

概要

BeyondCorp Enterprise アプリコネクタを使用すると、Google Cloud 以外の環境で動作している HTTPS アプリケーションに ID とコンテキストアウェア アクセスを提供できます。BeyondCorp Enterprise アプリコネクタは、他のクラウドおよびオンプレミス環境で動作しているアプリケーションと、BeyondCorp Enterprise 適用プレーンとの間の安全な認証済みインターフェースです。

BeyondCorp Enterprise アプリコネクタを使用する利点は、ファイアウォールの解放や、サイト間の Cloud VPN 接続の設定の必要がないことです。

アーキテクチャ

以下は、BeyondCorp Enterprise アプリコネクタの主要なコンポーネントを表示するアーキテクチャの概要図です。

BeyondCorp Enterprise アプリコネクタのコンポーネント

BeyondCorp Enterprise アプリコネクタのコンポーネントは、2 つの主要な API リソースであるコネクタと接続を使用して管理されます。

  • コネクタ: コネクタ リソースは、一意のアプリコネクタのリモート エージェントを定義します。アプリコネクタのリモート エージェントは、他のクラウドやオンプレミス環境などのリモート エンタープライズ環境にデプロイされます。リモート エージェントは、Google Cloud へのトンネル セッションを開始、維持し、Google Cloud からのトラフィックを受信し、エージェントと同じ環境のリモート アプリケーション エンドポイントにリレーします。
  • 接続: 接続リソースは、Google Cloud から IP address:Port または FQDN:Port を使用した特定のアプリケーション エンドポイントへの論理接続を定義します。接続リソースは、所定のアプリケーション エンドポイントに割り当てられた一連のマネージド アプリコネクタ ゲートウェイをオーケストレートします。ゲートウェイは Google Cloud で管理され、リモート エージェントからの不要になったトンネル セッションを終了させます。

コネクタと接続はリージョン リソースであり、リージョンのコンテキストでのみ使用できます。たとえば、リージョン A に関連付けられたコネクタを、リージョン B 用に作成した接続に割り当てることはできません。

始める前に

現時点では、HTTPS アプリケーションのみで BeyondCorp Enterprise アプリコネクタを使用できます。また、HTTPS ロードバランサは、バックエンドへの接続に Server Name Indication(SNI)拡張機能を使用しません。詳細については、ロードバランサからバックエンドへの暗号化をご覧ください。

BeyondCorp Enterprise アプリコネクタを使用するには、次が必要です。

BeyondCorp Enterprise アプリコネクタ エージェントには、Docker を実行する Linux VM が必要です。次の Linux ディストリビューションをおすすめします。

  • Debian 10.7(buster)
  • Red Hat Enterprise Linux Server 7.8(Maipo)x86_64
  • Ubuntu 16.04 以降

Linux VM ハードウェアでは、2 GB 以上の RAM を搭載した 2 つ以上の CPU をおすすめします。

アプリコネクタを設定して有効にするには、gcloud と API を使用するか、Google Cloud コンソールを使用します。gcloud と API を使用するには、次の手順を行います。Google Cloud コンソールを使用するには、Google Cloud コンソールを使用してアプリコネクタを設定するをご覧ください。

Google Cloud プロジェクトを設定する

BeyondCorp Enterprise アプリコネクタを使用する Google Cloud プロジェクトを設定するには、BeyondCorp Enterprise API を有効にする必要があります。API は、次の手順で有効にします。

gcloud

次の手順を実施する前に、gcloud CLI SDK がインストールされていることを確認してください。

  1. 次のコマンドを実行して、必要な環境変数を設定します。

    PROJECT_ID=my-project
    

    my-project は、Google Cloud プロジェクト ID に置き換えます。

  2. 次のコマンドを実行して、API を有効にします。

    gcloud config set project $PROJECT_ID
    gcloud services enable beyondcorp.googleapis.com
    

API

  1. 次のコマンドを実行して、アクセス トークンを取得し、必要な環境変数とエイリアスを設定します。

    PROJECT_NUMBER=my-project-number
    ACCESS_TOKEN=my-access-token
    

    my-project は、Google Cloud プロジェクト ID に置き換えます。

  2. アクセス トークンを使用するために、便利なエイリアスを設定します。

    alias gcurl="curl -H 'Authorization: Bearer ${ACCESS_TOKEN}' -H 'Content-Type: application/json'"
    

  3. 次のコマンドを実行して、API を有効にします。

    gcurl https://serviceusage.googleapis.com/v1/projects/${PROJECT_NUMBER}/services/beyondcorp.googleapis.com:enable -d "{}"
    

アプリコネクタのリモート エージェントをインストールする

BeyondCorp Enterprise で保護するアプリケーションをホストするネットワーク環境ごとに、アプリコネクタのリモート エージェント VM をデプロイする必要があります。作成するリモート エージェントごとに、専用の VM または Docker がインストールされた Bare Metal サーバーが必要です。

リモート エージェントを作成するには、次の手順を行います。

  1. アプリケーション環境に VM インスタンスを作成します。
    1. リモート エージェントの VM ネットワーク ファイアウォールが、IAP-TCP IP 範囲 35.235.240.0/20 のポート 443 で開始されたすべての送信トラフィックを許可していることを確認します。
  2. リモート エージェントをインストールします。

    1. DNS が正しく構成され、curl を使用してアプリケーションにアクセスできることを確認します。
    2. Docker Engine をインストールします。
    3. リモート エージェント VM で次のコマンドを実行します。
      curl https://raw.githubusercontent.com/GoogleCloudPlatform/beyondcorp-applink/main/bash-scripts/install-beyondcorp-runtime -o ./install-beyondcorp-runtime && chmod +x ./install-beyondcorp-runtime && ./install-beyondcorp-runtime
      
    4. bce-connctl エイリアスをシェルに追加するには、次のコマンドを実行します。
       source ~/.bce_alias
       
    5. 次のコマンドを実行して、必要な環境変数を設定します。

      PROJECT_ID=my-project
      REGION=us-central1
      CONNECTOR_NAME=my-connector
      
      次のように置き換えます。

      • my-project: Google Cloud プロジェクト ID。
      • us-central1: 接続とゲートウェイをデプロイするリージョン。
      • my-connector: コネクタの名前。
    6. bce-connctl CLI で次のコマンドを実行して、コネクタを登録します。

      bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
      

      画面上の指示に従って登録スクリプトをコピーして貼り付け、コネクタの登録を完了します。登録スクリプトを実行するには、プロジェクトに対する OWNER 権限が必要です。

      登録スクリプトが完了すると、ランタイムがコネクタの構成を自動的に同期します。

  3. リモート エージェントのインストールを確認します。

    1. 次のコマンドを実行して、サービスが動作していることを確認します。
      sudo systemctl status beyondcorp
      
    2. リモート エージェントは、3 つの Docker コンテナ(bce-control- runtimebce-logagentbce-connector)で構成されます。次のコマンドを実行して、3 つのコンテナがすべて動作していることを確認します。
      docker ps --filter name=bce
      
    3. (省略可)次のコマンドを実行して、Docker コンテナのログファイルを確認できます。
      docker logs -f CONTAINER_NAME
      
      CONTAINER_NAME は、Docker コンテナ名に置き換えます。

リモート アプリケーションを VPC に接続する

gcloud

次の手順を実施する前に、gcloud CLI SDK がインストールされ、beyondcorp.admin ロールを持つアカウントでログインしていることを確認します。

  1. 次のコマンドを実行して、必要な環境変数を設定します。

    CONNECTOR_NAME=my-connector
    CONNECTION_NAME=my-connection
    PROJECT_ID=my-project
    REGION=us-central1
    APP_ENDPOINT=APP_HOST:APP_PORT
    

    次のように置き換えます。

    • my-connector: 前の手順で定義したコネクタの名前。
    • my-connection: 接続の一意の名前。
    • my-project: Google Cloud プロジェクト ID。
    • us-central1: 接続とゲートウェイをデプロイするリージョン。
    • APP_HOST: アプリケーションをホストするオンプレミスの IP アドレスまたは FQDN。
    • APP_PORT: アプリケーションに接続するポート番号。
  2. アプリケーションと VPC の間の接続を作成するために、次のコマンドを実行します。

    gcloud alpha beyondcorp app connections create $CONNECTION_NAME \
    --project=$PROJECT_ID \
    --location=$REGION \
    --application-endpoint=$APP_ENDPOINT \
    --type=tcp \
    --connectors=$CONNECTOR_NAME \
    --display-name=$CONNECTION_NAME
    

    この手順は、完了まで数分かかることがあります。

  3. 接続を作成したら、次のコマンドを実行してゲートウェイ URI を取得します。

    GATEWAY_URI="$(gcloud alpha beyondcorp app connections describe $CONNECTION_NAME --project=$PROJECT_ID --location=$REGION --format='get(gateway.uri)')"
    GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/bce-ps7}"
    

    GATEWAY_URI_L7 は転送ルールの作成に使用されます。BeyondCorp Enterprise アプリコネクタは、Private Service Connect を使用して、ユーザー プロジェクトを Google 管理プロジェクトのマネージド リソースにリンクします。

API

  1. 次のコマンドを実行して、必要な環境変数を設定します。

    CONNECTOR_NAME=my-connector
    CONNECTION_NAME=my-connection
    PROJECT_ID=my-project
    REGION=us-central1
    APP_HOST=my-app-host
    APP_PORT=my-app-port
    

    次のように置き換えます。

    • my-connector: 前の手順で定義したコネクタの名前。
    • my-connection: 接続の一意の名前。
    • my-project: Google Cloud プロジェクト ID。
    • us-central1: 接続とゲートウェイをデプロイするリージョン。
    • my-app-host: アプリケーションをホストするオンプレミスの IP アドレスまたは FQDN。
    • my-app-port: アプリケーションに接続するポート番号。
  2. アプリケーションと VPC の間の接続を作成するために、次のコマンドを実行します。

    gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections?app_connection_id=${CONNECTION_NAME} \
    -d "{ \
        'application_endpoint': \
        { \
            'host': '${APP_HOST}', \
            'port': '${APP_PORT}' \
        }, \
        'type': 'TCP_PROXY', \
        'display_name': '${CONNECTION_NAME}' \
    }"
    

    この手順は、完了まで数分かかることがあります。

  3. 接続を作成したら、次のコマンドを実行してゲートウェイ URI を取得します。

    GATEWAY_URI=$(gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections/${CONNECTION_NAME} | jq -r '.gateway.uri')
    GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/'bce-ps7'}"
    

    GATEWAY_URI_L7 は転送ルールの作成に使用されます。BeyondCorp Enterprise アプリコネクタは、Private Service Connect を使用して、ユーザー プロジェクトを Google 管理プロジェクトのマネージド リソースにリンクします。

外部 HTTP(S) ロードバランサを構成する

外部 HTTP(S) ロードバランサに接続できるのは HTTPS アプリケーションのみです。HTTP アプリケーションはサポートされていません。

gcloud

次の手順を実施する前に、gcloud CLI SDK がインストールされ、beyondcorp.admin ロールを持つアカウントでログインしていることを確認します。

  1. 次のコマンドを実行して、必要な環境変数を設定します。

    LB_PREFIX=web-app
    PROJECT_ID=my-project
    REGION=us-central1
    DOMAIN_NAME=app.example.com
    
    次のように置き換えます。

    • web-app: すべてのロードバランサ リソースの名前に追加される接頭辞。
    • my-project: Google Cloud プロジェクト ID。
    • us-central1: 接続とゲートウェイがデプロイされるリージョン。
    • app.example.com: アプリケーションのドメイン名。
  2. 次のコマンドを使用して、ネットワーク エンドポイント グループ(NEG)を作成します。

    gcloud beta compute network-endpoint-groups create $LB_PREFIX-neg \
        --region=$REGION \
        --network-endpoint-type=private-service-connect \
        --psc-target-service=$GATEWAY_URI_L7
    

    オプションのフラグ:

    • --network フラグを設定して、NEG 内のネットワーク エンドポイントのネットワーク名を指定します。指定しない場合は、デフォルトのプロジェクト ネットワークが使用されます。
    • --subnet フラグを設定して、NEG 内のネットワーク エンドポイントのサブネットワーク名を指定します。指定しない場合、ネットワーク エンドポイントは、ネットワーク エンドポイント グループが作成されたリージョン内の任意のサブネットワークに属すことができます。
  3. 次のコマンドを実行して、NEG ベースのバックエンド サービスを作成し、Private Service Connect サービス アタッチメントに接続します。

    gcloud beta compute backend-services create $LB_PREFIX-backend-service \
        --global \
        --protocol=HTTPS \
        --load-balancing-scheme=EXTERNAL_MANAGED
    
    gcloud beta compute backend-services add-backend $LB_PREFIX-backend-service \
        --global \
        --network-endpoint-group=$LB_PREFIX-neg \
        --network-endpoint-group-region=$REGION
    
  4. 次のコマンドを実行して、ドメインの Google マネージド証明書を作成します。

    gcloud compute addresses create $LB_PREFIX-static-ip \
        --ip-version=IPV4 \
        --global
    gcloud compute ssl-certificates create $LB_PREFIX-ssl-cert \
        --domains=$DOMAIN_NAME \
        --global
    
    LB_IP="$(gcloud compute addresses describe $LB_PREFIX-static-ip --global --format='value(address)')"
    
  5. 次のコマンドを実行して、前の手順のバックエンドに基づいて外部 HTTP(S) ロードバランサを作成します。

    gcloud compute url-maps create $LB_PREFIX-map-https \
        --default-service=$LB_PREFIX-backend-service
    
    gcloud compute target-https-proxies create $LB_PREFIX-https-lb-proxy \
        --url-map=$LB_PREFIX-map-https \
        --ssl-certificates=$LB_PREFIX-ssl-cert
    
    gcloud beta compute forwarding-rules create "$LB_PREFIX-https-lb-forwarding-rule" \
        --global \
        --target-https-proxy=$LB_PREFIX-https-lb-proxy \
        --address=$LB_IP \
        --ports=443 \
        --load-balancing-scheme=EXTERNAL_MANAGED
    

    外部 HTTP(S) ロードバランサが作成されると、その IP アドレスによってインターネット経由でアプリケーションにアクセスできるようになります。

  6. 外部 HTTP(S) ロードバランサを作成したら、Google Cloud が SSL 証明書をプロビジョニングできるように、IP アドレスをドメイン名に関連付ける必要があります。IP アドレスを DNS 名に関連付ける方法については、DNS プロバイダの手順をご覧ください。次のコマンドを実行してプロビジョニングのステータスを確認します。

    1. DNS プロバイダで設定する IP アドレスを表示します。
      echo "Load Balancer ip address - $LB_IP"
      
    2. DNS を設定したら、次のコマンドを実行して、ドメイン名が IP アドレスに解決されるかどうかを確認します。
      dig $DOMAIN_NAME
      
    3. 次のコマンドを実行して、プロビジョニングのステータスを取得します。
    gcloud compute ssl-certificates describe $LB_PREFIX-ssl-cert \
        --global \
        --format="get(name,managed.status, managed.domainStatus)"
    

    SSL 証明書をプロビジョニングすると、DNS 名を使用してアプリケーションにアクセスできるようになります。

API

  1. 次のコマンドを実行して、必要な環境変数を設定します。

    LB_PREFIX=web-app
    PROJECT_ID=my-project
    REGION=us-central1
    DOMAIN_NAME=app.example.com
    
    次のように置き換えます。

    • web-app: すべてのロードバランサ リソースの名前に追加される接頭辞。
    • my-project: Google Cloud プロジェクト ID。
    • us-central1: 接続とゲートウェイがデプロイされるリージョン。
    • app.example.com: アプリケーションのドメイン名。
  2. 次のコマンドを使用して、ネットワーク エンドポイント グループ(NEG)を作成します。

    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups \
    -d "{ \
        'name': '${LB_PREFIX}-neg', \
        'network_endpoint_type': 'private-service-connect', \
        'psc_target_service': '${GATEWAY_URI_L7}' \
    }"
    

    省略可能フィールド:

    • network フィールドを設定して、NEG 内のネットワーク エンドポイントのネットワーク URL を指定します。指定しない場合は、デフォルトのプロジェクト ネットワークが使用されます。
    • subnetwork フィールドを設定して、NEG 内のネットワーク エンドポイントのサブネットワークの URL を指定します。指定しない場合、ネットワーク エンドポイントは、ネットワーク エンドポイント グループが作成されたリージョン内の任意のサブネットワークに属すことができます。
  3. 次のコマンドを実行して、NEG ベースのバックエンド サービスを作成し、Private Service Connect サービス アタッチメントに接続します。

    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices \
    -d "{ \
        'name': '${LB_PREFIX}-backend-service', \
        'service_protocol': 'HTTPS', \
        'port_name': 'https', \
        'load_balancing_scheme': 'EXTERNAL_MANAGED' \
    }"
    
    gcurl -X PATCH https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service \
    -d "{ \
        'backends': \
        [{ \
            'group': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups/${LB_PREFIX}-neg' \
        }] \
    }"
    
  4. 次のコマンドを実行して、ドメインの Google マネージド証明書を作成します。

    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses \
    -d "{ \
        'name': '${LB_PREFIX}-static-ip', \
        'ip_version': 'IPV4' \
    }"
    
    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates \
    -d "{ \
        'name': '${LB_PREFIX}-ssl-cert', \
        'managed': \
        { \
            'domains': '${DOMAIN_NAME}' \
        }, \
        'type': 'MANAGED' \
    }"
    
    LB_IP=$(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses/${LB_PREFIX}-static-ip | jq -r '.address')
    
  5. 次のコマンドを実行して、前の手順のバックエンドに基づいて外部 HTTP(S) ロードバランサを作成します。

    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps \
    -d "{ \
        'name': '${LB_PREFIX}-map-https', \
        'default_service': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service' \
    }"
    
    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies \
    -d "{ \
        'name': '${LB_PREFIX}-https-lb-proxy', \
        'url_map': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps/${LB_PREFIX}-map-https', \
        'ssl_certificate': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert' \
    }"
    
    gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/forwardingRules \
    -d "{ \
        'name': '${LB_PREFIX}-https-lb-forwarding-rule', \
        target: 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies/${LB_PREFIX}-https-lb-proxy', \
        'ip_address': '${LB_IP}', \
        'port_range': '443-443', \
        'load_balancing_scheme': 'EXTERNAL_MANAGED' \
    }"
    

    外部 HTTP(S) ロードバランサが作成されると、その IP アドレスによってインターネット経由でアプリケーションにアクセスできるようになります。

  6. 外部 HTTP(S) ロードバランサを作成したら、Google Cloud が SSL 証明書をプロビジョニングできるように、IP アドレスをドメイン名に関連付ける必要があります。IP アドレスを DNS 名に関連付ける方法については、DNS プロバイダの手順をご覧ください。次のコマンドを実行してプロビジョニングのステータスを確認します。

    1. DNS プロバイダで設定する IP アドレスを表示します。
      echo "Load Balancer ip address - $LB_IP"
      
    2. DNS を設定したら、次のコマンドを実行して、ドメイン名が IP アドレスに解決されるかどうかを確認します。
      dig $DOMAIN_NAME
      
    3. 次のコマンドを実行して、プロビジョニングのステータスを取得します。
    echo $(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert \
    | jq -r '.name + " " + .managed.status + " " + (.managed.domainStatus | keys[]) + "=" + .managed.domainStatus[]')
    

    SSL 証明書をプロビジョニングすると、DNS 名を使用してアプリケーションにアクセスできるようになります。

Identity-Aware Proxy の有効化

Identity-Aware Proxy(IAP)の設定については、Identity-Aware Proxy のドキュメントをご覧ください。IAP を設定したら、次の手順に従ってバックエンド サービスの IAP を有効にします。

  1. [IAP] ページに移動します。
    IAP

  2. [HTTPS リソース] で [$LB_PREFIX-backend-service] を見つけます。このリソースの IAP を有効にするには、[IAP] 列の切り替えボタンをクリックします。表示された [IAP の有効化] ウィンドウでチェックボックスをオンにして、このリソースの構成要件を確認し、[有効にする] をクリックして、IAP でリソースを保護することを確認します。

  3. ユーザーがアプリケーションを使用できるようにするには、次の手順を実行して、プロジェクトの IAP で保護されたウェブアプリ ユーザーのロールをユーザーに付与する必要があります。

    1. $LB_PREFIX-backend-service チェックボックスをオンにします。
    2. 情報パネルで [プリンシパルを追加] を選択し、アプリケーションにアクセスするグループまたは個人のメールアドレスを入力します。
    3. [ロールを選択] プルダウン リストで、[Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択し、[保存] をクリックします。

これで、オンプレミス アプリケーションがインターネットに公開され、BeyondCorp Enterprise によって保護されます。

Google Cloud コンソールを使用してアプリコネクタを設定する

Google Cloud コンソールを使用して BeyondCorp Enterprise アプリコネクタをデプロイするには、このセクションの手順を完了します。

アプリケーションの詳細を入力する

次の手順に従って、アプリケーションの詳細を追加します。

  1. Google Cloud コンソールの [IAP] ページに移動します。
    IAP に移動

  2. [CONNECT NEW APPLICATION] ボタンをクリックし、[アプリコネクタ経由で接続する] を選択します。

  3. [アプリケーション名] に、保護するアプリケーションの名前を入力します。

  4. [一般向けアプリケーション URL] に、ユーザーがアプリケーションにアクセスするための一般公開 URL を入力します。

  5. [Next] をクリックします。

Google Cloud への接続を設定する

Google Cloud と Google Cloud 以外の環境間の接続を確立する手順は次のとおりです。

  1. [CREATE APP CONNECTOR] ボタンをクリックし、次の情報を入力します。

    • アプリコネクタ名: コネクタの名前。
    • リージョン: 接続ゲートウェイとコネクタをデプロイするリージョン。
  2. [CREATE] ボタンをクリックします。

  3. [仮想マシンのプロビジョニング] ペインの手順に従って、リモート エージェントを VM にデプロイします。

  4. [TEST CONNECTION STATUS] ボタンをクリックして、接続をテストします。

  5. [Google Cloud でアプリケーションを見つける方法] に次の情報を入力して、前の手順で作成したコネクタを構成します。

    • 内部ホスト名: アプリケーションをホストするオンプレミスの IP アドレスまたは FQDN。
    • ポート: アプリケーションに接続するポート番号。

アプリケーションへのアクセス権を付与します(任意)

  1. [新しいプリンシパル] で、次の 1 つ以上を入力します。

    • Google アカウントのメールアドレス: user@gmail.com
    • Google グループ: admins@googlegroups.com
    • サービス アカウント: server@example.gserviceaccount.com
    • Google Workspace ドメイン: example.com
    • 全員: 「allUsers」と入力して、すべてのユーザーにアクセス権を付与します。
    • すべての Google アカウント: Google アカウントにログインしたすべてのユーザーにアクセス権を付与する allAuthenticatedUsers
  2. 1 つ以上のアクセスレベルを選択し、[次へ] をクリックします。

アプリケーションを発行

  1. アプリケーションを公開するには、[SECURELY PUBLISH APPLICATION] ボタンをクリックします。

  2. アプリケーションを公開し、[Securely 公開されたアプリケーション] の確認を受け取ったら、外部公開アプリケーション URL がプロキシの IP アドレスを指すように DNS レコードを作成する必要があります。手順は次のとおりです。

    • [ステップ 2 - DNS の更新] で、[IP アドレス] フィールドの IP アドレスをコピーします。指定したアドレスを使用して DNS レコードを作成します。IP アドレスを DNS 名に関連付ける方法については、DNS プロバイダの説明をご覧ください。
  3. DNS レコードを作成したら、[TEST] ボタンをクリックしてテストします。DNS テストに合格しましたというメッセージが表示されます。

  4. [完了] をクリックします。

IAP を有効にする

  1. IAP ページに移動します。
    IAP に移動

  2. リソースのリストからアプリケーションを見つけて、IAP 列のボタンを選択します。

  3. 表示される [IAP の有効化] ダイアログで、[構成要件を読み、ドキュメントに従ってバックエンド サービスを構成しました] チェックボックスをオンにし、次に [TURN ON] をクリックします。

これで、オンプレミス アプリケーションがインターネットに公開され、BeyondCorp Enterprise によって保護されます。

次のステップ

トラブルシューティング

以前に作成したリソースが見つからない

gcloud CLI バージョン 392.0.0 以降を使用している場合は、新しいアプリコネクタのデフォルト リソース AppConnectorAppConnection を使用します。たとえば、gcloud alpha beyondcorp app connectorsgcloud alpha beyondcorp app connections はどちらも新しいリソースを参照します。

バージョン 392.0.0 より前の gcloud CLI を使用して作成された以前のリソースにアクセスするには、キーワード legacy を使用します。たとえば、gcloud alpha beyondcorp app legacy connectorsgcloud alpha beyondcorp app legacy connections は両方とも以前のリソースを参照します。

以前のリソースを使用した構成は、現時点では引き続き機能しますが、将来的にはサポートを終了する予定です。

  • このガイドの手順に沿って、新しいリソースを構成します。
  • 構成で以前のリソースを使用している場合は、キーワード legacy を使用して、それらのリソースを見つけて削除します。このドキュメントの手順に沿ってリソースを再作成してください。
  • レガシー リソースを使用する不完全な構成がある場合は、キーワード legacy を使用して、それらのリソースを見つけて削除します。このドキュメントの手順に沿ってリソースを再作成してください。

TLS / SSL エラー

ERR_SSL_VERSION_OR_CIPHER_MISMATCH

ブラウザにエラー ERR_SSL_VERSION_OR_CIPHER_MISMATCH または同様の TLS / SSL エラーが表示され、ログインページにリダイレクトされません。

  • Google Cloud ロードバランサの詳細ページで証明書のステータスを確認します。

    注: Google マネージド証明書のプロビジョニングには最長で 60 分かかります。

TLS error

ブラウザは、ログインページにリダイレクトした後に upstream connect error or disconnect/reset before headers. retried and the latest reset reason: connection failure, transport failure reason: TLS error または同様の TLS / SSL エラーを表示します。

  • Connection で使用されているアプリケーション エンドポイントが HTTPS であることを確認します。
  • curl を使用して、リモート エージェント VM からアプリのエンドポイントにアクセスできることを確認します。

    curl https://$APP_ENDPOINT
    

    アプリケーション証明書が自己署名されている場合は、-k フラグの使用が必要になる場合があります。

診断ツール

run-post-install-checks

run-post-install-checks は、/var/beyondcorp/scripts/ にインストールされたスクリプトで、リモート エージェントが正しくインストールされ、登録され、正常であるかを確認します。app connection の作成と、リモート エージェント(コネクタ)への割り当てに成功したら、リモート エージェント VM に移動して次のコマンドで run-post-install-checks を実行します。

sudo /var/beyondcorp/scripts/run-post-install-checks

すべてが正常な状態であれば、スクリプトは成功メッセージを出力します。

run-diagnostics

run-diagnostics は、/var/beyondcorp/scripts/ にインストールされるスクリプトで、リモート エージェント VM の一般的な問題を診断し、BeyondCorp サポートチームと共有できるレポートを出力します。この診断スクリプトを実行するには、次のコマンドを実行します。

sudo /var/beyondcorp/scripts/run-diagnostics

診断レポートはコンソールと ./diagnostics-report.txt に書き込まれます。

リモート エージェント CLI

bce-connctl は、リモート エージェントとローカルで対話するためのリモート エージェント管理のコマンドライン インターフェース(CLI)です。この CLI は、リモート エージェントの登録、ステータスの確認、構成値の設定など、さまざまなコマンドをサポートしています。

Init コマンド

Init コマンドを使用すると、リモート エージェントを初期化し、エージェントを登録するスクリプトを生成できます。

例:

bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME

Status コマンド

Status コマンドを使用すると、リモート エージェントのステータスを管理できます。

  • List: このコマンドは、リモート エージェントの全体的なステータスと、このエージェントでサポートされている接続のステータスを一覧表示するために使用します。例: bce-connctl status list

Config コマンド

Config コマンドを使用すると、リモート エージェントの構成値を管理できます。

  • List: このコマンドは、リモート エージェントの構成値を一覧表示するために使用します。例: bce-connctl config list
  • Set: このコマンドは、リモート エージェントの構成値の設定に使用します。例: bce-connctl config set <key> <value>

Enrollment コマンド

Enrollment コマンドを使用すると、リモート エージェントの登録を管理できます。

  • Describe: このコマンドは、リモート エージェントの登録ステータス取得に使用します。例: bce-connctl enrollment describe

    bce-connctl init の登録スクリプトが正常に完了し、公開鍵が正常にアップロードされると、ステータスは ENROLLED になります。

ヘルプ

任意の bce-connctl コマンドに -h または --help フラグを追加して、使用状況に関する情報を出力できます。

bce-connctl init -h