限定公開ウェブ アプリケーションへの安全なアクセス

このドキュメントでは、プライベート ウェブ アプリケーションへのアクセスを保護するために Chrome Enterprise Premium セキュア ゲートウェイを設定する方法について説明します。

Chrome Enterprise Premium セキュア ゲートウェイは、フォワード プロキシとして機能し、ゼロトラスト アクセス フレームワークを適用して、プライベート ウェブ アプリケーションにアクセスするユーザーに対するきめ細かいコンテキストアウェア制御を実現します。

限定公開ウェブ アプリケーションへのアクセスを保護する仕組み

安全なトンネルを確立し、コンテキストアウェア アクセス ポリシーを適用することで、セキュア ゲートウェイは社内向けアプリケーションを限定公開にし、公共のインターネットに公開されないように保護します。これらのアプリケーションのトラフィックは、クライアントサイドのブラウザ設定によって、セキュア ゲートウェイのプロキシ エンドポイントを経由するよう制御されます。次に、セキュア ゲートウェイが関連するアクセス ポリシーを適用し、許可されている場合は、リクエストを宛先アプリケーションにルーティングします。

セキュア ゲートウェイは、次の環境でホストされている社内向けウェブ アプリケーションの保護に役立ちます。

  • Google Cloud プロジェクト: セキュア ゲートウェイは、 Google Cloud VPC ネットワークで実行されているアプリケーションに直接アクセスできます。

  • 非Google Cloud (オンプレミス データセンターまたは他のクラウド): まず、Google Cloud のプライベート VPC ネットワークと非Google Cloud ネットワークの間に接続を確立する必要があります。これは通常、Cloud VPN または Cloud Interconnect を使用して行われます。セキュア ゲートウェイは、この接続を使用してトラフィックを社内向け VPC ネットワークに送信し、社内向け VPC ネットワークはトラフィックを非Google Cloud 環境に転送します。

必要なロール

管理者に次のロールの付与を依頼します。

Identity and Access Management(IAM)ロールの詳細を確認する。

始める前に

セキュア ゲートウェイを設定する前に、次のことを確認してください。

シェル環境の設定

作業シェルで次の環境変数を定義して、設定プロセスを合理化し、セキュア ゲートウェイ API と通信できるようにします。

  • 一般的なパラメータ
    PROJECT_ID=PROJECT_ID
          

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

    • PROJECT_ID: セキュア ゲートウェイが作成されるプロジェクトの ID。
  • セキュア ゲートウェイのパラメータ
    SECURITY_GATEWAY_ID=SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="SECURITY_GATEWAY_DISPLAY_NAME"
          

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

    • SECURITY_GATEWAY_ID: 作成するセキュア ゲートウェイの ID。ID は 63 文字以内で、小文字、数字、ハイフンを使用できます。最初の文字は英字にする必要があります。最後の文字は英字または数字にできます。
    • SECURITY_GATEWAY_DISPLAY_NAME: セキュア ゲートウェイの人が読める形式の名前。名前は最大 63 文字で、印刷可能な文字を含めることができます。

セキュア ゲートウェイを作成する

Chrome Enterprise Premium セキュア ゲートウェイは、アプリケーションへの安全な接続を確立するための基本的な構成要素です。

Console

セキュア ゲートウェイを作成する手順は次のとおりです。

  1. Google Cloud コンソールで、[セキュア ゲートウェイ] ページに移動します。
    セキュア ゲートウェイに移動
  2. セキュア ゲートウェイを作成するプロジェクトを選択します。
  3. セキュア ゲートウェイを作成するには、[新しいゲートウェイを作成] をクリックして、ゲートウェイの作成プロセスが完了するまで待ちます。進行状況は、 Google Cloud コンソールの [通知] セクションで確認できます。

gcloud

gcloud を使用してセキュア ゲートウェイを作成するには、次のコマンドを実行します。

gcloud beyondcorp security-gateways create SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --display-name="SECURITY_GATEWAY_DISPLAY_NAME"
      

