SaaS アプリケーションへのセキュアなアクセス

このページでは、Chrome Enterprise Premium セキュア ゲートウェイを使用して SaaS アプリケーションを保護するプロセスについて説明します。

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

SaaS アプリケーションへのアクセスを保護する仕組み

セキュア ゲートウェイが SaaS アプリケーションを保護する仕組みの概要は次のとおりです。

  1. クライアントサイドのブラウザ設定により、アプリケーション トラフィックは安全なゲートウェイ プロキシ経由でルーティングされます。
  2. セキュア ゲートウェイは、コンテキストアウェア アクセス ポリシーをチェックして、クライアント(ユーザーとデバイス)のアクセスを承認します。
  3. クライアント アクセスが許可されている場合、ゲートウェイは、そのゲートウェイと Google Cloudリージョンに割り当てられた一意の送信元 IP アドレスを使用して、トラフィックをアプリケーションに転送します。割り当てられた IP アドレスは、作成したゲートウェイ専用として予約されており、他のユーザーやゲートウェイは使用できません。アクセスを制御するには、これらの専用の送信元 IP アドレスを SaaS アプリケーションの許可リストに追加します。

必要なロール

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

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

始める前に

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

制限事項

Chrome Enterprise Premium のセキュア ゲートウェイには、次の制限事項があります。

  • IPv6 接続: Chrome Enterprise Premium セキュア ゲートウェイは、IPv6 接続を使用する SaaS アプリケーションをサポートしていません。
  • SaaS アプリケーションとしての ID プロバイダ: エンドユーザーのセキュア ゲートウェイによる認証が同じ IdP に依存している場合、セキュア ゲートウェイで保護されるように ID プロバイダを SaaS アプリケーションとして構成することはできません。

シェル環境の設定

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

  • 一般的なパラメータ

    PROJECT_ID=PROJECT_ID
    APPLICATION_ID=APPLICATION_ID
    APPLICATION_DISPLAY_NAME="APPLICATION_DISPLAY_NAME"
    HOST_NAME=HOST_NAME

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

    • PROJECT_ID: セキュア ゲートウェイが作成されるプロジェクトの ID。
    • APPLICATION_ID: アプリケーションの ID(github など)。名前は最大 63 文字で、小文字、数字、ハイフンを使用できます。先頭文字は英字にする必要があり、末尾の文字は英字または数字にすることができます。
    • APPLICATION_DISPLAY_NAME: 表示する人が読める形式の名前。
    • HOST_NAME: アプリケーションのホスト名。例: github.comホスト名は最大 253 文字で、次のいずれかの形式に準拠する必要があります。

      • 有効な IPv4 アドレス
      • 有効な IPv6 アドレス
      • 有効な DNS
      • アスタリスク(*)
      • アスタリスク(*)の後に有効な DNS 名
  • セキュア ゲートウェイのパラメータ

    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. セキュア ゲートウェイを作成するには、[新しいゲートウェイを作成] をクリックして、ゲートウェイの作成プロセスが完了するまで待ちます。
  4. 進行状況は、 Google Cloud コンソールの [通知] セクションで確認できます。
  5. SaaS アプリケーション リソースを作成する前に、SaaS 外向きハブを作成することをおすすめします。hubs フラグは、使用するアプリケーションへの外向きの接続を有効にするために必要なリージョン リソースを表します。リージョンごとに 1 つのハブを構成できます。各ハブは 2 つの IP アドレスを提供します。セキュア ゲートウェイには最大 20 個のハブを設定できます。次のリージョンを指定できます。
    • 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
  6. Google Cloud コンソールで、[SaaS 下り(外向き)ハブ] ページに移動します。
    SaaS 外向きハブに移動
  7. SaaS 外向きハブを作成するプロジェクトを選択します。
  8. SaaS 外向きハブを追加するには、[SaaS 外向きハブを追加] をクリックします。
  9. プルダウン リストから、上り(内向き)ハブを追加するリージョンを選択します。外向きハブを追加するには、[SaaS 外向きハブを追加] をクリックして、複数のハブを追加します。完了したら、[保存] をクリックして下り(外向き)ハブを作成します。

gcloud

