このページでは、BeyondCorp Enterprise アプリコネクタを設定して使用する方法について説明します。
概要
BeyondCorp Enterprise アプリコネクタを使用すると、Google Cloud 以外の環境とオンプレミス環境で動作している HTTPS アプリケーションに ID とコンテキストアウェア アクセスを提供できます。BeyondCorp Enterprise アプリコネクタは、BeyondCorp Enterprise 適用プレーンと Google Cloud 以外の環境およびオンプレミス環境で動作しているアプリケーションとの間の安全な認証済みインターフェースです。
BeyondCorp Enterprise アプリコネクタは、Google Cloud と組織の環境を接続する TCP プロキシです。TCP プロキシには、Google Cloud でホストされるエンドユーザー向けコンポーネントと、組織の環境でホストされるアプリケーション向けコンポーネントがあります。BeyondCorp Enterprise アプリコネクタを使用するために、ファイアウォールを開けることや、サイト間 Cloud VPN 接続を設定する必要はありません。
始める前に
BeyondCorp Enterprise アプリコネクタを使用するには、次のものが必要です。
- BeyondCorp Enterprise ライセンス。
- Google Cloud CLI バージョン 374 以降。
現時点では、HTTPS アプリケーションでのみ、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 個の CPU、2 GB の RAM をおすすめします。
BeyondCorp Enterprise アプリコネクタを設定してデプロイする
BeyondCorp Enterprise アプリコネクタを設定してデプロイするために必要な主な手順は次のとおりです。
- Google Cloud プロジェクトを設定する
- アプリコネクタのリモート エージェントをインストールする
- リモート アプリケーションを VPC に接続する
- 外部 HTTP(S) ロードバランサを構成する
- Identity-Aware Proxy の有効化
Google Cloud プロジェクトを設定する
BeyondCorp Enterprise アプリコネクタを使用する Google Cloud プロジェクトを設定するには、BeyondCorp Enterprise API を有効にする必要があります。API は、次の手順で有効にします。
次のコマンドを実行して、必要な環境変数を設定します。
PROJECT_ID=my-project
my-project は、Google Cloud プロジェクト ID に置き換えます。
次のコマンドを実行して、API を有効にします。
gcloud config set project $PROJECT_ID gcloud services enable beyondcorp.googleapis.com
アプリコネクタのリモート エージェントをインストールする
コネクタのリモート エージェント VM は、BeyondCorp Enterprise で保護するアプリケーションをホストするネットワーク環境ごとにデプロイする必要があります。作成するリモート エージェントごとに、専用の VM または Docker がインストールされた Bare Metal サーバーが必要です。
リモート エージェントを作成するには、次の手順を行います。
- アプリケーション環境に VM インスタンスを作成します。
リモート エージェントをインストールします。
curl
を実行して、DNS が正しく構成されアプリケーションにアクセスできることを確認します。- 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
- 画面の手順に沿って、リモート エージェント CLI である
bce-connctl
のエイリアスを作成します。 次のコマンドを実行して、必要な環境変数を設定します。
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 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 管理プロジェクトのマネージド リソースにリンクします。
外部 HTTP(S) ロードバランサを構成する
外部 HTTP(S) ロードバランサには、HTTPS アプリケーションのみ接続できます。HTTP アプリケーションはサポートされていません。
次のコマンドを実行して、必要な環境変数を設定します。
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 ベースのバックエンド サービスを作成し、Private Service Connect サービス アタッチメントに接続します。
gcloud beta compute network-endpoint-groups create $LB_PREFIX-neg \ --region=$REGION \ --network-endpoint-type=private-service-connect \ --psc-target-service=$GATEWAY_URI_L7 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 アドレスを表示します。
Identity-Aware Proxy の有効化
Identity-Aware Proxy の設定については、Identity-Aware Proxy のドキュメントをご覧ください。Identity-Aware Proxy を設定したら、OAuth CLIENT_ID
と OAuth CLIENT_SECRET
を使用して次の手順を行い、バックエンド サービスで Identity-Aware Proxy を有効にします。
OAuth クライアント ID、OAuth クライアント シークレットに基づいて環境変数を設定します。
CLIENT_ID=replace-with-client-id CLIENT_SECRET=replace-with-client-secret
次のように置き換えます。
- replace-with-client-id: Cloud Console からの OAuth
CLIENT_ID
値。 - replace-with-client-secret: Cloud Console からの OAuth
CLIENT_SECRET
値。
- replace-with-client-id: Cloud Console からの OAuth
次のコマンドを実行して、Identity-Aware Proxy を有効にします。
gcloud compute backend-services update $LB_PREFIX-backend-service \ --global \ --iap=enabled,oauth2-client-id=$CLIENT_ID,oauth2-client-secret=$CLIENT_SECRET
次のコマンドを実行して、ユーザーにアプリケーションへのアクセス権を付与します。
gcloud iap web add-iam-policy-binding \ --resource-type=backend-services \ --service=$LB_PREFIX-backend-service \ --member="user:user-ldap@mydomain.com" \ --role="roles/iap.httpsResourceAccessor"
user-ldap@mydomain.com は、適切なユーザー アカウントに置き換えます。
これで、オンプレミス アプリケーションがインターネットに公開され、BeyondCorp Enterprise によって保護されます。