このページでは、BeyondCorp Enterprise アプリコネクタを設定して使用し、Google Cloud 以外のアプリケーションを保護する方法について説明します。
概要
BeyondCorp Enterprise アプリコネクタを使用すると、Google Cloud 以外の環境で動作している HTTPS アプリケーションに ID とコンテキストアウェア アクセスを提供できます。BeyondCorp Enterprise アプリコネクタは、他のクラウドおよびオンプレミス環境で動作しているアプリケーションと、BeyondCorp Enterprise 適用プレーンとの間の安全な認証済みインターフェースです。
BeyondCorp Enterprise アプリコネクタを使用する利点は、ファイアウォールの解放や、サイト間の Cloud VPN 接続の設定の必要がないことです。
アーキテクチャ
以下は、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 ライセンス。
- Google Cloud CLI バージョン 392 以降。
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 がインストールされていることを確認してください。
次のコマンドを実行して、必要な環境変数を設定します。
PROJECT_ID=my-project
my-project は、Google Cloud プロジェクト ID に置き換えます。
次のコマンドを実行して、API を有効にします。
gcloud config set project $PROJECT_ID gcloud services enable beyondcorp.googleapis.com
API
次のコマンドを実行して、アクセス トークンを取得し、必要な環境変数とエイリアスを設定します。
PROJECT_NUMBER=my-project-number ACCESS_TOKEN=my-access-token
my-project は、Google Cloud プロジェクト ID に置き換えます。
アクセス トークンを使用するために、便利なエイリアスを設定します。
alias gcurl="curl -H 'Authorization: Bearer ${ACCESS_TOKEN}' -H 'Content-Type: application/json'"
次のコマンドを実行して、API を有効にします。
gcurl https://serviceusage.googleapis.com/v1/projects/${PROJECT_NUMBER}/services/beyondcorp.googleapis.com:enable -d "{}"
アプリコネクタのリモート エージェントをインストールする
BeyondCorp Enterprise で保護するアプリケーションをホストするネットワーク環境ごとに、アプリコネクタのリモート エージェント VM をデプロイする必要があります。作成するリモート エージェントごとに、専用の VM または Docker がインストールされた Bare Metal サーバーが必要です。
リモート エージェントを作成するには、次の手順を行います。
- アプリケーション環境に VM インスタンスを作成します。
- リモート エージェントの VM ネットワーク ファイアウォールが、IAP-TCP IP 範囲 35.235.240.0/20 のポート 443 で開始されたすべての送信トラフィックを許可していることを確認します。
リモート エージェントをインストールします。
- DNS が正しく構成され、curl を使用してアプリケーションにアクセスできることを確認します。
- Docker Engine をインストールします。
- リモート エージェント 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
bce-connctl
エイリアスをシェルに追加するには、次のコマンドを実行します。source ~/.bce_alias
次のコマンドを実行して、必要な環境変数を設定します。
PROJECT_ID=my-project REGION=us-central1 CONNECTOR_NAME=my-connector
次のように置き換えます。- my-project: Google Cloud プロジェクト ID。
- us-central1: 接続とゲートウェイをデプロイするリージョン。
- my-connector: コネクタの名前。
bce-connctl
CLI で次のコマンドを実行して、コネクタを登録します。bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
画面上の指示に従って登録スクリプトをコピーして貼り付け、コネクタの登録を完了します。登録スクリプトを実行するには、プロジェクトに対する
OWNER
権限が必要です。登録スクリプトが完了すると、ランタイムがコネクタの構成を自動的に同期します。
リモート エージェントのインストールを確認します。
- 次のコマンドを実行して、サービスが動作していることを確認します。
sudo systemctl status beyondcorp
- リモート エージェントは、3 つの Docker コンテナ(
bce-control- runtime
、bce-logagent
、bce-connector
)で構成されます。次のコマンドを実行して、3 つのコンテナがすべて動作していることを確認します。docker ps --filter name=bce
- (省略可)次のコマンドを実行して、Docker コンテナのログファイルを確認できます。
docker logs -f CONTAINER_NAME
CONTAINER_NAME は、Docker コンテナ名に置き換えます。
- 次のコマンドを実行して、サービスが動作していることを確認します。
リモート アプリケーションを VPC に接続する
gcloud
次の手順を実施する前に、gcloud CLI SDK がインストールされ、beyondcorp.admin
ロールを持つアカウントでログインしていることを確認します。
次のコマンドを実行して、必要な環境変数を設定します。
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: アプリケーションに接続するポート番号。
アプリケーションと 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
この手順は、完了まで数分かかることがあります。
接続を作成したら、次のコマンドを実行してゲートウェイ 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
次のコマンドを実行して、必要な環境変数を設定します。
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: アプリケーションに接続するポート番号。
アプリケーションと 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}' \ }"
この手順は、完了まで数分かかることがあります。
接続を作成したら、次のコマンドを実行してゲートウェイ 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
ロールを持つアカウントでログインしていることを確認します。
次のコマンドを実行して、必要な環境変数を設定します。
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: アプリケーションのドメイン名。
次のコマンドを使用して、ネットワーク エンドポイント グループ(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 内のネットワーク エンドポイントのサブネットワーク名を指定します。指定しない場合、ネットワーク エンドポイントは、ネットワーク エンドポイント グループが作成されたリージョン内の任意のサブネットワークに属すことができます。
次のコマンドを実行して、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
次のコマンドを実行して、ドメインの 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)')"
次のコマンドを実行して、前の手順のバックエンドに基づいて外部 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 アドレスによってインターネット経由でアプリケーションにアクセスできるようになります。
外部 HTTP(S) ロードバランサを作成したら、Google Cloud が SSL 証明書をプロビジョニングできるように、IP アドレスをドメイン名に関連付ける必要があります。IP アドレスを DNS 名に関連付ける方法については、DNS プロバイダの手順をご覧ください。次のコマンドを実行してプロビジョニングのステータスを確認します。
- DNS プロバイダで設定する IP アドレスを表示します。
echo "Load Balancer ip address - $LB_IP"
- DNS を設定したら、次のコマンドを実行して、ドメイン名が IP アドレスに解決されるかどうかを確認します。
dig $DOMAIN_NAME
- 次のコマンドを実行して、プロビジョニングのステータスを取得します。
gcloud compute ssl-certificates describe $LB_PREFIX-ssl-cert \ --global \ --format="get(name,managed.status, managed.domainStatus)"
SSL 証明書をプロビジョニングすると、DNS 名を使用してアプリケーションにアクセスできるようになります。
- DNS プロバイダで設定する IP アドレスを表示します。
API
次のコマンドを実行して、必要な環境変数を設定します。
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: アプリケーションのドメイン名。
次のコマンドを使用して、ネットワーク エンドポイント グループ(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 を指定します。指定しない場合、ネットワーク エンドポイントは、ネットワーク エンドポイント グループが作成されたリージョン内の任意のサブネットワークに属すことができます。
次のコマンドを実行して、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' \ }] \ }"
次のコマンドを実行して、ドメインの 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')
次のコマンドを実行して、前の手順のバックエンドに基づいて外部 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 アドレスによってインターネット経由でアプリケーションにアクセスできるようになります。
外部 HTTP(S) ロードバランサを作成したら、Google Cloud が SSL 証明書をプロビジョニングできるように、IP アドレスをドメイン名に関連付ける必要があります。IP アドレスを DNS 名に関連付ける方法については、DNS プロバイダの手順をご覧ください。次のコマンドを実行してプロビジョニングのステータスを確認します。
- DNS プロバイダで設定する IP アドレスを表示します。
echo "Load Balancer ip address - $LB_IP"
- DNS を設定したら、次のコマンドを実行して、ドメイン名が IP アドレスに解決されるかどうかを確認します。
dig $DOMAIN_NAME
- 次のコマンドを実行して、プロビジョニングのステータスを取得します。
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 名を使用してアプリケーションにアクセスできるようになります。
- DNS プロバイダで設定する IP アドレスを表示します。
Identity-Aware Proxy の有効化
Identity-Aware Proxy(IAP)の設定については、Identity-Aware Proxy のドキュメントをご覧ください。IAP を設定したら、次の手順に従ってバックエンド サービスの IAP を有効にします。
[IAP] ページに移動します。
IAP[HTTPS リソース] で [
$LB_PREFIX-backend-service
] を見つけます。このリソースの IAP を有効にするには、[IAP] 列の切り替えボタンをクリックします。表示された [IAP の有効化] ウィンドウでチェックボックスをオンにして、このリソースの構成要件を確認し、[有効にする] をクリックして、IAP でリソースを保護することを確認します。ユーザーがアプリケーションを使用できるようにするには、次の手順を実行して、プロジェクトの IAP で保護されたウェブアプリ ユーザーのロールをユーザーに付与する必要があります。
$LB_PREFIX-backend-service
チェックボックスをオンにします。- 情報パネルで [プリンシパルを追加] を選択し、アプリケーションにアクセスするグループまたは個人のメールアドレスを入力します。
- [ロールを選択] プルダウン リストで、[Cloud IAP] > [IAP で保護されたウェブアプリ ユーザー] を選択し、[保存] をクリックします。
これで、オンプレミス アプリケーションがインターネットに公開され、BeyondCorp Enterprise によって保護されます。
Google Cloud コンソールを使用してアプリコネクタを設定する
Google Cloud コンソールを使用して BeyondCorp Enterprise アプリコネクタをデプロイするには、このセクションの手順を完了します。
アプリケーションの詳細を入力する
次の手順に従って、アプリケーションの詳細を追加します。
Google Cloud コンソールの [IAP] ページに移動します。
IAP に移動[CONNECT NEW APPLICATION] ボタンをクリックし、[アプリコネクタ経由で接続する] を選択します。
[アプリケーション名] に、保護するアプリケーションの名前を入力します。
[一般向けアプリケーション URL] に、ユーザーがアプリケーションにアクセスするための一般公開 URL を入力します。
[Next] をクリックします。
Google Cloud への接続を設定する
Google Cloud と Google Cloud 以外の環境間の接続を確立する手順は次のとおりです。
[CREATE APP CONNECTOR] ボタンをクリックし、次の情報を入力します。
- アプリコネクタ名: コネクタの名前。
- リージョン: 接続ゲートウェイとコネクタをデプロイするリージョン。
[CREATE] ボタンをクリックします。
[仮想マシンのプロビジョニング] ペインの手順に従って、リモート エージェントを VM にデプロイします。
[TEST CONNECTION STATUS] ボタンをクリックして、接続をテストします。
[Google Cloud でアプリケーションを見つける方法] に次の情報を入力して、前の手順で作成したコネクタを構成します。
- 内部ホスト名: アプリケーションをホストするオンプレミスの IP アドレスまたは FQDN。
- ポート: アプリケーションに接続するポート番号。
アプリケーションへのアクセス権を付与します(任意)
[新しいプリンシパル] で、次の 1 つ以上を入力します。
- Google アカウントのメールアドレス: user@gmail.com
- Google グループ: admins@googlegroups.com
- サービス アカウント: server@example.gserviceaccount.com
- Google Workspace ドメイン: example.com
- 全員: 「
allUsers
」と入力して、すべてのユーザーにアクセス権を付与します。 - すべての Google アカウント: Google アカウントにログインしたすべてのユーザーにアクセス権を付与する
allAuthenticatedUsers
1 つ以上のアクセスレベルを選択し、[次へ] をクリックします。
アプリケーションを発行
アプリケーションを公開するには、[SECURELY PUBLISH APPLICATION] ボタンをクリックします。
アプリケーションを公開し、[Securely 公開されたアプリケーション] の確認を受け取ったら、外部公開アプリケーション URL がプロキシの IP アドレスを指すように DNS レコードを作成する必要があります。手順は次のとおりです。
- [ステップ 2 - DNS の更新] で、[IP アドレス] フィールドの IP アドレスをコピーします。指定したアドレスを使用して DNS レコードを作成します。IP アドレスを DNS 名に関連付ける方法については、DNS プロバイダの説明をご覧ください。
DNS レコードを作成したら、[TEST] ボタンをクリックしてテストします。DNS テストに合格しましたというメッセージが表示されます。
[完了] をクリックします。
IAP を有効にする
IAP ページに移動します。
IAP に移動リソースのリストからアプリケーションを見つけて、IAP 列のボタンを選択します。
表示される [IAP の有効化] ダイアログで、[構成要件を読み、ドキュメントに従ってバックエンド サービスを構成しました] チェックボックスをオンにし、次に [TURN ON] をクリックします。
これで、オンプレミス アプリケーションがインターネットに公開され、BeyondCorp Enterprise によって保護されます。
次のステップ
- VPC の保護について詳しくは、VPC Service Controls をご覧ください。
- アクセスレベルを適用して、より詳細なコンテキスト ルールを設定する。
- Cloud Audit Logs を有効にするでアクセス リクエストを確認する。
トラブルシューティング
以前に作成したリソースが見つからない
gcloud CLI バージョン 392.0.0 以降を使用している場合は、新しいアプリコネクタのデフォルト リソース AppConnector
と AppConnection
を使用します。たとえば、gcloud alpha beyondcorp app connectors
と gcloud alpha beyondcorp app connections
はどちらも新しいリソースを参照します。
バージョン 392.0.0 より前の gcloud CLI を使用して作成された以前のリソースにアクセスするには、キーワード legacy
を使用します。たとえば、gcloud alpha beyondcorp app legacy connectors
と gcloud 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