REST

REST API を使用してセキュア ゲートウェイを作成するには、次のコマンドを実行します。

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d '{ "display_name": "SECURITY_GATEWAY_DISPLAY_NAME" }' \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways?security_gateway_id=SECURITY_GATEWAY_ID"
      

プライベート ウェブ アプリケーションを構成する

セキュア ゲートウェイで特定アプリケーションのリソースを定義する前に、接続と適切なルーティングを有効にするために必要な権限とネットワーク設定を構成する必要があります。

サービス アカウントに権限を付与する

VPC ネットワークにトラフィックを正常に送信するには、セキュア ゲートウェイの委任サービス アカウントに特定の IAM 権限が付与されている必要があります。これにより、 Google Cloud VPC 内でホストされているか、Cloud VPN または Cloud Interconnect を介して接続されたGoogle Cloud 環境でホストされているかに関係なく、セキュア ゲートウェイがプライベート アプリケーションにアクセスできるようになります。

サービス アカウントに権限を付与する手順は次のとおりです。

  1. セキュア ゲートウェイの詳細を取得して、委任するサービス アカウントのメールアドレスを特定します。メールアドレスはレスポンスの delegatingServiceAccount フィールドにあります。

    gcloud

    gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \
        --project=PROJECT_ID \
        --location=global
                   

    REST

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID"
                   
  2. サービス アカウントとターゲット VPC プロジェクトの環境変数を設定します。
    DELEGATING_SERVICE_ACCOUNT="security-gateway@my-gateway-service-account.iam.gserviceaccount.com" # Replace with actual value
          
  3. プライベート VPC プロジェクトの委任サービス アカウントに roles/beyondcorp.upstreamAccess IAM ロールを付与します。
    gcloud projects add-iam-policy-binding PRIVATE_VPC_PROJECT_ID \
        --role=roles/beyondcorp.upstreamAccess \
        --member=serviceAccount:DELEGATING_SERVICE_ACCOUNT
        
    PRIVATE_VPC_PROJECT_ID は、プライベート ウェブアプリがデプロイされている VPC ネットワークのプロジェクト ID、または Cloud VPN/Interconnect が構成されている VPC ネットワークのプロジェクト ID に置き換えます。

ロールを付与してから Identity and Access Management ポリシーが適用されるまで、約 2 分待ちます。

ネットワーク ルーティングとファイアウォール ルールを構成する

セキュア ゲートウェイからのトラフィックがプライベート ウェブ アプリケーションに到達できるように、ファイアウォール ルール、ネットワーク ルーティング、DNS 設定を構成します。

Google Cloud内のアプリケーションのファイアウォール ルール

プライベート ウェブ アプリケーションが Google Cloud VPC ネットワーク内(Compute Engine VM、内部 IP を使用する Google Kubernetes Engine サービス、内部 TCP/UDP ロードバランサの背後など)でホストされている場合は、Google Cloud VPC ファイアウォール ルールを構成します。これにより、セキュア ゲートウェイの IP 範囲 136.124.16.0/20 からの上り(内向き)TCP トラフィックが許可されます。

非Google Cloud 環境のアプリケーションのファイアウォール ルール

プライベート ウェブ アプリケーションがオンプレミス データセンターまたは別のクラウド プロバイダのネットワークに存在し、Cloud VPN または Cloud Interconnect を使用して Google CloudVPC に接続されている場合は、オンプレミス ファイアウォールまたは同等のネットワーク セキュリティ制御(セキュリティ グループやネットワーク ACL など)でファイアウォール ルールを構成します。これにより、セキュア ゲートウェイの IP 範囲からの上り(内向き)TCP トラフィックが許可されます。

非Google Cloud 環境からセキュア ゲートウェイへのルーティングを構成する

オンプレミスや他のクラウドなど、Google Cloud 以外の環境でホストされているプライベート アプリケーションの双方向通信を容易にするには、外部ネットワークで次のセキュア ゲートウェイ IP 範囲 136.124.16.0/20 への戻りパスを作成する必要があります。