セキュア ゲートウェイ リソースを作成するには、次のコマンドを実行します。--hubs フラグには、次のリストから 1 つ以上のリージョンを指定します。

gcloud beyondcorp security-gateways create SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --display-name="SECURITY_GATEWAY_DISPLAY_NAME" \
    --hubs=us-central1 \
    --service-discovery={}
      

hubs フラグは、ターゲット アプリケーションへの下り(外向き)接続を有効にするために必要なリージョン リソースを設定します。リージョンごとに 1 つのハブを設定でき、各ハブは 2 つの IP アドレスを提供します。セキュア ゲートウェイには最大 20 個のハブを設定できます。次のリージョンを指定できます。

  • 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

REST

セキュア ゲートウェイ リソースを作成するには、リクエスト本文にゲートウェイの詳細を指定して Create API メソッドを呼び出します。hubs フラグには、次のリストから 1 つ以上のリージョンを指定します。

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

hubs フラグは、使用するアプリケーションへの外向きの接続を有効にするために必要なリージョン リソースを表します。リージョンごとに 1 つのハブを設定でき、各ハブは 2 つの IP アドレスを提供します。セキュア ゲートウェイには最大 20 個のハブを設定できます。次のリージョンを指定できます。

  • 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

SaaS アプリケーションを構成する

セキュア ゲートウェイを作成したら、セキュア アクセスにセキュア ゲートウェイを使用するように SaaS アプリケーションを構成できます。

Console

SaaS 上り(内向き)ハブを構成する手順は次のとおりです。

  1. Google Cloud コンソールで、[SaaS 下り(外向き)ハブ] ページに移動します。
    SaaS 外向きハブに移動
  2. [SaaS 外向きハブ] ページで、ハブのリストが表示されたテーブルを見つけます。使用する各リージョンについて、[静的専用下り(外向き)IP] 列に表示されているすべての IP アドレスをコピーします。各リージョンには 2 つの IP アドレスが用意されています。
  3. IP アドレスを SaaS アプリケーションの IP 許可リストに追加します。たとえば、GitHub アプリケーションの場合は、こちらのガイド(組織に許可された IP アドレスを管理する)をご確認ください。

gcloud

SaaS 上り(内向き)ハブを構成する手順は次のとおりです。

  1. 各ハブにセキュア ゲートウェイによって割り振られた IP アドレスを取得します。リージョンに 2 つの IP アドレスが割り当てられます。
  2. gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \
        --project=PROJECT_ID \
        --location=global
            

    hubs を含むセキュア ゲートウェイの GET レスポンスの例を次に示します。この例では、hubsus-central1 リージョンと us-east1 リージョンに作成されます。また、レスポンスで返されたすべての IP アドレスを SaaS アプリケーションで許可する必要があります。

    createTime: 'CREATE_TIME'
    displayName: My secure gateway
    hubs:
      us-central1:
        internetGateway:
          assignedIps:
          -   IP_ADDRESS_1
          -   IP_ADDRESS_2
      us-east1:
        internetGateway:
          assignedIps:
          -   IP_ADDRESS_1
          -   IP_ADDRESS_2
    name: projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID
    state: RUNNING
    updateTime: 'UPDATE_TIME'
        
  3. IP アドレスを SaaS アプリケーションの IP 許可リストに追加します。たとえば、GitHub アプリケーションの場合は、こちらのガイド(組織に許可された IP アドレスを管理する)をご確認ください。

REST

SaaS 上り(内向き)ハブを構成する手順は次のとおりです。

  1. 各ハブにセキュア ゲートウェイによって割り振られた IP アドレスを取得します。リージョンに 2 つの IP アドレスが割り当てられます。
  2. 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"
            

    hubs を含むセキュア ゲートウェイの GET レスポンスの例を次に示します。この例では、hubsus-central1 リージョンと us-east1 リージョンに作成されます。また、レスポンスで返されたすべての IP アドレスを SaaS アプリケーションで許可する必要があります。

    {
      "securityGateways": [
        {
          "name": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID",
          "createTime": "CREATE_TIME",
          "updateTime": "UPDATE_TIME",
          "displayName": "My secure gateway",
          "state": "RUNNING",
          "hubs": {
            "us-central1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            },
            "us-east1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            }
          }
        }
      ]
    }
        
  3. IP アドレスを SaaS アプリケーションの IP 許可リストに追加します。たとえば、GitHub アプリケーションの場合は、こちらのガイド(組織に許可された IP アドレスを管理する)をご確認ください。

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

