クライアント サーバー アプリケーションを保護する

クライアント コネクタを使用してクライアント サーバー アプリケーションを保護する

概要

BeyondCorp Enterprise は、Google Cloud のゼロトラスト ソリューションで、統合された脅威対策とデータ保護によって限定公開アプリケーションへの安全なアクセスを提供します。BeyondCorp Enterprise は Chrome を使用して、すべてのウェブベース(HTTPS)アプリケーションへの安全なアクセスを提供します。

BeyondCorp Enterprise クライアント コネクタは、フル コンテキストと ID アウェア アクセスを使用して、Google Cloud と Google Cloud 以外の両方の環境で実行されているアプリケーションへのセキュアな接続を作成することで、ウェブ以外のアプリケーションにサポートを拡張します。

仕組み

次の図は、クライアント コネクタのアーキテクチャの概要を示しています。

BeyondCorp Enterprise クライアント コネクタのコンポーネント

クライアント コネクタを構成する主要なコンポーネントは次のとおりです。

Endpoint Verification とクライアント エージェント: クライアント コネクタは Endpoint Verification と統合されています。Endpoint Verification は、ユーザーのノートパソコンやデスクトップで実行されるネイティブの軽量エージェントを使用した Chrome 拡張機能で、デバイス情報を報告します。 Endpoint Verification は、エンドユーザーがクライアント ゲートウェイへの接続を開始および停止するためのコントロール プレーンとしても機能します。

クライアント ゲートウェイ: クライアントが接続できるリージョン サーバー側コンポーネントです。クライアント ゲートウェイは管理者によってデプロイされます。ゲートウェイは BeyondCorp Enterprise 適用システムと通信し、コンテキストアウェア チェックを適用します。BeyondCorp Enterprise 適用システムは、Identity-Aware Proxy と Access Context Manager(柔軟な BeyondCorp Enterprise ゼロトラスト ポリシー エンジン)を使用します。

クライアント コネクタは、安全なチャネルであるゲートウェイを介して、エンドユーザー、クライアント、デバイスから保護されたアプリケーションにトラフィックを送信します。Google Cloud 内または Google Cloud の外部で実行されているウェブ アプリケーションとウェブ以外のアプリケーションに接続できます。Cloud VPN または Cloud Interconnect を使用すると、Google Cloud 内部に存在していないアプリケーションに接続できます。

準備

BeyondCorp Enterprise クライアント コネクタを有効にする前に、以下のものがあることを確認してください。

  • BeyondCorp Enterprise ライセンス

  • Google Cloud 組織ドメイン。

  • 課金が割り当てられている Google Cloud プロジェクト。

  • Google Workspace Cloud Identity ユーザー アカウント。Cloud Identity アカウントを作成する必要がある場合は、Cloud Identity のユーザー アカウントを作成するをご覧ください。

  • 保護するウェブではないリソース。リソースは、Google Cloud にネイティブのもの、オンプレミス、または別のパブリック クラウドにあるものも可能です。カスタム VPC を作成するか、Google Cloud 上のアプリケーションを含む存のネットワークを使用できます。Cloud VPN または Cloud Interconnect を使用して、Google Cloud 以外のアプリケーションに接続することもできます。

  • 次の有効な API:

  • 次の IAM ロール:

  • クライアントに推奨される次のハードウェア構成のいずれか:

    • 少なくとも 2 つのコアと 2GB のメモリを備えた Apple® Mac® OS 10.11 以降。
    • 少なくとも 4 つのコアと 2 GB のメモリを備えた Microsoft® Windows® 10 以降。

BeyondCorp Enterprise クライアント コネクタを有効にする

プライベート サービス アクセスを設定する

クライアント コネクタは、プライベート サービス アクセスを使用して、Google 管理の VPC ネットワークとコンシューマ VPC ネットワークの間の接続を有効にします。これにより、ユーザーからのトラフィックがコンシューマ VPC ネットワークに確実にルーティングされるようになります。

