このページでは、Chrome Enterprise Premium セキュア ゲートウェイを使用して SaaS アプリケーションを保護するプロセスについて説明します。
Chrome Enterprise Premium の安全なゲートウェイは、フォワード プロキシとして機能し、ゼロトラスト アクセス フレームワークを適用して、SaaS アプリケーションにアクセスするユーザーに対するきめ細かいコンテキストアウェア制御を実現します。
SaaS アプリケーションへのアクセスを保護する仕組み
セキュア ゲートウェイが SaaS アプリケーションを保護する仕組みの概要は次のとおりです。
- クライアントサイドのブラウザ設定により、アプリケーション トラフィックが安全なゲートウェイ プロキシ経由でルーティングされます。
- セキュア ゲートウェイは、コンテキストアウェア アクセス ポリシーをチェックして、クライアント(ユーザーとデバイス)のアクセスを承認します。
- 許可されている場合、ゲートウェイは、そのゲートウェイと Google Cloud リージョンに割り当てられた一意の送信元 IP アドレスを使用して、トラフィックをアプリケーションに転送します。これらの専用の送信元 IP アドレスを使用して、IP 許可リスト ルールを実装できます。
始める前に
セキュア ゲートウェイを設定する前に、次のことを確認してください。
- Chrome Enterprise Premium ライセンス
- 管理者アカウントで Google 管理コンソールにアクセスできること
- 請求先アカウントが割り当てられ、次の API が有効になっている Google Cloud プロジェクト: BeyondCorp API
設定を行う管理者に付与される次の Identity and Access Management(IAM)ロール: プロジェクト レベル: Cloud BeyondCorp 管理者(
beyondcorp.admin
)。保護する SaaS アプリケーション。Google インフラストラクチャのセキュリティ チェックを適用するため、アプリケーションで
IP allowlisting
がサポートされている必要があります。
制限事項
Chrome Enterprise Premium のセキュア ゲートウェイには、次の制限事項があります。セキュア ゲートウェイは、IPv6 接続のみを許可する SaaS アプリケーションをサポートしていません。
シェル環境の設定
作業シェルで次の環境変数を定義して、設定プロセスを合理化し、セキュア ゲートウェイ API と通信できるようにします。
一般的なパラメータ
API="beyondcorp.googleapis.com" API_VERSION=v1 PROJECT_ID=MY_PROJECT_ID APPLICATION_ID=MY_APPLICATION_ID APPLICATION_DISPLAY_NAME="MY_APPLICATION_DISPLAY_NAME" HOST_NAME=MY_HOST_NAME
次のように置き換えます。
- MY_PROJECT_ID: セキュア ゲートウェイが作成されるプロジェクトの ID。
- MY_APPLICATION_ID: アプリケーションの ID。例:
github
名前は最大 63 文字で、小文字、数字、ハイフンを使用できます。最初の文字は英字にし、最後の文字は英字または数字にしてください。 - MY_APPLICATION_DISPLAY_NAME: 表示する人が読める形式の名前。
MY_HOST_NAME: アプリケーションのホスト名。例:
github.com
ホスト名は最大 253 文字で、次のいずれかの形式に準拠する必要があります。- 有効な IPv4 アドレス
- 有効な IPv6 アドレス
- 有効な DNS 名
- アスタリスク(*)
- アスタリスク(*)の後に有効な DNS 名
セキュア ゲートウェイのパラメータ
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", "hubs": { "us-central1": {} } }
この例では、
hubs
は、ターゲット アプリケーションへの下り(外向き)接続を有効にするために必要なリージョン リソースを表します。リージョンごとに 1 つのハブを設定でき、各ハブは 2 つの IP アドレスを提供します。次のリージョンを指定できます。
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
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}"
SaaS アプリケーションを構成する
セキュア ゲートウェイを作成したら、セキュア アクセスにセキュア ゲートウェイを使用するように SaaS アプリケーションを構成できます。
各ハブのセキュア ゲートウェイによって割り振られた IP アドレスを取得します。リージョンに 2 つの IP アドレスが割り当てられます。
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
ハブを含むセキュア ゲートウェイの
GET
レスポンスの例を次に示します。この例では、ハブはus-central1
リージョンとus-east1
リージョンに作成されます。また、レスポンスで返されたすべての IP アドレスを SaaS アプリケーションで許可する必要があります。{ "securityGateways": [ { "name": "projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}", "createTime": "CREATE_TIME", "updateTime": "UPDATE_TIME", "displayName": "My security gateway", "state": "RUNNING", "hubs": { "us-central1": { "internetGateway": { "assignedIps": [ "IP_ADDRESS_1", "IP_ADDRESS_2", "IP_ADDRESS_3", "IP_ADDRESS_4", "IP_ADDRESS_5" ] } }, "us-east1": { "internetGateway": { "assignedIps": [ "IP_ADDRESS_1", "IP_ADDRESS_2", "IP_ADDRESS_3", "IP_ADDRESS_4", "IP_ADDRESS_5" ] } } } } ] }
IP アドレスを SaaS アプリケーションの IP 許可リストに追加します。たとえば、GitHub アプリケーションの場合は、こちらのガイド(組織に許可された IP アドレスを管理する)をご確認ください。
アプリケーション リソースを作成する
以降では、安全なゲートウェイ アプリケーション リソースを設定して構成するプロセスについて説明します。
Google Cloudでセキュア ゲートウェイ アプリケーション リソースを作成する
Google Cloud アプリケーション リソースは、セキュア ゲートウェイ リソースのサブリソースです。Create
API を呼び出して、アプリケーション リソースを作成します。
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}\"}] }" \ "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
メッセージが表示されます。