プライベート ネットワークが Cloud VPN または Cloud Interconnect を介してセキュア ゲートウェイの IP 範囲に到達できることを確認します。

  • 動的ルーティング: Cloud Router で Border Gateway Protocol(BGP)などの動的ルーティングを使用している場合は、Cloud Router がオンプレミス BGP デバイスにセキュア ゲートウェイの IP 範囲を明示的にアドバタイズしていることを確認します。 Google Cloud BGP は多くのルートを動的に交換しますが、セキュア ゲートウェイの IP 範囲には明示的なアドバタイズが必要です。

  • 静的ルーティング: 静的ルートを使用している場合は、ルーターやファイアウォールなどのオンプレミス ネットワーク機器で、セキュア ゲートウェイの各 IP 範囲のルートを手動で追加する必要があります。これらの静的ルートでは、セキュア ゲートウェイの IP 範囲宛てのトラフィックが Cloud VPN または Cloud Interconnect 接続を介して送信されるように指定する必要があります。

    静的ルーティングを使用する場合、Cloud VPN は次のサポートされているリージョンのいずれかに存在する必要があります。

    • africa-south1
    • asia-east1
    • asia-south1
    • asia-south2
    • asia-southeast1
    • europe-central2
    • europe-north1
    • europe-southwest1
    • europe-west1
    • europe-west2
    • europe-west3
    • europe-west4
    • europe-west8
    • europe-west9
    • northamerica-northeast1
    • northamerica-northeast2
    • northamerica-south1
    • southamerica-east1
    • southamerica-west1
    • us-central1
    • us-east1
    • us-east4
    • us-east5
    • us-west1

セキュア ゲートウェイのプライベート ホスト名解決の DNS 構成

セキュア ゲートウェイでプライベート アプリケーションのホスト名を解決するには、Google Cloud VPC ネットワークで Cloud DNS を使用してホスト名を解決できる必要があります。Cloud DNS の具体的な構成は、プライベート DNS レコードが権威的にホストされている場所によって異なります。

  • Google Cloud 内のアプリケーションで Cloud DNS 限定公開ゾーンを使用している場合: 限定公開アプリケーションが Google Cloud でホストされ、その DNS レコードが VPC ネットワークに関連付けられている Cloud DNS 限定公開ゾーン内で管理されている場合は、ゾーンが正しく構成され、アクセス可能であることを確認します。セキュア ゲートウェイは、VPC の既存の Cloud DNS の解決機能を使用します。

  • Google Cloud 環境にないアプリケーションまたは外部 DNS サーバーを使用するアプリケーション: プライベート アプリケーションがGoogle Cloud以外の環境(オンプレミスまたは他のクラウド)にある場合、または DNS レコードが VPC の Cloud DNS プライベート ゾーンの外部にある DNS サーバーによって管理されている場合は、これらのプライベート ドメインのクエリを転送するように Cloud DNS を構成する必要があります。通常、これには VPC 内に Cloud DNS 転送ゾーンを作成する必要があります。これらのゾーンは、指定された限定公開ドメインの DNS クエリを、オンプレミスや他のクラウドなどの権威プライベート DNS サーバーに転送します。

DNS 構成の詳細な手順については、転送ゾーンを作成するをご覧ください。

アプリケーション リソースを作成する

