安全存取軟體式服務 (SaaS) 應用程式

本頁面將逐步說明如何透過 Chrome Enterprise 進階版安全閘道,保護 SaaS 應用程式。

Chrome Enterprise 進階版安全閘道可做為轉送 Proxy,強制執行零信任存取架構,並提供精細的情境感知控制項,控管 SaaS 應用程式的存取權。

保護軟體即服務 (SaaS) 應用程式存取權的運作方式

以下概略說明安全閘道如何保護 SaaS 應用程式:

  1. 用戶端瀏覽器設定會透過安全閘道 Proxy 轉送應用程式流量。
  2. 安全閘道會檢查情境感知存取權政策,授權用戶端 (使用者和裝置) 存取權。
  3. 如果允許,閘道會使用指派給該閘道和 Google Cloud 區域的專屬來源 IP 位址,將流量轉送至應用程式。您可以使用這些專屬來源 IP 位址,實作 IP 許可清單規則。

事前準備

設定安全閘道前,請確認您具備下列項目:

限制

Chrome Enterprise 進階版安全閘道有下列限制:安全閘道不支援僅允許 IPv6 連線的 SaaS 應用程式。

設定 Shell 環境

如要簡化設定程序並與安全閘道 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 安全閘道是建立應用程式安全連線的基本構成要素。並分配專屬專案和網路,提供隔離和安全防護。

如要建立安全閘道,請完成下列步驟。

  1. 使用下列範例建立名為 securityGateway.json 的檔案。

    {
       "display_name": "MY_SECURITY_GATEWAY_DISPLAY_NAME",
       "hubs": { "us-central1": {} }
    }
    

    在本例中,hubs 代表啟用輸出連線至目標應用程式所需的區域資源。每個區域可有一個中樞,每個中樞提供兩個 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
  2. 呼叫 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 應用程式,透過安全閘道安全存取。

  1. 取得安全閘道為每個中樞分配的 IP 位址。系統會為每個區域分配兩個 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}"
    

    以下是具有中樞的 Secure Gateway GET 回應範例。在本範例中,中樞會建立於 us-central1us-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"
               ]
             }
           }
         }
       }
     ]
    }
    
  2. 將 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 Proxy 模式

如要透過安全閘道傳送應用程式資源的流量,請在 Google 管理控制台的 Chrome 設定中套用 PAC 檔案,藉此設定 Chrome。

  1. 建立或更新 PAC 檔案。

    • 如果您要建立第一個應用程式,請使用下列範例 PAC 檔案建立 pac_config.js 檔案。

    • 如果您要建立第二個或後續應用程式,請更新現有的 pac_config.js 檔案,並將新應用程式的網域新增至網站陣列,如下列 PAC 檔案範例所示。

    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 檔案。

  2. 上傳檔案,讓使用者可以公開下載。舉例來說,您可以將檔案上傳至 Cloud Storage,並在 bucket 中授予所有使用者 Storage Object User 角色,讓檔案可供公開下載。

  3. 如要確認上傳的檔案一律為最新版本,可以將 Cache-Control 標頭設為 no-cache,調整檔案的快取行為。這項設定可防止瀏覽器和中繼伺服器儲存檔案副本,確保 Chrome 一律下載最新版本。

    如要進一步瞭解 Cache-Control,以及這項指令對瀏覽器快取造成的影響,請參閱「Cache-Control 標頭」。

  4. 複製上傳檔案的公開網址。

更新 Proxy 模式設定

  1. 前往 Google 管理控制台
  2. 依序點選「裝置」->「Chrome」->「設定」
  3. 選取機構單位或群組,然後按一下「Proxy 模式」
  4. 在「Proxy 模式」頁面中,選取「一律使用以下指定的 Proxy 自動設定」,然後輸入 Cloud Storage 中 PAC 檔案的網址。

設定存取權政策

您可以在安全閘道層級或應用程式層級套用存取權政策:

  • 安全閘道資源:在安全閘道層級套用政策,控管所有相關聯應用程式的存取權。
  • 個別應用程式:如要更精細地控管存取權,您可以對個別應用程式套用存取權政策。
  1. 建立名為 setIamPolicy.json 的 JSON 格式檔案,然後新增下列內容。

    {
     "policy": {
       object (POLICY)
     }
    }
    

    POLICY 替換為IAM 允許政策。政策中的 etag 必須與有效政策中的 etag 相同,您可以呼叫 getIamPolicy 方法取得有效政策。

  2. 如要允許特定群組使用安全閘道,請將 roles/beyondcorp.securityGatewayUser 角色授予該群組。

    {
     "policy": {
       "version": 3,
       "bindings": [
         {
           "role": "roles/beyondcorp.securityGatewayUser",
           "members": [
                   "group:"
           ]
         }
       ],
       "etag": "AA1jlb"
     }
    }
    

    如需更多識別碼 (例如 serviceAccountusergroupprincipalprincipalSet) 的政策繫結,請參閱 IAM 主體

  3. 呼叫 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 進階版擴充功能是安全閘道不可或缺的一環,有助於進行驗證。為安全閘道的所有使用者安裝擴充功能。如要瞭解如何部署擴充功能,請參閱「查看及設定應用程式和擴充功能」。

  1. 前往 Google 管理控制台
  2. 依序點選「Chrome 瀏覽器」>「應用程式和擴充功能」
  3. 按一下「使用者和瀏覽器」分頁。
  4. 如要新增 Chrome 擴充功能,請按一下「+」按鈕。
  5. 搜尋 ekajlcmdfcigmdbphhifahdfjbkciflj,然後強制為機構單位或群組中的所有使用者安裝。
  6. 按一下已安裝的擴充功能,然後前往「擴充功能政策」欄位,提供下列 JSON 值:

    {
     "securityGateway": {
       "Value": {
         "authentication": {},
         "context": { "resource": "projects/MY_PROJECT_ID/locations/global/securityGateways/MY_SECURITY_GATEWAY_ID" }
       }
     }
    }
    

使用者體驗

設定完成後,系統會根據套用至應用程式的存取權政策,授予或拒絕存取受保護 SaaS 應用程式的終端使用者存取權。

在 Chrome 中存取應用程式

您必須安裝 Chrome Enterprise 進階版擴充功能,才能將流量導向安全閘道。擴充功能會處理使用者與安全閘道之間的驗證。系統會透過網域政策自動安裝擴充功能。

使用者存取您設定的 SaaS 應用程式時,流量會通過安全閘道,系統會檢查使用者是否符合存取政策。如果使用者通過存取政策檢查,系統就會授予應用程式存取權。

如果授權政策拒絕瀏覽器存取應用程式,使用者會收到 Access denied 訊息。

後續步驟