このページでは、Chrome Enterprise Premium の安全なゲートウェイを使用して SaaS アプリケーションを保護するプロセスについて説明します。
Chrome Enterprise Premium の安全なゲートウェイは、フォワード プロキシとして機能し、ゼロトラスト アクセス フレームワークを適用して、SaaS アプリケーションにアクセスするユーザーをきめ細かくコンテキストアウェアに制御します。
SaaS アプリケーションへのアクセスを保護する仕組み
セキュア ゲートウェイが SaaS アプリケーションを保護する仕組みの概要は次のとおりです。
- クライアントサイドのブラウザ設定により、アプリケーション トラフィックが安全なゲートウェイ プロキシ経由でルーティングされます。
- セキュア ゲートウェイは、コンテキストアウェア アクセス ポリシーをチェックして、クライアント(ユーザーとデバイス)のアクセスを承認します。
- クライアント アクセスが許可されている場合、ゲートウェイは、そのゲートウェイとリージョンに割り当てられた一意の送信元 IP アドレスを使用して、トラフィックをアプリケーションに転送します。 Google Cloud 割り当てられた IP アドレスは、作成したゲートウェイ専用に予約されており、他のユーザーやゲートウェイでは使用できません。アクセスを制御するには、これらの専用の送信元 IP アドレスを SaaS アプリケーションの許可リストに追加します。
始める前に
セキュア ゲートウェイを設定する前に、次のことを確認してください。
- Chrome Enterprise Premium ライセンス
- 管理者アカウントで Google 管理コンソールにアクセスできること
- 請求先アカウントが割り当てられ、次の API が有効になっている Google Cloud プロジェクト: BeyondCorp API
設定を行う管理者に付与される次の Identity and Access Management(IAM)ロール: プロジェクト レベル: Cloud BeyondCorp 管理者(
beyondcorp.admin)。保護する SaaS アプリケーション。Secure Gateway のセキュリティ チェックを適用するため、アプリケーションで
IP allowlistingがサポートされている必要があります。
制限事項
Chrome Enterprise Premium セキュア ゲートウェイには、次の制限事項があります。
- IPv6 接続: Chrome Enterprise Premium セキュア ゲートウェイは、IPv6 接続を使用する SaaS アプリケーションをサポートしていません。
- SaaS アプリケーションとしての ID プロバイダ: エンドユーザーの Secure Gateway による認証が同じ IdP に依存している場合、セキュア ゲートウェイで保護されるように ID プロバイダを SaaS アプリケーションとして構成することはできません。
シェル環境の設定
作業シェルで次の環境変数を定義して、設定プロセスを合理化し、セキュア ゲートウェイ API と通信できるようにします。
一般的なパラメータ
API="beyondcorp.googleapis.com" API_VERSION=v1 PROJECT_ID=
MY_PROJECT_IDAPPLICATION_ID=MY_APPLICATION_IDAPPLICATION_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_IDSECURITY_GATEWAY_DISPLAY_NAME="MY_SECURITY_GATEWAY_DISPLAY_NAME"次のように置き換えます。
MY_SECURITY_GATEWAY_ID: セキュア ゲートウェイの ID。ID は 63 文字以下で、小文字、数字、ハイフンを使用できます。最初の文字は英字に、最後の文字は英字または数字にしてください。MY_SECURITY_GATEWAY_DISPLAY_NAME: 人が読める形式のセキュア ゲートウェイの名前。名前は最大 63 文字で、印刷可能な文字のみを含めることができます。
セキュア ゲートウェイを作成する
Chrome Enterprise Premium セキュア ゲートウェイは、アプリケーションへの安全な接続を確立するための基本的な構成要素となります。専用のプロジェクトとネットワークを割り当て、分離とセキュリティを確保します。
セキュア ゲートウェイ リソースを作成するには、次のいずれかの方法を使用します。
gcloud
以下のコマンドを実行します。--hubs フラグには、次のリストから 1 つ以上のリージョンを指定します。
gcloud beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \
--project=${PROJECT_ID} \
--location=global \
--display-name="MY_SECURITY_GATEWAY_DISPLAY_NAME" \
--hubs=us-central1
REST
リクエスト本文にゲートウェイの詳細を指定して、Create API メソッドを呼び出します。hubs オブジェクトには、次のリストから 1 つ以上のリージョンを指定します。
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME", "hubs": { "us-central1": {} } }' \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
hubs は、ターゲット アプリケーションへの下り(外向き)接続を有効にするために必要なリージョン リソースを表します。リージョンごとに 1 つのハブを設定でき、各ハブは 2 つの IP アドレスを提供します。次のリージョンを指定できます。
africa-south1asia-east1asia-south1asia-south2asia-southeast1europe-central2europe-north1europe-southwest1europe-west1europe-west2europe-west3europe-west4europe-west8europe-west9northamerica-northeast1northamerica-northeast2northamerica-south1southamerica-east1southamerica-west1us-central1us-east1us-east4us-east5us-west1
SaaS アプリケーションを構成する
セキュア ゲートウェイを作成したら、セキュア アクセスにセキュア ゲートウェイを使用するように SaaS アプリケーションを構成できます。
セキュア ゲートウェイによって各ハブに割り振られた IP アドレスを取得します。リージョンに 2 つの IP アドレスが割り当てられます。
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://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
hubsを含むセキュア ゲートウェイのGETレスポンスの例を次に示します。この例では、hubsはus-central1リージョンとus-east1リージョンに作成されます。また、レスポンスで返されたすべての IP アドレスを SaaS アプリケーションで許可する必要があります。gcloud
createTime: 'CREATE_TIME' displayName: My security 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'
REST
{ "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", ] } }, "us-east1": { "internetGateway": { "assignedIps": [ "IP_ADDRESS_1", "IP_ADDRESS_2", ] } } } } ] }
IP アドレスを SaaS アプリケーションの IP 許可リストに追加します。たとえば、GitHub アプリケーションの場合は、こちらのガイド(組織に許可された IP アドレスを管理する)をご確認ください。
アプリケーション リソースを作成する
以降では、安全なゲートウェイ アプリケーション リソースを設定して構成する手順について説明します。
Google Cloudで安全なゲートウェイ アプリケーション リソースを作成する
Google Cloud アプリケーション リソースは、セキュア ゲートウェイ リソースのサブリソースです。Create API を呼び出して、アプリケーション リソースを作成します。
gcloud
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
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://${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 コマンドは、既存のポリシー全体を指定したポリシーに置き換えます。既存の権限を誤って削除しないようにするには、read-modify-write パターンに従うことをおすすめします。これにより、既存のポリシーを上書きするのではなく、追加のみを行うことができます。
読み取り: まず、現在のアクセス ポリシーを取得します。
変更: ポリシー ファイルをローカルで編集して、権限を追加または変更します。
書き込み: 更新したポリシー ファイルを適用します。
現在のポリシーを取得する
変更を行う前に、現在のポリシーを取得します。
ポリシーの etag フィールドは、バージョン識別子として機能します。これにより、複数の管理者が同時に変更を行った場合に競合する更新を防ぐことができます。
次のコマンドは、ポリシーを取得して policy.json という名前のファイルに保存します。
gcloud
gcloud beyondcorp security-gateways applications get-iam-policy ${APPLICATION_ID} \ --security-gateway=${SECURITY_GATEWAY_ID} \ --project=${PROJECT_ID} \ --location=global > policy.json
REST
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}/applications/${APPLICATION_ID}:getIamPolicy" > policy.json
コマンドを実行すると、現在のポリシーを含む policy.json ファイルが作成されます。
ポリシー ファイルを変更する
テキスト エディタで policy.json ファイルを開きます。 セキュア ゲートウェイを使用する権限をグループに付与するには、roles/beyondcorp.securityGatewayUser ロールの members リストにグループを追加します。
policy.json は次の例のようになります。
{
"policy": {
"version": 3,
"bindings": [
{
"role": "roles/beyondcorp.securityGatewayUser",
"members": [
"group:existing-group@example.com"
]
}
],
"etag": "BwXN8_d-bOM="
}
}
新しいグループを追加するには、members 配列に新しいエントリを追加します。前のエントリの後にカンマを含めます。
次の例では、new-group@example.com を追加します。
{
"policy": {
"version": 3,
"bindings": [
{
"role": "roles/beyondcorp.securityGatewayUser",
"members": [
"group:existing-group@example.com",
"group:new-group@example.com"
]
}
],
"etag": "BwXN8_d-bOM="
}
}
ポリシー バインディングでは、serviceAccount、user、group、principal、principalSet などの他のタイプのメンバーを追加することもできます。詳細については、IAM プリンシパルをご覧ください。
更新されたポリシーを適用する
policy.json ファイルを編集して保存したら、setIamPolicy コマンドを使用してリソースに適用します。このコマンドは、ファイルから etag を使用して、正しいバージョンを更新します。
gcloud
gcloud beyondcorp security-gateways applications set-iam-policy ${APPLICATION_ID} policy.json \ --security-gateway=${SECURITY_GATEWAY_ID} \ --project=${PROJECT_ID} \ --location=global
REST
jq '{policy: .}' policy.json | curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @- \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications/${APPLICATION_ID}:setIamPolicy"
条件付きアクセス ポリシーを追加する
条件付きのアクセス ポリシーを設定することもできます。条件では、特定の場所から発信されたユーザーの IP アドレスなどの要件を指定します。
次の例は、送信元 IP アドレスが指定されたアクセスレベル内にある場合にのみアクセスを許可するポリシーを示しています。
{
"policy": {
"version": 3,
"bindings": [
{
"role": "roles/beyondcorp.securityGatewayUser",
"members": [
"group:group@example.com"
],
"condition": {
"expression": "'accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels",
"title": "Source IP must be in US"
}
}
],
"etag": "BwXN8_d-bOM="
}
}
このポリシーを適用するには、前述の手順に沿って操作します。
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 メッセージが表示されます。