Console

  1. プライベート サービス アクセスでは、VPC ネットワークと Google マネージド VPC ネットワークの間に IP アドレスの競合が発生しないように、IP アドレス範囲を予約する必要があります。IP 範囲を割り当てるには、次の手順に従います。

    1. Google Cloud コンソールで [VPC ネットワーク] ページに移動します。
      [VPC ネットワーク] に移動

    2. アプリケーションに接続されている VPC ネットワークを選択します。

    3. [プライベート サービス接続] タブを選択します。

    4. [プライベート サービス接続] タブで、[サービスに割り当てられた IP 範囲] タブを選択します。

    5. [IP 範囲の割り当て] をクリックします。

    6. 割り振る IP 範囲の [名前] と [説明] を入力します。

    7. 割り当ての [IP 範囲] を指定します。

      • IP アドレス範囲を指定するには、[カスタム] を選択してから、CIDR ブロック(192.168.0.0/16 など)を入力します。
      • 接頭辞長を指定して利用可能な範囲を Google に選択させるには、[自動] を選択して接頭辞長(16 など)を入力します。

      /24 以上のネットワークを指定します。

    8. [割り当て] をクリックして、割り振る範囲を作成します。

  2. 次の手順で VPC ネットワーク ピアリング接続を作成します。

    1. Google Cloud コンソールで [VPC ネットワーク] ページに移動します。
      [VPC ネットワーク] に移動
    2. アプリケーションに接続されている VPC ネットワークを選択します。
    3. [プライベート サービス接続] タブを選択します。
    4. [プライベート サービス接続] タブで、[サービスへのプライベート接続] タブを選択します。
    5. ネットワークとクライアント コネクタ サービスの間にプライベート接続を作成するには、[接続の作成] をクリックします。
    6. 表示されたウィンドウで、[接続サービス プロデューサー] をデフォルトのままにします。[割り当て] で、前の手順で作成した割り振り範囲を選択します。
    7. [接続] をクリックして接続を作成します。
  3. ファイアウォール ルールを作成します。

    1. Google Cloud コンソールで [ファイアウォール] ページに移動します。
      [ファイアウォール] ページに移動
    2. [ファイアウォール ルールを作成] をクリックします。
    3. ファイアウォール ルールの [名前] を入力します。
      この名前はプロジェクトで一意にする必要があります。
    4. (省略可)ファイアウォール ルール ロギングを有効にできます。
      • [ログ] > [オン] をクリックします。
      • メタデータを省略するには、[ログの詳細] を展開して [メタデータを含める] をオフにします。
    5. アプリケーションに接続されているネットワークを指定します。
    6. ルールの [優先度] を指定します。数字が小さいほど優先度が高くなります。
    7. [トラフィックの方向] で [上り] をオンにします。
    8. [一致したときのアクション] に [許可] を選択します。
    9. [ターゲット] で [ネットワーク上のすべてのインスタンス] を選択します。
    10. [ソース フィルタ] に対して [IPv4 範囲] を選択し、ステップ 1address および prefixLength 値を入力して、割り当てられた IP 範囲を CIDR 形式で表します。任意の IPv4 送信元の場合は、形式 0.0.0.0/0 を使用します。
    11. [プロトコルとポート] で [すべて許可] を選択して、すべてのプロトコルと宛先ポートにルールを適用するようにします。
    12. [作成] をクリックします。

gcloud

  1. プライベート サービス アクセスでは、VPC ネットワークと Google マネージド VPC ネットワークの間に IP アドレスの競合が発生しないように、IP アドレス範囲を予約する必要があります。次のコマンドを実行して、IP 範囲を割り振ります

    gcloud compute addresses create RESERVED_RANGE \
      --network=CONSUMER_NETWORK \
      --project=CONSUMER_PROJECT \
      --prefix-length=16 \
      --purpose=VPC_PEERING \
      --global
    

    以下を置き換えます。

    • RESERVED_RANGE: VPC ピアリング用に予約される IP アドレス範囲の名前。名前に使用できるのは、小文字、数字、ハイフンのみです。
    • CONSUMER_NETWORK: アプリケーションに接続されている VPC ネットワークの名前。
    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  2. VPC ピアリング接続を作成します。

    gcloud services vpc-peerings connect \
      --network=CONSUMER_NETWORK \
      --project=CONSUMER_PROJECT \
      --ranges=RESERVED_RANGE \
      --service="servicenetworking.googleapis.com"
    

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

    • CONSUMER_NETWORK: アプリケーションに接続されている VPC ネットワークの名前。
    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • RESERVED_RANGE: VPC ピアリング用に予約される範囲の名前。
  3. 割り振られた IP 範囲の詳細を取得します。

    gcloud compute addresses describe RESERVED_RANGE \
      --global \
      --project=CONSUMER_PROJECT
    

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

    • RESERVED_RANGE: VPC ピアリング用に予約される範囲の名前。
    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  4. 前の手順の出力の addressprefixLength の値を使用して、割り振られた IP 範囲を CIDR 形式で表し、ファイアウォール ルールを作成します。

    gcloud compute firewall-rules create "allow-peered-ingress" \
      --network=CONSUMER_NETWORK \
      --project=CONSUMER_PROJECT \
      --direction ingress \
      --action allow \
      --source-ranges={Allocated IP range in CIDR format i.e. address/prefixLength} \
      --rules=all
    

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

    • CONSUMER_NETWORK: アプリケーションに接続されている VPC ネットワークの名前。
    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。