プライベート ウェブ アプリケーションへのアクセスを提供するには、アプリケーション リソースを作成して、セキュリティ ゲートウェイ フレームワーク内にアプリケーションを確立する必要があります。このリソースは、セキュア ゲートウェイがアプリケーションのトラフィックを(ホスト名に基づいて)識別する方法と、そのトラフィックをルーティングする場所を定義します。

  1. 次のコマンドを実行して、必要な環境変数を設定します。
       APPLICATION_ID=APPLICATION_ID
       APP_DISPLAY_NAME="APP_DISPLAY_NAME"
       HOST_NAME=HOST_NAME
       PRIVATE_NETWORK_RESOURCE_NAME=PRIVATE_NETWORK_RESOURCE_NAME
       
    次のように置き換えます。
    • APPLICATION_ID: アプリケーション リソースの一意の ID。
    • APP_DISPLAY_NAME: 表示する人が読める形式の名前。
    • HOST_NAME: ユーザーがアクセスするプライマリ ホスト名(例: private.local)。
    • PRIVATE_NETWORK_RESOURCE_NAME: VPC ネットワークの完全なリソース名(例: projects/my-project/global/networks/my-network)。
  2. アプリケーション リソースを作成します。

    Console

    Google Cloud コンソールを使用してアプリケーション リソースを作成するには、次の操作を行います。

    1. Google Cloud コンソールで、[セキュア ゲートウェイ] ページに移動します。
      セキュア ゲートウェイに移動
    2. アプリケーションを追加するには、[アプリケーションを追加] をクリックします。
    3. アプリケーションの種類として [限定公開アプリケーション] を選択します。
    4. アプリケーションの詳細を入力します。
      • アプリケーション名: 名前を入力します(例: GitHub)。
      • ドメイン マッチャー: セキュア ゲートウェイ経由でルーティングするドメイン パターンのカンマ区切りのリストを入力します。ポートは domain:port の形式で指定します。ワイルドカード(*)を使用できます。例: github.com:443
    5. VPC ネットワークを構成します。
      • 現在のプロジェクト内: VPC ネットワークが現在のプロジェクトにある場合は、プルダウンから VPC ネットワークを選択します。
      • 別のプロジェクト内: VPC ネットワークが別の Google Cloud プロジェクトにある場合は、VPC ネットワークの完全なリソース名(projects/my-project/global/networks/my-network など)を指定します。
    6. 省略可: 下り(外向き)ポリシーを定義する: プルダウン メニューから 1 つ以上の Google Cloud リージョンを選択します。
    7. アプリケーション リソースを作成するには、[作成] をクリックします。

    gcloud

    gcloud を使用してアプリケーション リソースを作成するには、次のコマンドを実行します。

    gcloud beyondcorp security-gateways applications create APPLICATION_ID \
        --project=PROJECT_ID \
        --security-gateway=SECURITY_GATEWAY_ID \
        --location=global \
        --display-name="APP_DISPLAY_NAME" \
        --endpoint-matchers="hostname=HOST_NAME,ports=[443]" \
        --upstreams=network=name="PRIVATE_NETWORK_RESOURCE_NAME"
            

    下り(外向き)リージョンを指定するには(たとえば、静的ルートを使用する場合)、--egress-regions フラグを追加します。

    gcloud beyondcorp security-gateways applications create APPLICATION_ID \
        --project=PROJECT_ID \
        --security-gateway=SECURITY_GATEWAY_ID \
        --location=global \
        --display-name="APP_DISPLAY_NAME" \
        --endpoint-matchers="hostname=HOST_NAME,ports=[443]" \
        --upstreams=network=name="PRIVATE_NETWORK_RESOURCE_NAME",egressPolicy=regions=us-central1
            

    us-central1 は、リージョン静的ルーティングの設定と一致する Google Cloud リージョン(europe-west1asia-northeast1 など)に置き換えます。特定のリージョン静的ルーティング要件がない場合は、構成から下り(外向き)ポリシーを省略できます。

    REST

    API を使用してアプリケーション リソースを作成する手順は次のとおりです。

    1. application.json という名前のファイルを作成します。

      {
      "display_name": "APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "HOST_NAME", "ports": [443]}
      ],
      "upstreams": [{
         "network": {
            "name": "PRIVATE_NETWORK_RESOURCE_NAME"
         }
      }]
      }
               

      下り(外向き)リージョンを指定するには(静的ルートを使用する場合など)、アップストリーム構成に egress_policy を追加します。

      {
      "display_name": "APP_DISPLAY_NAME",
      "endpoint_matchers": [
         {"hostname": "HOST_NAME", "ports": [443]}
      ],
      "upstreams": [{
         "network": {
            "name": "PRIVATE_NETWORK_RESOURCE_NAME"
         },
         "egress_policy": {
            "regions": [
            "us-central1"
            ]
         }
      }]
      }
                

      us-central1 は、リージョン静的ルーティングの設定と一致する Google Cloud リージョン(europe-west1asia-northeast1 など)に置き換えます。特定のリージョン静的ルーティング要件がない場合は、構成から下り(外向き)ポリシーを省略できます。

    2. Create API メソッドを呼び出します。

      curl \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -H "Content-Type: application/json" \
          -X POST \
          -d @application.json \
          "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications?application_id=APPLICATION_ID"
                