以降では、セキュア ゲートウェイ アプリケーション リソースを設定して構成するプロセスについて説明します。

Google Cloudでセキュア ゲートウェイ アプリケーション リソースを作成する

Google Cloud アプリケーション リソースは、セキュア ゲートウェイ リソースのサブリソースです。 Google Cloud コンソールを使用するか、Create API を呼び出して、アプリケーション リソースを作成します。

Console

SaaS アプリケーションを作成する手順は次のとおりです。

  1. Google Cloud コンソールで、[セキュア ゲートウェイ] ページに移動します。
    セキュア ゲートウェイに移動
  2. アプリケーションを作成するには、[アプリケーションを追加] をクリックします。
  3. アプリケーションの種類として [公開アプリケーション] を選択します。
  4. このセキュア ゲートウェイに SaaS 下り(外向き)ハブがまだ構成されていない場合は、作成するよう求められます。公開アプリケーションには、少なくとも 1 つの SaaS 外向きハブが必要です。SaaS 外向きハブを構成するには、[SaaS 外向きハブに移動] をクリックして、1 つ以上のリージョンを追加します。
  5. 1 つ以上の下り(外向き)ハブを作成したら、[次へ] をクリックします。
  6. アプリケーションの詳細を入力します。
    • アプリケーション名: 名前を入力します(例: GitHub)。
    • ドメイン マッチャー: セキュア ゲートウェイ経由でルーティングするドメイン パターンのカンマ区切りのリストを入力します。ポートは domain:port の形式で指定します。ワイルドカード(*)を使用できます。例: github.com:443
  7. SaaS アプリケーションを構成するには、[続行] をクリックします。
  8. セキュア ゲートウェイからのトラフィックを許可するように SaaS アプリケーションを構成します。
    1. 使用しているリージョンに記載されているすべての IP アドレスをメモするか、コピーします。これらの IP アドレスは、セキュア ゲートウェイに固有のものです。
    2. SaaS アプリケーションの管理コンソールにログインします。
    3. IP 許可リストが管理されている掲載ネットワークの設定またはセキュリティ設定に移動します。
    4. 取得したすべての IP アドレスをアプリケーションの IP 許可リストに追加します。
  9. アプリケーションを追加するには、[続行] をクリックします。
  10. 省略可: アクセス ポリシーを定義する: Access Context Manager のアクセス ポリシーを選択します。このガイドでは、この手順をスキップできます。
  11. 作成して設定を保存し、アプリケーションを作成するには、[作成] をクリックします。

gcloud

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

gcloud beyondcorp security-gateways applications create APPLICATION_ID \
    --project=PROJECT_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --location=global \
    --display-name="APPLICATION_DISPLAY_NAME" \
    --endpoint-matchers="hostname=HOST_NAME,ports=443"
      

REST

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

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d "{ \"display_name\": \"APPLICATION_DISPLAY_NAME\", \"endpoint_matchers\": [{hostname: \"HOST_NAME\", ports: 443}] }" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications?application_id=APPLICATION_ID"
      

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

アクセス ポリシーを適用して、アプリケーション レベルでアクセスを制御できます。アクセス ポリシーが構成されていない場合、デフォルトではアプリケーションへのアクセスは拒否されます。

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

Service Discovery ゲートウェイレベルのバインディングを追加する

ユーザーにアプリケーションへのアクセス権を付与する前に、ユーザーに Secure Gateway レベルのサービス ディスカバリ権限があることを確認してください。

gcloud beyondcorp security-gateways add-iam-policy-binding SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.serviceDiscoveryUser" \
    --member=MEMBER
  

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

  • SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID
  • PROJECT_ID: セキュア ゲートウェイが構成されているプロジェクトの ID
  • MEMBER: Service Discovery ロールを割り当てるユーザー、グループ、サービス アカウント。詳細については、IAM プリンシパルをご覧ください。