ファイアウォール ルールの構成の詳細については、VPC ファイアウォール ルールを使用するをご覧ください。

クライアント コネクタ リソースを設定する

次の 2 種類のリソースを設定する必要があります。

  • クライアント コネクタ サービス: クライアント ゲートウェイのグループに共通の構成を定義します。
  • クライアント ゲートウェイ: クライアント コネクタ サービスを参照し、ユーザー トラフィックを管理するリージョンを制御します。

クライアント コネクタ サービスは、ドメインごとに 1 つ、クライアント コネクタ サービスごとにリージョンごとに 1 つしか使用できません。また、クライアント コネクタ サービスとゲートウェイ リソースをホストできるのは、asia-east1europe-west1us-east1us-central1 のリージョンのみです。

クライアント コネクタ サービスを作成する

Console

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

    IAP に移動

  2. [コネクタ] > [クライアント コネクタを有効化] をクリックします。

  3. マネージド クライアントからトラフィックを受信する VPC ネットワークを選択する

  4. クライアントが接続できるリージョンを選択します。この手順ではクライアント ゲートウェイが作成されるため、クライアント ゲートウェイの作成、検証、削除の手順でゲートウェイを作成する必要はありません。

  5. クライアント コネクタでアクセスするアプリケーションの IP アドレスの範囲を入力します

  6. [クライアント コネクタを有効にする] をクリックします。コネクタの作成には数分を要する場合があります。

gcloud

次のコマンドを実行します。

gcloud beta beyondcorp client-connector services create CLIENT_CONNECTOR_SERVICE_NAME \
  --project=CONSUMER_PROJECT \
  --location=SERVICE_LOCATION \
  --config-from-file=/path/to/file/config.json

ここで、config.json は次のようになります。

   {
     "ingress": {
       "config": {
         "transportProtocol": "TCP",
         "destinationRoutes": [{
           "address": "DESTINATION_ADDRESS",
           "netmask": "DESTINATION_MASK"
         }]
       }
     },
     "egress": {
       "peeredVpc": {
         "networkVpc": "projects/CONSUMER_PROJECT/global/networks/CONSUMER_NETWORK"
       }
     }
   }

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

  • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。
  • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  • SERVICE_LOCATION: クライアント コネクタ サービスを作成するリージョン。次のリージョンのいずれかを指定できます。asia-east1europe-west1us-east1us-central1
  • DESTINATION_ADDRESS: アプリケーションをホストする宛先サブネットのホストアドレス。たとえば、アプリケーションで 10.0.0.0/28 を使用する場合、アドレスは 10.0.0.0 です。
  • DESTINATION_MASK: アプリケーションをホストする宛先サブネットのネットワーク マスク。たとえば、アプリケーションで 10.0.0.0/28 を使用する場合、マスクは 255.255.255.240 です。
  • CONSUMER_NETWORK: アプリケーションに接続されている VPC ネットワークの名前。

API

次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @config.json \
https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices?client_connector_service_id=CLIENT_CONNECTOR_SERVICE_NAME

