このドキュメントでは、プライベート ウェブ アプリケーションへのアクセスを保護するために 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 以外の環境に転送します。
始める前に
セキュア ゲートウェイを設定する前に、次のことを確認してください。
- Chrome Enterprise Premium ライセンス
- 管理者アカウントで Google 管理コンソールにアクセスできること
- 請求先アカウントが割り当てられ、次の API が有効になっている Google Cloud プロジェクト: BeyondCorp API
設定を行う管理者に付与される次の Identity and Access Management(IAM)ロール: プロジェクト レベル: Cloud BeyondCorp 管理者(
beyondcorp.admin
)。Google Cloud 以外の環境にあるプライベート アプリケーションの場合、Google Cloud 環境とアプリケーションが存在するGoogle Cloud 以外の環境の間の Cloud VPN または Cloud Interconnect 接続。ネットワーク接続の設定について詳しくは、次のリソースをご覧ください。
シェル環境の設定
作業シェルで次の環境変数を定義して、設定プロセスを合理化し、セキュア ゲートウェイ API と通信できるようにします。
一般的なパラメータ
API="beyondcorp.googleapis.com" API_VERSION=v1 PROJECT_ID=MY_PROJECT_ID
次のように置き換えます。
- MY_PROJECT_ID: セキュア ゲートウェイが作成されるプロジェクトの ID。
セキュア ゲートウェイのパラメータ
SECURITY_GATEWAY_ID=MY_SECURITY_GATEWAY_ID SECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"
次のように置き換えます。
- MY_SECURITY_GATEWAY_ID: 作成するセキュア ゲートウェイの ID。ID は最大 63 文字で、小文字、数字、ハイフンを使用できます。最初の文字は英字にする必要があり、最後の文字は英字または数字にすることができます。
- MY_SECURITY_GATEWAY_DISPLAY_NAME: セキュア ゲートウェイの人が読める形式の名前。名前は最大 63 文字で、印刷可能な文字を含めることができます。
セキュア ゲートウェイを作成する
Chrome Enterprise Premium セキュア ゲートウェイは、アプリケーションへの安全な接続を確立するための基本的な構成要素です。専用のプロジェクトとネットワークを割り当て、分離とセキュリティを確保します。
セキュア ゲートウェイを作成するには、次の操作を行います。
次の例を使用して、
securityGateway.json
という名前のファイルを作成します。{ "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME", }
Create
API を呼び出して、安全なゲートウェイ リソースを作成します。curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d @securityGateway.json \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
プライベート ウェブ アプリケーションを構成する
セキュア ゲートウェイで特定のアプリケーション リソースを定義する前に、接続と適切なルーティングを有効にするために必要な権限とネットワーク設定を構成する必要があります。
サービス アカウントに権限を付与する
セキュア ゲートウェイが VPC ネットワークにトラフィックを正常に送信するには、委任サービス アカウントに特定の IAM 権限が付与されている必要があります。これにより、安全なゲートウェイは、 Google Cloud VPC 内でホストされているか、Cloud VPN または Cloud Interconnect 経由で接続されたGoogle Cloud 環境でホストされているかにかかわらず、プライベート アプリケーションにアクセスできます。
委任するサービス アカウントのメールアドレスを特定します。このメールアドレスは、セキュリティ ゲートウェイ リソースの
delegatingServiceAccount
フィールドにあります。{ "name": "projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}", "createTime": "2024-10-28T20:46:50.949740776Z", "updateTime": "2024-10-29T18:41:18.520661431Z", "state": "RUNNING", "delegatingServiceAccount": "security-gateway@my-gateway-service-account.iam.gserviceaccount.com" }
サービス アカウントとターゲット VPC プロジェクトの環境変数を設定します。
DELEGATING_SERVICE_ACCOUNT="security-gateway@my-gateway-service-account.iam.gserviceaccount.com" # Replace with actual value
プライベート 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 範囲(34.158.8.0/21
と 136.124.16.0/20
)からの上り(内向き)TCP トラフィックが許可されます。
非Google Cloud 環境のアプリケーションのファイアウォール ルール
プライベート ウェブ アプリケーションがオンプレミス データセンターまたは別のクラウド プロバイダのネットワークに存在し、Cloud VPN または Cloud Interconnect を使用して Google CloudVPC に接続されている場合は、オンプレミス ファイアウォールまたは同等のネットワーク セキュリティ制御(セキュリティ グループやネットワーク ACL など)にファイアウォール ルールを構成します。これにより、セキュア ゲートウェイの IP 範囲からの上り(内向き)TCP トラフィックが許可されます。
非Google Cloud 環境からセキュア ゲートウェイへのルーティングを構成する
オンプレミスや他のクラウドなどのGoogle Cloud 以外の環境でホストされているプライベート アプリケーションを保護する場合に双方向通信を行うには、外部ネットワークで次のセキュア ゲートウェイ IP アドレス(34.158.8.0/21
と 136.124.16.0/20
)への戻りパスを作成する必要があります。
プライベート ネットワークが Cloud VPN または Cloud Interconnect を介してセキュア ゲートウェイの IP 範囲に到達できることを確認します。
動的ルーティング: Cloud Router で Border Gateway Protocol(BGP)などの動的ルーティングを使用している場合は、Google Cloud の Cloud Router がオンプレミス BGP デバイスにセキュア ゲートウェイの IP 範囲を明示的にアドバタイズしていることを確認します。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 レコードが権威的にホストされている場所によって異なります。
Cloud DNS 限定公開ゾーンを使用する Google Cloud 内のアプリケーション: 限定公開アプリケーションが 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 構成の詳細な手順については、転送ゾーンを作成するをご覧ください。
アプリケーション リソースを作成する
プライベート ウェブ アプリケーションへのアクセスを提供するには、アプリケーション リソースを作成して、セキュリティ ゲートウェイ フレームワーク内で該当のアクセスを確立する必要があります。このリソースは、セキュア ゲートウェイがアプリケーションのトラフィックを識別する方法(ホスト名に基づく)と、そのトラフィックのルーティング先を定義します。
次のコマンドを実行して、必要な環境変数を設定します。
APPLICATION_ID=MY_APPLICATION_ID APP_DISPLAY_NAME="MY_APP_DISPLAY_NAME"
次のように置き換えます。
- MY_APPLICATION_ID: アプリケーション リソースの一意の ID。
- MY_APP_DISPLAY_NAME: 表示する人が読める形式の名前。
次の例を使用して、
application.json
という名前の JSON ファイルを作成します。{ "display_name": "MY_APP_DISPLAY_NAME", "endpoint_matchers": [ {"hostname": "MY_HOST_NAME"} ], "upstreams": [{ "network": { "name": "MY_PRIVATE_NETWORK_RESOURCE_NAME" } }] }
MY_HOST_NAME は、ユーザーがアクセスするプライマリ ホスト名に置き換えます。例:
private.local
ホスト名は最大 253 文字で、次のいずれかの形式に準拠する必要があります。- 有効な IPv4 アドレス
- 有効な IPv6 アドレス
- 有効な DNS 名
- アスタリスク(*)
- アスタリスク(*)の後に有効な DNS 名
MY_PRIVATE_NETWORK_RESOURCE_NAME は、アプリケーションがホストされている VPC ネットワークの完全なリソース名、または非Google Cloud 環境に接続されている VPC ネットワークの完全なリソース名に置き換えます。ネットワーク名は
projects/{project}/global/networks/{network}
の形式にする必要があります省略可: 下り(外向き)リージョンを指定します。
ネットワーク構成によっては、セキュア ゲートウェイ トラフィックがプライベート アプリケーションに送信されるGoogle Cloud リージョンを制御する必要があります。たとえば、Cloud VPN または Cloud Interconnect 経由で静的ルートを使用している場合に該当します。これらの構成では、アプリケーションの上流構成に下り(外向き)ポリシーを追加できます。この下り(外向き)ポリシーは、指定された Google Cloudリージョンからプライベート ネットワークにアプリケーションのトラフィックを転送するように、セキュア ゲートウェイに指示します。
以下は、
egress_policy
を含む JSON ファイルの例です。{ "display_name": "MY_APP_DISPLAY_NAME", "endpoint_matchers": [ {"hostname": "MY_HOST_NAME"} ], "upstreams": [{ "network": { "name": "MY_PRIVATE_NETWORK_RESOURCE_NAME" }, "egress_policy": { "regions": [ "us-central1" ] } }] }
us-central1
は、リージョン静的ルーティングの設定に沿った Google Cloud リージョン(europe-west1
やasia-northeast1
など)に置き換えます。特定のリージョン静的ルーティング要件がない場合は、構成から下り(外向き)ポリシーを省略できます。Create
API を呼び出して、アプリケーション リソースを作成します。curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d @application.json \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
Google Chrome のプロキシモードを設定する
アプリケーション リソースのトラフィックを安全なゲートウェイ経由でルーティングするには、Google 管理コンソールの Chrome 設定で PAC ファイルを適用して Chrome を構成します。
PAC ファイルを作成または更新します。
最初のアプリケーションを作成する場合は、次の PAC ファイルの例を使用して
pac_config.js
ファイルを作成します。2 つ目以降のアプリケーションを作成する場合は、次の PAC ファイルの例に示すように、既存の
pac_config.js
ファイルを更新して、新しいアプリケーションのドメインをサイト配列に追加します。
function FindProxyForURL(url, host) { const PROXY = "HTTPS ingress.cloudproxy.app:443"; const sites = ["MY_HOST_NAME"]; for (const site of sites) { if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) { return PROXY; } } return 'DIRECT'; }
セキュア ゲートウェイ専用ではない既存の PAC ファイルを使用している場合は、アプリケーションのドメインをサイト配列に追加して、PAC ファイルを統合します。
ファイルをアップロードして、公開でダウンロードできるようにします。たとえば、ファイルを Cloud Storage にアップロードし、バケットで allUsers に Storage オブジェクトのユーザーロールを付与して、ファイルを公開でダウンロードできるようにします。
アップロードしたファイルが常に最新のバージョンであることを確認するには、
Cache-Control
ヘッダーをno-cache
に設定して、キャッシュ動作を調整します。この設定により、ブラウザと中間サーバーでファイルのコピーが保存されなくなり、Chrome で常に最新のバージョンがダウンロードされるようになります。Cache-Control
とブラウザ キャッシュへの影響について詳しくは、Cache-Control ヘッダーをご覧ください。アップロードしたファイルの公開 URL をコピーします。
プロキシモードの設定を更新する
- Google 管理コンソールに移動します。
- [デバイス] -> [Chrome] -> [設定] をクリックします。
- 組織部門またはグループを選択し、[プロキシモード] をクリックします。
- [プロキシモード] ページで、[常に下記に指定したプロキシの自動設定を使用する] を選択し、Cloud Storage の PAC ファイルの URL を入力します。
アクセス ポリシーを構成する
アクセス ポリシーは、セキュア ゲートウェイ レベルまたはアプリケーション レベルで適用できます。
- セキュア ゲートウェイ リソース:セキュア ゲートウェイレベルでポリシーを適用して、関連付けられているすべてのアプリケーションへのアクセスを制御します。
- 個々のアプリケーション: よりきめ細かく制御するには、個々のアプリケーションにアクセス ポリシーを適用します。
setIamPolicy.json
という名前の JSON 形式のファイルを作成し、以下を追加します。{ "policy": { object (POLICY) } }
POLICY は IAM 許可ポリシーに置き換えます。ポリシーの
etag
は、有効なポリシーのetag
と同じである必要があります。有効なポリシーのetag
は、getIamPolicy
メソッドを呼び出すことで取得できます。特定のグループにセキュア ゲートウェイの使用を許可するには、そのグループに
roles/beyondcorp.securityGatewayUser
ロールを付与します。{ "policy": { "version": 3, "bindings": [ { "role": "roles/beyondcorp.securityGatewayUser", "members": [ "group:
" ] } ], "etag": "AA1jlb" } } ポリシー バインディングのその他の ID(
serviceAccount
、user
、group
、principal
、principalSet
など)については、IAM プリンシパルをご覧ください。setIamPolicy
API を呼び出して、JSON ファイルで指定されたセキュア ゲートウェイにアクセス ポリシーを適用します。curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d @setIamPolicy.json \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}:setIamPolicy"
アプリケーションにアクセス ポリシーを適用するには、次のコマンドを使用します。
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d @setIamPolicy.json \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_ID}:setIamPolicy"
次の例に示すように、アクセスレベルを条件として使用したアクセス ポリシーを設定することもできます。
{ "policy": { "version": 3, "bindings": [ { "role": "roles/beyondcorp.securityGatewayUser", "members": [ "group:" ], "condition": { "expression": "'accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels", "title": "Source IP must be in US" } } ], "etag": "A1jlb" } }'
Chrome Enterprise Premium 拡張機能をインストールする
Chrome Enterprise Premium 拡張機能は、セキュア ゲートウェイに不可欠な要素で、認証をスムーズに行えるようにします。この拡張機能は、セキュア ゲートウェイのすべてのユーザーにインストールします。拡張機能のデプロイについては、アプリや拡張機能を表示、設定するをご覧ください。
- Google 管理コンソールに移動します。
- [Chrome ブラウザ] -> [アプリと拡張機能] をクリックします。
- [ユーザーとブラウザ] タブをクリックします。
- Chrome 拡張機能を追加するには、[+] ボタンをクリックします。
ekajlcmdfcigmdbphhifahdfjbkciflj
を検索し、組織部門またはグループ内のすべてのユーザーに強制インストールします。インストールした拡張機能をクリックし、「拡張機能のポリシー」フィールドで次の JSON 値を指定します。
{ "securityGateway": { "Value": { "authentication": {}, "context": { "resource": "projects/MY_PROJECT_ID/locations/global/securityGateways/MY_SECURITY_GATEWAY_ID" } } } }
エンドユーザー エクスペリエンス
設定が完了すると、保護された SaaS アプリケーションにアクセスしたエンドユーザーは、アプリケーションに適用されたアクセス ポリシーに基づいてアクセスが許可または拒否されます。
Chrome でアプリケーションにアクセスする
トラフィックが安全なゲートウェイを経由するよう制御するには、Chrome Enterprise Premium 拡張機能が必要です。この拡張機能は、ユーザーとセキュア ゲートウェイ間の認証を処理します。この拡張機能はドメイン ポリシーによって自動的にインストールされます。
ユーザーが構成した SaaS アプリケーションにアクセスすると、トラフィックがセキュア ゲートウェイを経由し、アクセス ポリシーを満たしているかどうかがここでチェックされます。アクセス ポリシーのチェックに合格すると、ユーザーにアプリケーションへのアクセス権が付与されます。
アプリケーションへのブラウザ アクセスが認証ポリシーによって拒否された場合、ユーザーに Access denied
メッセージが表示されます。