アプリケーション レベルのバインディングを追加する

gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER
  

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

  • APPLICATION_ID: アプリケーション リソースの ID
  • SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID
  • PROJECT_ID: セキュア ゲートウェイが構成されているプロジェクトの ID
  • MEMBER: Service Discovery ロールを割り当てるユーザー、グループ、サービス アカウント。詳細については、IAM プリンシパルをご覧ください。

条件付きバインディングを追加する

条件付きでバインディングを追加することもできます。条件では、特定の場所から発信されたユーザーの IP アドレスなどの要件を指定します。(アクセスレベルは、組織レベルのアクセス ポリシーまたはスコープ付きアクセス ポリシーのいずれかで定義できます)。

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

gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER \
    --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
  

Service Discovery ゲートウェイレベルのバインディングを削除する

Secure Gateway レベルでユーザーの Service Discovery 権限を取り消します。

gcloud beyondcorp security-gateways remove-iam-policy-binding SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.serviceDiscoveryUser" \
    --member=MEMBER
  

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

  • SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID
  • PROJECT_ID: セキュア ゲートウェイが構成されているプロジェクトの ID
  • MEMBER: Service Discovery ロールを削除するユーザー、グループ、またはサービス アカウント。詳細については、IAM プリンシパルをご覧ください。

アプリケーション レベルのバインディングを削除する

gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER
  

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

  • APPLICATION_ID: アプリケーション リソースの ID
  • SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID
  • PROJECT_ID: セキュア ゲートウェイが構成されているプロジェクトの ID
  • MEMBER: Service Discovery ロールを削除するユーザー、グループ、またはサービス アカウント。詳細については、IAM プリンシパルをご覧ください。

条件付きバインディングを削除する

条件付きのバインディングを削除することもできます。条件では、特定の場所から発信されたユーザーの IP アドレスなどの要件を指定します。(アクセスレベルは、組織レベルのアクセス ポリシーまたはスコープ付きアクセス ポリシーのいずれかで定義できます)。

次のコマンド例では、指定されたアクセスレベルの条件付きバインディングを削除します。

gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER \
    --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
  

REST

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

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

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

Service Discovery ゲートウェイ レベルのポリシーを設定する

サービス ディスカバリ権限を付与するには、個々のアプリケーションではなく、セキュア ゲートウェイにアクセス ポリシーを設定する必要があります。これは、「read-modify-write」パターンに従います。

現在のポリシーを取得し、gateway_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:getIamPolicy" > gateway_policy.json
  

次に、テキスト エディタで gateway_policy.json ファイルを開き、アプリケーション レベルの変更と同様に、roles/beyondcorp.serviceDiscoveryUser ロールの members リストに必要なプリンシパルを追加します。

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

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

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

更新されたポリシーを適用します。

jq '{policy: .}' gateway_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:setIamPolicy"
  

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

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