Google Chrome のプロキシモードを設定する

Google 管理コンソールの Chrome 設定で PAC ファイルを適用することで、アプリケーションのトラフィックをセキュア ゲートウェイ経由でルーティングできます。PAC ファイルを適用する手順は次のとおりです。

  1. PAC ファイルを作成または更新する手順は次のとおりです。
    • 次の PAC ファイルの例を使用して pac_config.js ファイルを作成し、最初のアプリケーションを作成します。
    • 次の PAC ファイルの例に示すように、既存の pac_config.js ファイルを更新し、新しいアプリケーションのドメインをサイト配列に追加します。
    function FindProxyForURL(url, host) {
      const PROXY = "HTTPS via.prod.securegateway.goog:443";
      const sites = ["HOST_NAME"];
    
      for (const site of sites) {
        if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
          return PROXY;
        }
      }
      return 'DIRECT';
    }
          

    HOST_NAME は、アプリケーションのホスト名(myapp.example.com など)に置き換えます。

    セキュア ゲートウェイに固有ではない既存の PAC ファイルを使用している場合は、アプリケーションのドメインをサイト配列に追加して、PAC ファイルを統合します。

  2. ファイルをアップロードして、公開でダウンロードできるようにします。たとえば、ファイルを Cloud Storage にアップロードし、バケットで allUsers に Storage オブジェクトのユーザーロールを付与して、ファイルを公開でダウンロードできるようにします。
  3. アップロードしたファイルが最新バージョンであることを確認するには、Cache-Control ヘッダーを no-cache に設定して、キャッシュ動作を調整します。ヘッダーを設定すると、ブラウザと中間サーバーでファイルのコピーが保存されなくなり、Chrome で常に最新のバージョンがダウンロードされるようになります。

    Cache-Control とブラウザ キャッシュへの影響について詳しくは、Cache-Control ヘッダーをご覧ください。

  4. アップロードしたファイルの公開 URL をコピーします。

プロキシモードの設定を更新する

プロキシモードの設定を更新する手順は次のとおりです。

  1. Google 管理コンソールに移動します。
  2. [デバイス> Chrome > 設定] をクリックします。
  3. 組織部門またはグループを選択し、[プロキシモード] をクリックします。
  4. [プロキシモード] で、[常に下記に指定したプロキシの自動設定を使用する] を選択し、Cloud Storage の PAC ファイルの URL を入力します。
  5. プロキシモードの設定を保存するには、[保存] をクリックします。

アクセス ポリシーを構成する

アクセス ポリシーを適用して、セキュア ゲートウェイ レベルでアクセスを制御できます。この場合、関連付けられているすべてのアプリケーションに影響します。また、個々のアプリケーション レベルでアクセスを制御することもできます。

Console

ゲートウェイ レベルのポリシーを作成する