ここで、config.json は次のようになります。

   {
     "ingress": {
       "config": {
         "transportProtocol": "TCP",
         "destinationRoutes": [{
           "address": "DESTINATION_ADDRESS",
           "netmask": "DESTINATION_MASK"
         }]
       }
     },
     "egress": {
       "peeredVpc": {
         "networkVpc": "projects/CONSUMER_PROJECT/global/networks/CONSUMER_NETWORK"
       }
     }
   }

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

  • DESTINATION_ADDRESS: アプリケーションをホストする宛先サブネットのホストアドレス。たとえば、アプリケーションで 10.0.0.0/28 を使用する場合、アドレスは 10.0.0.0 です。
  • DESTINATION_MASK: アプリケーションをホストする宛先サブネットのネットワーク マスク。たとえば、アプリケーションで 10.0.0.0/28 を使用する場合、マスクは 255.255.255.240 です。
  • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  • CONSUMER_NETWORK: アプリケーションに接続されている VPC ネットワークの名前。
  • SERVICE_LOCATION: クライアント コネクタ サービスを作成するリージョン。
  • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。

サービスを一覧表示して、クライアント コネクタ サービスが作成されたことを確認する

Console

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

    IAP に移動

  2. [コネクタ] をクリックします。コネクタは、[クライアント コネクタ] セクションに一覧表示され、ステータスに緑色のチェックマークが表示されます。

gcloud

次のコマンドを実行します。

gcloud beta beyondcorp client-connector services list \
  --project=CONSUMER_PROJECT \
  --location=SERVICE_LOCATION

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

  • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  • SERVICE_LOCATION: クライアント コネクタ サービスを作成するリージョン。

API

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices

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

  • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。

省略可: クライアント コネクタ サービスを更新する

Console

次の手順に沿って宛先ルートを更新します。

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

    IAP に移動

  2. [コネクタ] をクリックします。

  3. [クライアント コネクタ] セクションで、更新するクライアント コネクタの横にある鉛筆アイコンをクリックします。

  4. アプリケーションをホストする宛先サブネットの新しいホストアドレスとネットワーク マスクを入力し、[クライアント コネクタの更新] をクリックします。

gcloud

次のコマンドを実行して、宛先ルートを更新します。

gcloud beta beyondcorp client-connector services update CLIENT_CONNECTOR_SERVICE_NAME \
  --project=CONSUMER_PROJECT \
  --location=SERVICE_LOCATION \
  --config-from-file=/path/to/file/config.json

ここで、config.json は次のようになります。

{
  "ingress":{
    "config":{
      "destinationRoutes":[
        {
          "address":"NEW_DESTINATION_ADDRESS1",
          "netmask":"NEW_DESTINATION_MASK1"
        },
        {
          "address":"NEW_DESTINATION_ADDRESS2",
          "netmask":"NEW_DESTINATION_MASK2"
        }
      ]
    }
  }
}

以下を置き換えます。

  • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。
  • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。
  • NEW_DESTINATION_ADDRESS1NEW_DESTINATION_ADDRESS2: アプリケーションをホストする宛先サブネットの新しいホストアドレス。
  • NEW_DESTINATION_MASK1NEW_DESTINATION_MASK2: 宛先サブネットの新しいネットワーク マスク。

API

宛先ルートを更新するには、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @update.json \
https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME?update_mask=ingress.config.destinationRoutes

ここで、update.json は次のようになります。

{
  "ingress":{
    "config":{
      "destinationRoutes":[
        {
          "address":"NEW_DESTINATION_ADDRESS1",
          "netmask":"NEW_DESTINATION_MASK1"
        },
        {
          "address":"NEW_DESTINATION_ADDRESS2",
          "netmask":"NEW_DESTINATION_MASK2"
        }
      ]
    }
  }
}

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

  • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。
  • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。
  • NEW_DESTINATION_ADDRESS1NEW_DESTINATION_ADDRESS2: アプリケーションをホストする宛先サブネットの新しいホストアドレス。
  • NEW_DESTINATION_MASK1NEW_DESTINATION_MASK2: 宛先サブネットの新しいネットワーク マスク。

省略可: クライアント コネクタ サービスを削除する

Console

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

    IAP に移動

  2. [コネクタ] をクリックします。

  3. [クライアント コネクタ] セクションで、ごみ箱アイコンをクリックして、クライアント コネクタ サービスとゲートウェイを削除します。これには数分かかることがあります。