現在のポリシーを取得します。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.sgApplicationUser",
      "members": [
        "group:existing-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
      

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

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.sgApplicationUser",
      "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.sgApplicationUser",
      "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 プロファイルが管理下にあることを確認し、管理対象外または悪意のあるブラウザからの不正使用を防ぎます。

注: この機能を利用するには、Endpoint Verification 拡張機能のインストールと設定が必要です。

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

  device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
  

この状態の設定、確認、管理方法については、Chrome ブラウザの属性をご覧ください。

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

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

  1. Google 管理コンソールに移動します。
  2. [Chrome ブラウザ] > [アプリと拡張機能] をクリックします。
  3. [ユーザーとブラウザ] タブをクリックします。
  4. Chrome 拡張機能を追加するには、[+] ボタンをクリックし、[Chrome アプリや拡張機能を ID で追加] を選択します。
  5. 次の ID を使用して Secure Enterprise Browser 拡張機能を検索し、組織部門またはグループ内のすべてのユーザーに対してインストール ポリシーを [強制インストール] に設定します。

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

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

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

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

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

以前の PAC ファイルの設定

サービス ディスカバリを有効にすると、Chrome ブラウザ クライアントが構成済みのアプリケーションへのトラフィックを自動的に検出してセキュア ゲートウェイ経由でルーティングできるようになり、PAC ファイルを使用した手動ルーティング構成が不要になります。

セキュア ゲートウェイでサービス ディスカバリが有効になっていない場合は、レガシー設定になっています。Chrome ブラウザ クライアントのルーティングを制御するには、PAC ファイルを構成する必要があります。

以前のセットアップがあるかどうかを確認するには、次のコマンドを使用してサービス ディスカバリが有効になっているかどうかを確認します。

gcloud

gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global | grep -i "serviceDiscovery"
      

REST

curl --silent \
    -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" | grep -i "serviceDiscovery"
      

コマンドが何も出力しない場合、ゲートウェイは以前の設定を使用しています。以前の設定を使用するゲートウェイの場合、ルーティングはホストされている PAC ファイルを使用して処理されます。

ステップ 1: PAC ファイルを作成してホストする

  1. 次の JavaScript を含む pac_config.js という名前のファイルを作成します。HOST_NAME は、アプリケーションのドメイン(myapp.example.com など)に置き換えます。

    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';
    }
  2. PAC ファイルを Cloud Storage バケットなどのホスティング サービスにアップロードします。

    • ファイルが一般公開でダウンロード可能であることを確認します。
    • HTTP ヘッダー Cache-Controlno-cache に設定して、ブラウザが常に最新のルーティング ルールを取得するようにします。
  3. アップロードした PAC ファイルの公開 URL をコピーします。

ステップ 2: Google 管理コンソールで PAC ファイルを適用する

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

ステップ 3: Chrome Enterprise Premium 拡張機能を構成する

拡張機能は認証を処理する必要があります。この拡張機能ポリシーは、serviceDiscovery ブロックを除外しているため、標準構成とは異なります。

  1. Google 管理コンソールで、[Chrome ブラウザ> アプリと拡張機能] に移動します。
  2. [ユーザーとブラウザ] タブに移動し、Secure Enterprise Browser 拡張機能(ekajlcmdfcigmdbphhifahdfjbkciflj)が追加され、適用されていることを確認します。
  3. 拡張機能をクリックし、[拡張機能のポリシー] フィールドに次の JSON 値を入力します。

    {
      "securityGateway": {
        "Value": {
          "authentication": {},
          "context": {
            "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID"
          }
        }
      }
    }
  4. [保存] をクリックします。

サービス ディスカバリの設定に移行する

以前のセキュア ゲートウェイを PAC ファイル設定から新しいサービス ディスカバリ設定に移行するには、手動で機能を有効にして構成を更新する必要があります。

  1. セキュア ゲートウェイでサービス ディスカバリを有効にする: 既存のゲートウェイを更新して、サービス ディスカバリを有効にします。

    gcloud

    gcloud beyondcorp security-gateways update SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --service-discovery={}
          

    REST

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{ "service_discovery": {} }' \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID?updateMask=service_discovery"
          
  2. ゲートウェイ レベルのアクセス ポリシーを設定する: サービス ディスカバリを使用できるように、ゲートウェイ レベルでユーザーに roles/beyondcorp.serviceDiscoveryUser ロールを付与します。Service Discovery ゲートウェイレベルのバインディングを追加するの手順に沿って操作します。

  3. Chrome Enterprise Premium 拡張機能の設定を更新する: Chrome Enterprise Premium 拡張機能をインストールするの手順に沿って、拡張機能ポリシーを更新します。新しい JSON 構成には "serviceDiscovery": { "routes": {} } ブロックを含める必要があります。

  4. 以前の PAC ファイルを削除する: サービス ディスカバリが有効になると、以前の PAC ファイルは不要になります。

    1. Google 管理コンソールで、[デバイス> Chrome > 設定 > ユーザーとブラウザの設定 > ネットワーク] に移動します。
    2. [プロキシモード] 設定を見つけます。
    3. プロキシ自動設定(PAC)URL を削除するか、設定を [常に下記に指定したプロキシの自動設定を使用する] から、[ユーザーによる設定を許可する] など、ネットワークに適したモードに切り替えます。
    4. [保存] をクリックします。

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

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

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

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

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

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

次のステップ