アクセス ポリシーを構成する手順は次のとおりです。

  1. セキュア ゲートウェイにリンクされている複数のアプリケーションに適用されるポリシーを作成するには、[ポリシー] ページに移動します。
    [ポリシー] に移動
  2. アプリケーションにアクセス ポリシーを追加するには、[ポリシーを作成] をクリックします。
  3. プルダウン リストから、ポリシーを適用するアプリケーションを選択します。
  4. ポリシーにプリンシパルを追加します。

    プリンシパルは、ユーザー、グループ、ドメイン、またはサービス アカウントです。これらのプリンシパルには、割り当てたアクセスレベルに基づいてアクセス権が付与または拒否されます。

    1. プリンシパルを追加するには、[プリンシパルを追加] をクリックします。
    2. [プリンシパル] フィールドに、ユーザー、グループ、サービス アカウントのメールアドレスまたはドメイン名を入力します。
    3. [アクセスレベル] プルダウンで、事前に定義された コンテキストアウェア アクセスレベルを 1 つ以上選択します。プリンシパルが選択したアクセスレベルの条件を満たしている場合にのみ、アクセス権が付与されます。

    プリンシパルをさらに追加するには、[プリンシパルを追加] をもう一度クリックして、サブステップを繰り返します。

    アクセスレベルの作成と管理は、Access Context Manager で行います。

  5. ポリシーをアプリケーションに適用するには、[ポリシーを作成] をクリックします。

アプリケーション レベルのアクセス ポリシーを変更する

  1. 単一のアプリケーションのポリシーを変更するには、[アプリケーション] ページに移動します。
    [アプリケーション] に移動
  2. 編集するアプリケーションを見つけるには、次の操作を行います。
    1. [アプリケーション] リストで、変更するアプリケーションを検索します。
    2. アプリケーションの詳細を表示するには、[その他の操作] メニュー()をクリックし、[詳細を表示] を選択します。
  3. アプリケーションを編集するには、[編集] をクリックします。
  4. ポリシーにプリンシパルを追加します。

    プリンシパルは、ユーザー、グループ、ドメイン、またはサービス アカウントです。これらのプリンシパルには、割り当てたアクセスレベルに基づいてアクセス権が付与または拒否されます。

    1. プリンシパルを追加するには、[プリンシパルを追加] をクリックします。
    2. [プリンシパル] フィールドに、ユーザー、グループ、サービス アカウントのメールアドレスまたはドメイン名を入力します。
    3. [アクセスレベル] プルダウン リストで、事前に定義されたコンテキストアウェア アクセスレベルを 1 つ以上選択します。プリンシパルが選択したアクセスレベルの条件を満たしている場合にのみ、アクセス権が付与されます。

    プリンシパルをさらに追加するには、[プリンシパルを追加] をもう一度クリックして、サブステップを繰り返します。

    アクセスレベルの作成と管理は、Access Context Manager で行います。

  5. ポリシーをアプリケーションに適用するには、[保存] をクリックします。

gcloud

アクセス ポリシーを安全に更新する

setIamPolicy コマンドは、既存のポリシー全体を指定したポリシーに置き換えます。既存の権限を誤って削除しないように、次の「読み取り、変更、書き込み」パターンを使用することをおすすめします。このパターンは、既存の権限が誤って削除されるのを防ぐのに役立ちます。

  1. 読み取り: まず、現在のアクセス ポリシーを取得します。
  2. 変更: ポリシー ファイルをローカルで編集して、権限を追加または変更します。
  3. 書き込み: 更新したポリシー ファイルを適用します。

現在のポリシーを取得する

変更を行う前に、現在のポリシーを取得します。ポリシーの etag フィールドは、バージョン識別子として機能します。これにより、複数の管理者が同時に変更を加えた場合に更新の競合を防ぐことができます。

次のコマンドは、ポリシーを取得して policy.json という名前のファイルに保存します。

gcloud beta beyondcorp security-gateways applications get-iam-policy APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global > policy.json
      

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

  • APPLICATION_ID: アプリケーション リソースの ID
  • SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID
  • PROJECT_ID: セキュア ゲートウェイが構成されているプロジェクトの ID

このコマンドは、現在のポリシーを含む policy.json ファイルを作成します。

ポリシー ファイルを変更する

テキスト エディタで policy.json ファイルを開きます。 グループにセキュア ゲートウェイの使用を許可するには、roles/beyondcorp.securityGatewayUser ロールの members リストにグループを追加します。