gcloud

次のコマンドを実行します。

gcloud beta beyondcorp client-connector services delete CLIENT_CONNECTOR_SERVICE_NAME \
  --project CONSUMER_PROJECT \
  --location SERVICE_LOCATION

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

  • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。
  • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。

API

次のコマンドを実行します。

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME

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

  • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
  • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。
  • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。

クライアント ゲートウェイを作成、確認、削除する

Console

  1. コンソールを使用してクライアント コネクタを設定する場合は、前の手順でクライアント コネクタ サービスを作成したときに、クライアント ゲートウェイが作成されます。

  2. クライアント ゲートウェイが稼働していることを確認するには:

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

      IAP に移動

    2. [コネクタ] をクリックします。コネクタと関連するゲートウェイは、[クライアント コネクタ] セクションに一覧表示され、ステータスに緑色のチェックマークが表示されます。
  3. 省略可: クライアント ゲートウェイを削除するには、次の手順を行います。

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

      IAP に移動

    2. [コネクタ] をクリックします。

    3. [クライアント コネクタ] セクションで、ゲートウェイを削除するクライアント コネクタの横にある鉛筆アイコンをクリックします。

    4. [ゲートウェイ リージョン] プルダウン リストからリージョン チェックボックスをオフにしてコネクタ サービスからリージョンを削除し、[クライアント コネクタの更新] をクリックします。

gcloud

  1. クライアント ゲートウェイを作成します。

    gcloud beta beyondcorp client-connector gateways create CLIENT_GATEWAY_NAME \
      --project CONSUMER_PROJECT \
      --location GATEWAY_LOCATION \
      --client-connector-service \
      projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME
    

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

    • CLIENT_GATEWAY_NAME: クライアント ゲートウェイの名前。
    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • GATEWAY_LOCATION: クライアント ゲートウェイを作成するリージョン。
    • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。
    • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。
  2. クライアント ゲートウェイが稼働していることを確認します。

    gcloud beta beyondcorp client-connector gateways list \
      --project CONSUMER_PROJECT \
      --location GATEWAY_LOCATION
    

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

    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • GATEWAY_LOCATION: クライアント ゲートウェイが配置されているリージョン。
  3. 省略可: クライアント ゲートウェイを削除します。

    gcloud beta beyondcorp client-connector gateways delete CLIENT_GATEWAY_NAME \
      --project CONSUMER_PROJECT \
      --location GATEWAY_LOCATION
    

    以下を置き換えます。

    • CLIENT_GATEWAY_NAME: クライアント ゲートウェイの名前。
    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • GATEWAY_LOCATION: クライアント ゲートウェイが配置されているリージョン。

API

  1. 次のコマンドを実行します。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d "{client_connector_service: \"projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME\"}" \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways?client_gateway_id=CLIENT_GATEWAY_NAME
    

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

    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。
    • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。
    • GATEWAY_LOCATION: クライアント ゲートウェイを作成するリージョン。
    • CLIENT_GATEWAY_NAME: クライアント ゲートウェイの名前。

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

  2. クライアント ゲートウェイが稼働していることを確認します。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways
    

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

    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • GATEWAY_LOCATION: クライアント ゲートウェイが配置されているリージョン。
  3. 省略可: クライアント ゲートウェイを削除します。

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways/CLIENT_GATEWAY_NAME
    

    以下を置き換えます。

    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • GATEWAY_LOCATION: クライアント コネクタ ゲートウェイが配置されているリージョン。
    • CLIENT_GATEWAY_NAME: クライアント ゲートウェイの名前。

コンテキストアウェア アクセス ポリシーを設定する

  1. プリンシパルを決定するか、ユーザー グループを作成します。保護された非ウェブ アプリケーションへのアクセスが必要なユーザーを特定します。また、ユーザー グループを作成して構成と管理を簡素化することもできます。

  2. (省略可)Access Context Manager でアクセスレベルを作成して、アプリケーションへのアクセスを制限するコンテキストアウェア ルールを定義します。

  3. クライアント コネクタ サービス リソースの IAM ポリシーを構成し、ウェブ以外のアプリへのアクセスに必要な Cloud BeyondCorp クライアント コネクタ サービス ユーザーのロール(roles/beyondcorp.clientConnectorServiceUser)をプリンシパルまたはユーザー グループに付与します。オプションとして、アクセスレベルが満たされている場合にのみ、ロールをプロビジョニングする IAM 条件を指定できます。リソースの IAM ポリシーを更新するには、コンソールまたは API を使用します。

    コンソールで次の手順を行います。

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

      IAP に移動

    2. [アプリケーション] をクリック
    3. 前に OAuth 同意画面を構成していない場合は、それを行ってこの手順を完了する必要があります。[新しいアプリケーションを接続する] セクションの [ウェブ以外のアプリケーション] でコネクタを選択します。
    4. 開いたウィンドウで [プリンシパルを追加] をクリックします。
    5. プリンシパル グループまたはユーザー グループに、ウェブアプリ以外のアプリへのアクセスに必要な Cloud BeyondCorp Client Connector Service User ロール(roles/beyondcorp.clientConnectorServiceUser)を付与します。オプションとして、アクセスレベルが満たされている場合にのみ、ロールをプロビジョニングするアクセスレベルを設定できます。アクセスレベルを指定するには、組織管理者であるか、組織のアクセスレベルに対する view 権限と edit 権限を持っている必要があります。
    6. [保存] をクリックします。

IAM ポリシーを更新する

Console

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

    IAP に移動

  2. [アプリケーション] タブをクリックし、[リソース] リストで [ウェブ以外のアプリケーション] を開きます。
  3. クライアント コネクタを選択します。コネクタに関連付けられた IAM 権限を含むセクションが開きます。
  4. 開いたセクションで、クライアント コネクタに関連する IAM ポリシーを更新できます。

gcloud

  1. 既存のポリシーを読み取ります。getIamPolicy() メソッドは、クライアント コネクタ サービス リソースの既存の IAM ポリシーを policy.json に読み込みます。

    gcloud beta beyondcorp client-connector services get-iam-policy CLIENT_CONNECTOR_SERVICE_NAME \
      --project=CONSUMER_PROJECT \
      --location=SERVICE_LOCATION > policy.json
    

    以下を置き換えます。

    • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。
    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。
  2. 返されたポリシーを編集します。policy.json のバインディングを更新して、新しい IAM のロールの割り当てを含めます。これは、テキスト エディタやプログラムで行えます。例:

    {
                "bindings": [
                  {
                    "role": "roles/beyondcorp.clientConnectorServiceUser",
                    "members": [
                      "user:EXAMPLE_USER@EXAMPLE.COM",
                      "group:EXAMPLE_GROUP@EXAMPLE.COM",
                    ],
                    "condition":
                     {
                       "expression":
            "'accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME' in
            request.auth.access_levels",
                      "title": "CONDITION_NAME"
                    }
                  }
                ]
    }
    

    以下を置き換えます。

    • POLICY_NAME: Access Context Manager アクセス ポリシーの数値名
    • LEVEL_NAME: Access Context Manager アクセスレベルの名前
    • CONDITION_NAME: IAM 条件のタイトル テキスト。
  3. 更新したポリシーを書き込みます。setIamPolicy() メソッドを使用して、更新された IAM ポリシーを書き込むことができます。例:

    gcloud beta beyondcorp client-connector services set-iam-policy CLIENT_CONNECTOR_SERVICE_NAME policy.json \
      --project=CONSUMER_PROJECT \
      --location=SERVICE_LOCATION

    以下を置き換えます。

    • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。
    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。