policy.json ファイルは次のようになります。

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.securityGatewayUser",
      "members": [
        "group:existing-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
    

グループを追加するには、members 配列に新しいエントリを追加します。前のエントリの後にカンマを挿入します。次の例では、new-group@example.com を追加します。

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.securityGatewayUser",
      "members": [
        "group:existing-group@example.com",
        "group:new-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
    

ポリシー バインディングでは、serviceAccountusergroupprincipalprincipalSet などの他のタイプのメンバーを追加することもできます。詳細については、IAM プリンシパルをご覧ください。

更新されたポリシーを適用する

policy.json ファイルを編集して保存したら、setIamPolicy コマンドを使用してリソースに適用します。このコマンドは、ファイルから etag を使用して、正しいバージョンを更新します。

gcloud beta beyondcorp security-gateways applications set-iam-policy APPLICATION_ID policy.json \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global
    

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

  • APPLICATION_ID: アプリケーション リソースの ID
  • SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID
  • PROJECT_ID: セキュア ゲートウェイが構成されているプロジェクトの ID

条件付きアクセス ポリシーを追加する

条件付きのアクセス ポリシーを設定することもできます。条件では、特定の場所から発信されたユーザーの IP アドレスなどの要件を指定します。

次のポリシーの例では、送信元 IP アドレスが指定されたアクセスレベル内にある場合にのみアクセス権が付与されます。

  {
    "version": 3,
    "bindings": [
      {
        "role": "roles/beyondcorp.securityGatewayUser",
        "members": [
          "group:group@example.com"
        ],
        "condition": {
          "expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')",
          "title": "Source IP must be in US"
        }
      }
    ],
    "etag": "BwXN8_d-bOM="
  }

このポリシーを適用するには、前述の手順に沿って操作します。

REST

アクセス ポリシーを安全に更新する

setIamPolicy コマンドは、既存のポリシー全体を指定したポリシーに置き換えます。既存の権限を誤って削除しないように、次の「読み取り、変更、書き込み」パターンを使用することをおすすめします。このパターンは、既存の権限が誤って削除されるのを防ぐのに役立ちます。

  1. 読み取り: 現在のアクセス ポリシーをファイルに保存します。
  2. 変更: ポリシー ファイルをローカルで編集して、権限を追加または変更します。
  3. 書き込み: 更新したポリシー ファイルを適用します。

現在のポリシーを取得する

変更を行う前に、現在のポリシーを取得します。ポリシーの etag フィールドは、バージョン識別子として機能します。これにより、複数の管理者が同時に変更を加えた場合に更新の競合を防ぐことができます。

次のコマンドは、ポリシーを取得して policy.json という名前のファイルに保存します。

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:getIamPolicy" > policy.json
  

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

  • PROJECT_ID: セキュア ゲートウェイが構成されているプロジェクトの ID
  • SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID
  • APPLICATION_ID: アプリケーション リソースの ID

このコマンドは、現在のポリシーを含む policy.json ファイルを作成します。

ポリシー ファイルを変更する

セキュア ゲートウェイを使用するアクセス権をグループに付与する手順は次のとおりです。

  1. テキスト エディタで policy.json ファイルを開きます。
  2. roles/beyondcorp.securityGatewayUser ロールの members リストにグループを追加します。

policy.json ファイルは次のようになります。

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.securityGatewayUser",
      "members": [
        "group:existing-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
      

グループを追加するには、members 配列に新しいエントリを追加します。前のエントリの後にカンマを挿入します。次の例では、new-group@example.com を追加します。

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.securityGatewayUser",
      "members": [
        "group:existing-group@example.com",
        "group:new-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
    

ポリシー バインディングでは、serviceAccountusergroupprincipalprincipalSet などの他のタイプのメンバーを追加することもできます。詳細については、IAM プリンシパルをご覧ください。

更新されたポリシーを適用する

policy.json ファイルを編集して保存したら、setIamPolicy コマンドを使用してリソースに適用します。このコマンドは、ファイルから etag を使用して、正しいバージョンを更新します。

jq '{policy: .}' policy.json | curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @- \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:setIamPolicy"
  

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

  • PROJECT_ID: セキュア ゲートウェイが構成されているプロジェクトの ID
  • SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID
  • APPLICATION_ID: アプリケーション リソースの ID

条件付きアクセス ポリシーを追加する

条件付きのアクセス ポリシーを設定することもできます。条件では、特定の場所から発信されたユーザーの IP アドレスなどの要件を指定します。

次のポリシーの例では、送信元 IP アドレスが指定されたアクセスレベル内にある場合にのみアクセス権が付与されます。

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.securityGatewayUser",
      "members": [
        "group:group@example.com"
      ],
      "condition": {
        "expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')",
        "title": "Source IP must be in US"
      }
    }
  ],
  "etag": "BwXN8_d-bOM="
}
  

このポリシーを適用するには、前述の手順に沿って操作します。

コンテキストアウェア アクセスでセキュリティを強化する

セキュリティをさらに強化し、管理対象の Google Chrome インスタンスのみがセキュリティ ゲートウェイを介してウェブ アプリケーションにアクセスできるようにするには、コンテキストアウェア アクセス(CAA)ルールを追加することをおすすめします。このルールは、ユーザーの Chrome プロファイルが管理下にあることを確認し、管理対象外または悪意のあるブラウザからの不正使用を防ぎます。

これを実装するには、Chrome Enterprise Premium Access Context Manager のアクセスレベルに条件を追加します。条件の例を次に示します。

  device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
  

Chrome Enterprise Premium 拡張機能をインストールする

Chrome Enterprise Premium 拡張機能は、セキュア ゲートウェイに不可欠な要素で、認証をスムーズに行えるようにします。この拡張機能は、セキュア ゲートウェイのすべてのユーザーにインストールする必要があります。拡張機能のデプロイについては、アプリや拡張機能を表示、設定するをご覧ください。Chrome Enterprise Premium 拡張機能をインストールするには、次の操作を行います。

  1. Google 管理コンソールに移動します。
  2. [Chrome ブラウザ] > [アプリと拡張機能] をクリックします。
  3. [ユーザーとブラウザ] タブをクリックします。
  4. Chrome 拡張機能を追加するには、[+] ボタンをクリックします。
  5. 次の拡張機能を検索し、組織部門またはグループ内のすべてのユーザーにインストールを必須にします。

    ekajlcmdfcigmdbphhifahdfjbkciflj
  6. インストールした拡張機能をクリックし、[拡張機能のポリシー] フィールドに次の JSON 値を入力します。

    {
      "securityGateway": {
        "Value": {
          "authentication": {},
          "context": { "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" }
        }
      }
    }

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

    • PROJECT_ID: セキュア ゲートウェイが構成されているプロジェクトの ID
    • SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID

  7. 構成を保存するには、[保存] をクリックします。

エンドユーザー エクスペリエンス

設定が完了すると、保護された SaaS アプリケーションにアクセスしたエンドユーザーは、アプリケーションに適用されたアクセス ポリシーに基づいてアクセスが許可または拒否されます。

Chrome でアプリケーションにアクセスする

トラフィックがセキュア ゲートウェイを経由するよう制御するには、Chrome Enterprise Premium 拡張機能が必要です。拡張機能は、ユーザーとセキュア ゲートウェイ間の認証を処理します。この拡張機能はドメイン ポリシーによって自動的にインストールされます。

ユーザーが構成した SaaS アプリケーションにアクセスすると、トラフィックがセキュア ゲートウェイを経由し、アクセス ポリシーを満たしているかどうかがここでチェックされます。ユーザーがアクセス ポリシーのチェックに合格すると、アプリケーションへのアクセス権が付与されます。

アプリケーションへのブラウザ アクセスが認証ポリシーによって拒否された場合、ユーザーに Access denied メッセージが表示されます。

次のステップ