API

  1. 既存のポリシーを読み取ります。getIamPolicy() メソッドは、クライアント コネクタ サービス リソースの既存の IAM ポリシーを policy.json に読み込みます。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME:getIamPolicy > policy.json
    

    以下を置き換えます。

    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。
    • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。
  2. 返されたポリシーを編集します。policy.json のバインディングを更新して、新しい IAM のロールの割り当てを含めます。これは、テキスト エディタやプログラムで行えます。例:

     {
       "policy": {
          "bindings": [
            {
              "role": "roles/beyondcorp.clientConnectorServiceUser",
              "members": [
                "user:EXAMPLE_USER@EXAMPLE.COM",
                "group:EXAMPLE_GROUP@EXAMPLE.COM",
             ],
             "condition":
              {
                "expression":
     "'accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME' in
     request.auth.access_levels",
                "title": "CONDITION_NAME"
              }
           }
         ]
       }
     }
     

    以下を置き換えます。

    • POLICY_NAME: Access Context Manager アクセス ポリシーの数値名
    • LEVEL_NAME: Access Context Manager アクセスレベルの名前
    • CONDITION_NAME: IAM 条件のタイトル テキスト。
  3. 更新したポリシーを書き込みます。setIamPolicy() メソッドを使用して、更新された IAM ポリシーを書き込むことができます。例:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @policy.json \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME:setIamPolicy
     

    以下を置き換えます。

    • CONSUMER_PROJECT: CONSUMER_NETWORK をホストするプロジェクトの ID。
    • SERVICE_LOCATION: クライアント コネクタ サービスが配置されているリージョン。
    • CLIENT_CONNECTOR_SERVICE_NAME: クライアント コネクタ サービスの名前。

エンドポイント デバイスにクライアント コネクタ エージェントをインストールする(Windows または macOS)

  1. デバイスに Endpoint Verification を設定するの手順に沿って、Endpoint Verification 拡張機能を有効にします。

  2. Endpoint Verification が起動して実行されると、更新されたユーザーの Endpoint Verification 拡張機能に [接続を開始] ボタンが表示されます。保護された非ウェブ アプリケーションにアクセスするには、[接続を開始] ボタンをクリックします。

ユーザーが初めて接続を開始すると、Endpoint Verification はユーザーにクライアント コネクタ バイナリをダウンロードしてインストールするよう促します。または、次の URL でクライアント コネクタ バイナリをダウンロードすることもできます。

接続が確立されると、ユーザーは保護されたリソースにアクセスできます。 [接続を終了] ボタンをクリックすると、接続を終了できます。

トラブルシューティング

クライアント コネクタの使用中に問題が発生した場合は、問題を解決するための以下の情報をご覧ください。

アプリケーションにアクセスできない

クライアント コネクタ ゲートウェイが実行されており、接続は確立されましたが、引き続きアプリケーションにはアクセスできません。

この問題の最も一般的な理由と、考えられる解決策は次のとおりです。

  • Cloud VPN で割り振られた IP 範囲をアドバタイズしなかった。Cloud VPN を使用して Google Cloud 以外のアプリケーションに接続する場合は、Border Gateway Protocol(BGP)を介してピアルーターに、プライベート サービス アクセスに割り振られた IP 範囲もアドバタイズするようにします。詳しい方法については、Cloud Router でアドバタイズを指定するをご覧ください。

  • 宛先ルートに誤ったアドレスとマスクが指定されている。アドレスを提供する場合は、マスクされたビットがゼロであることを確認します。たとえば、10.0.10.1 は、255.255.255.0 (/24) ネットワーク マスクに指定する無効なアドレスです。正しい住所は 10.0.10.0 です。

  • プライベート サービス アクセスに割り振られた IP 範囲と、アプリケーションをホストしているネットワークが使用している IP サブネットとの間の IP 競合の可能性。これらの範囲が相互に排他的であることを確認してください。この問題は、アプリケーションが Google Cloud 以外のネットワークでホストされている場合に最もよく発生します。

Unable to connect to the network」というメッセージが表示されます。

Unable to connect to the network. Check your network connection and try again.」というメッセージが表示された場合、デバイスのインターネット接続はアクティブではありません。

解決策: インターネット接続がアクティブであることを確認して、接続を再試行します。

監査ログ

管理者は、クライアント コネクタの監査ログを含む BeyondCorp Enterprise 監査ログを、Google Cloud コンソールの Logging ページで確認できます。詳細については、BeyondCorp Enterprise サービス監査ロギングをご覧ください。

エンドユーザーの場合、次の手順で接続ログにアクセスできます。

  1. ブラウザで Endpoint Verification 拡張機能を右クリックします。
  2. [Options] をクリックします。
  3. ログレベルの粒度を選択します。デフォルトでは、粒度レベルは [Info] に設定されています。
  4. [ログを表示] をクリックします。

次のステップ