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

本頁面將引導您透過 Chrome Enterprise 進階版安全閘道,保護 SaaS 應用程式。

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

如何保護 SaaS 應用程式的存取權

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

  1. 用戶端瀏覽器設定會透過安全閘道 Proxy 轉送應用程式流量。
  2. 安全閘道會檢查情境感知存取權政策,授權用戶端 (使用者和裝置) 存取。
  3. 如果允許用戶端存取,閘道會使用指派給該閘道和 Google Cloud區域的專屬來源 IP 位址,將流量轉送至應用程式。這些指派的 IP 位址會專門保留給您建立的閘道,其他使用者或閘道無法使用。如要控管存取權,您可以將這些專屬來源 IP 位址,加入 SaaS 應用程式的許可清單。

必要的角色

請要求管理員授予下列角色:

進一步瞭解 Identity and Access Management (IAM) 角色。

必要的 Chrome Enterprise 政策

安全閘道 Proxy 驗證需要 Basic HTTP 驗證配置。如果您為組織設定 Chrome Enterprise 驗證政策,請確認下列政策設定:

  • AuthSchemes 必須包含 basic 驗證 (未設定政策時預設為啟用)。或者,在 Chrome 157 以上版本中,如果貴組織從 AuthSchemes 移除 basic,您可以設定 AllHttpAuthSchemesAllowedForProxies,納入安全閘道 Proxy 端點 (例如 via.prod.securegateway.goog:443)。AuthSchemes 中的其他值不會影響安全閘道 Proxy 驗證。

  • BasicAuthOverHttpEnabled 必須設為 0 (false,或停用),禁止不安全的 HTTP 連線使用 Basic 驗證配置。

事前準備

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

限制

Chrome Enterprise 進階版安全閘道有下列限制:

  • IPv6 連線:Chrome Enterprise Premium 安全閘道不支援使用 IPv6 連線的 SaaS 應用程式。
  • 識別資訊提供者做為 SaaS 應用程式:如果使用者透過安全閘道進行驗證時,必須使用相同的 IdP,則不得將識別資訊提供者設為受安全閘道保護的 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 進階版安全閘道是建立應用程式安全連線的基本要素。系統會分配專屬專案和網路,確保隔離和安全性。

主控台

如要建立安全閘道資源,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「secure gateway」(安全閘道) 頁面。
    前往安全閘道
  2. 選取要建立安全閘道的專案。
  3. 如要建立安全閘道,請按一下「Create new gateway」(建立新閘道),然後等待閘道建立程序完成。
  4. 您可以在 Google Cloud 控制台的「通知」部分追蹤進度。
  5. 建議您先建立 SaaS 輸出中樞,再建立 SaaS 應用程式資源。hubs 旗標代表啟用目標應用程式輸出連線所需的區域資源。每個區域可以設定一個中樞,每個中樞提供兩個 IP 位址。安全閘道最多可有 20 個中樞。您可以指定下列區域:
    • africa-south1
    • asia-east1
    • asia-east2
    • asia-northeast1
    • asia-northeast2
    • asia-northeast3
    • asia-south1
    • asia-south2
    • asia-southeast1
    • asia-southeast2
    • asia-southeast3
    • australia-southeast2
    • europe-central2
    • europe-north1
    • europe-north2
    • europe-southwest1
    • europe-west1
    • europe-west10
    • europe-west12
    • europe-west2
    • europe-west3
    • europe-west4
    • europe-west6
    • europe-west8
    • europe-west9
    • me-central1
    • me-central2
    • me-west1
    • northamerica-northeast1
    • northamerica-northeast2
    • northamerica-south1
    • southamerica-east1
    • southamerica-west1
    • us-central1
    • us-central2
    • us-east1
    • us-east4
    • us-east5
    • us-east7
    • us-south1
    • us-west1
    • us-west2
    • us-west3
    • us-west4
    • us-west8
  6. 前往 Google Cloud 控制台的「SaaS Egress Hubs」(SaaS 輸出中樞) 頁面。
    前往「SaaS 輸出中樞」頁面
  7. 選取要建立 SaaS 輸出中樞的專案。
  8. 如要新增 SaaS 輸出中樞,請按一下「Add SaaS egress hub」(新增 SaaS 輸出中樞)。
  9. 從下拉式選單中,選取要新增輸出中樞的區域。如要新增輸出中樞,請按一下「Add SaaS egress hub」(新增 SaaS 輸出中樞),新增多個中樞。完成後,按一下「儲存」即可建立輸出中樞。

gcloud

如要建立安全閘道資源,請執行下列指令。針對 --hubs 旗標,請從下列清單中指定一或多個區域。

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 旗標會設定啟用目標應用程式輸出連線所需的區域資源。每個區域可以有一個中樞,每個中樞提供兩個 IP 位址。安全閘道最多可有 20 個中樞。您可以指定下列區域:

  • africa-south1
  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-south2
  • asia-southeast1
  • asia-southeast2
  • asia-southeast3
  • australia-southeast2
  • europe-central2
  • europe-north1
  • europe-north2
  • europe-southwest1
  • europe-west1
  • europe-west10
  • europe-west12
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • europe-west8
  • europe-west9
  • me-central1
  • me-central2
  • me-west1
  • northamerica-northeast1
  • northamerica-northeast2
  • northamerica-south1
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-central2
  • us-east1
  • us-east4
  • us-east5
  • us-east7
  • us-south1
  • us-west1
  • us-west2
  • us-west3
  • us-west4
  • us-west8

REST

如要建立安全閘道資源,請呼叫 Create API 方法,並在要求主體中提供閘道詳細資料。針對 hubs 旗標,請從下列清單中指定一或多個區域。

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 旗標代表啟用目標應用程式輸出連線所需的區域資源。每個區域可以有一個中樞,每個中樞提供兩個 IP 位址。安全閘道最多可有 20 個中樞。您可以指定下列區域:

  • africa-south1
  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-south2
  • asia-southeast1
  • asia-southeast2
  • asia-southeast3
  • australia-southeast2
  • europe-central2
  • europe-north1
  • europe-north2
  • europe-southwest1
  • europe-west1
  • europe-west10
  • europe-west12
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • europe-west8
  • europe-west9
  • me-central1
  • me-central2
  • me-west1
  • northamerica-northeast1
  • northamerica-northeast2
  • northamerica-south1
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-central2
  • us-east1
  • us-east4
  • us-east5
  • us-east7
  • us-south1
  • us-west1
  • us-west2
  • us-west3
  • us-west4
  • us-west8

設定 SaaS 應用程式

建立安全閘道後,您可以設定 SaaS 應用程式,透過安全閘道安全存取。

主控台

如要設定 SaaS 輸出中樞,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「SaaS Egress Hubs」(SaaS 輸出中樞) 頁面。
    前往「SaaS 輸出中樞」頁面
  2. 在「SaaS Egress Hubs」(SaaS 輸出中樞) 頁面,找到列出中樞的表格。針對您要使用的每個區域,複製「Static dedicated egress IPs」(靜態專用輸出 IP) 欄中列出的所有 IP 位址。每個區域提供兩個 IP 位址。
  3. 將 IP 位址新增至 SaaS 應用程式的 IP 許可清單。舉例來說,如果是 GitHub 應用程式,請按照「管理組織允許的 IP 位址」指南操作。

gcloud

如要設定 SaaS 輸出中樞,請按照下列步驟操作:

  1. 取得安全閘道為各中樞分配的 IP 位址。系統會為區域分配兩個 IP 位址。
  2. gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \
        --project=PROJECT_ID \
        --location=global
            

    以下是安全閘道與 hubs 的 GET 回應範例。在範例中,hubs 是在 us-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 位址。系統會為區域分配兩個 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 回應範例。在範例中,hubs 是在 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 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,建立應用程式資源。

主控台

如要建立 SaaS 應用程式,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「secure gateway」(安全閘道) 頁面。
    前往安全閘道
  2. 如要建立應用程式,請按一下「Add application」。
  3. 選取應用程式類型:「公開應用程式」。
  4. 如果這個安全閘道尚未設定 SaaS 輸出中樞,系統會提示您建立。公開應用程式至少須有一個 SaaS 輸出中樞。如要設定 SaaS 輸出中樞,請按一下「Go to SaaS egress hubs」(前往 SaaS 輸出中樞),然後新增一或多個區域。
  5. 建立一或多個輸出中樞後,請點選「Next」(下一步)。
  6. 輸入應用程式詳細資料:
    • 應用程式名稱:輸入名稱,例如 GitHub。
    • 網域比對器:輸入要透過安全閘道轉送的網域模式,並以半形逗號分隔。請以 domain:port 格式加入通訊埠。可使用萬用字元 (*)。例如:github.com:443。
  7. 如要設定 SaaS 應用程式,請按一下「Continue」(繼續)。
  8. 設定 SaaS 應用程式,允許來自安全閘道的流量:
    1. 請仔細記下或複製所用區域列出的所有 IP 位址。這些 IP 位址是安全閘道專屬。
    2. 登入 SaaS 應用程式的管理控制台。
    3. 前往管理 IP 許可清單的網路設定或安全性設定。
    4. 將取得的所有 IP 位址加入應用程式的 IP 許可清單。
  9. 如要新增應用程式,請按一下「Continue」(繼續)。
  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"
      

設定存取權政策

您可以套用存取權政策,在應用程式層級控管存取權。如未設定存取權政策,系統預設會拒絕存取應用程式。

主控台

為多個應用程式建立政策

如要設定存取權政策,請按照下列步驟操作:

  1. 如要建立政策,並套用至連結安全閘道的多個應用程式,請前往「政策」頁面。
    前往「政策」頁面
  2. 如要為應用程式新增存取權政策,請按一下「Create Policy」(建立政策)。
  3. 從下拉式選單中,選取要套用政策的應用程式。
  4. 將主體新增至政策:

    主體可以是使用者、群組、網域或服務帳戶。系統會根據您指派的存取層級,授予或拒絕這些主體的存取權。

    1. 如要新增主體,請按一下「Add principal」(新增主體)。
    2. 在「Principal」(主體) 欄位中,輸入使用者、群組、服務帳戶的電子郵件地址,或網域名稱。
    3. 在「存取層級」下拉式選單中,選取一或多個預先定義的情境感知存取權層級。只有在主體符合所選存取層級的條件時,系統才會授予存取權。

    如要新增更多主體,請再次點選「新增主體」,然後重複上述子步驟。

    您可以在 Access Context Manager 中建立及管理存取層級。

  5. 如要將政策套用至應用程式,請按一下「Create Policy」(建立政策)。

修改應用程式層級存取政策

  1. 如要修改單一應用程式的政策,請前往「應用程式」頁面。
    前往「Applications」(應用程式)
  2. 如要找出要編輯的應用程式,請按照下列步驟操作:
    1. 在「Applications」清單中,搜尋要修改的應用程式。
    2. 如要查看應用程式詳細資料,請按一下「更多動作」選單 (),然後選取「查看詳細資料」。
  3. 如要編輯應用程式,請按一下「編輯」。
  4. 將主體新增至政策:

    主體可以是使用者、群組、網域或服務帳戶。系統會根據您指派的存取層級,授予或拒絕這些主體的存取權。

    1. 如要新增主體,請按一下「Add principal」(新增主體)。
    2. 在「Principal」(主體) 欄位中,輸入使用者、群組、服務帳戶的電子郵件地址,或網域名稱。
    3. 在「存取層級」下拉式選單中,選取一或多個預先定義的情境感知存取權層級。只有在主體符合所選存取層級的條件時,系統才會授予存取權。

    如要新增更多主體,請再次點選「新增主體」,然後重複上述子步驟。

    您可以在 Access Context Manager 中建立及管理存取層級。

  5. 如要將政策套用至應用程式,請按一下「Save」(儲存)。

gcloud

新增服務探索閘道層級繫結

授予使用者應用程式存取權前,請確認使用者具備安全閘道層級的服務探索權限。

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:要指派服務探索角色的使用者、群組或服務帳戶。詳情請參閱「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:要指派服務探索角色的使用者、群組或服務帳戶。詳情請參閱「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"
  

移除服務探索閘道層級繫結

在安全閘道層級撤銷使用者的服務探索權限。

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:要移除服務探索角色的使用者、群組或服務帳戶。詳情請參閱「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:要移除服務探索角色的使用者、群組或服務帳戶。詳情請參閱「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. Read:將目前的存取權政策儲存至檔案。
  2. 修改:在本機編輯政策檔案,新增或變更權限。
  3. 寫入:套用更新後的政策檔案。

設定服務探索閘道層級政策

如要授予服務探索權限,您必須在安全閘道 (而非個別應用程式) 設定存取權政策。這遵循相同的「讀取-修改-寫入」模式。

擷取目前的政策,並儲存至名為 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="
}
  

您也可以在政策繫結中新增其他類型的成員,例如 serviceAccount、user、group、principal 和 principalSet。詳情請參閱「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="
}
    

您也可以在政策繫結中新增其他類型的成員,例如 serviceAccount、user、group、principal 和 principalSet。詳情請參閱「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 設定檔是否受管理,防止未受管理或惡意瀏覽器可能造成的濫用行為。

注意:如要使用這項功能,必須安裝並設定端點驗證擴充功能。

如要實作這項功能,請在 Access Context Manager 自訂存取層級中新增條件。以下是可調整的條件範例:

  device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
  

如要進一步瞭解如何設定、檢查及管理這個狀態,請參閱「Chrome 瀏覽器屬性」。

安裝 Chrome Enterprise 進階版擴充功能

Chrome Enterprise 進階版擴充功能是安全閘道不可或缺的一部分,可協助進行驗證。為所有安全閘道使用者安裝擴充功能。如要瞭解如何部署擴充功能,請參閱「查看及設定應用程式和擴充功能」。如要安裝 Chrome Enterprise 進階版擴充功能,請按照下列步驟操作:

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

    ekajlcmdfcigmdbphhifahdfjbkciflj
  6. 按一下已安裝的擴充功能,然後在「Policy for extensions」欄位中輸入下列 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 檔案手動設定轉送。

如果安全閘道未啟用服務探索功能,則表示您採用舊版設定。您必須設定 PAC 檔案,才能控管 Chrome 瀏覽器用戶端的轉送作業。

如要確認是否採用舊版設定,請使用下列指令,查看是否已啟用服務探索:

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 bucket。

    • 確認檔案可公開下載。
    • 將 HTTP 標頭 Cache-Control 設為 no-cache,讓瀏覽器一律擷取最新的路由規則。
  3. 複製上傳 PAC 檔案的公開網址。

步驟 2:在 Google 管理控制台中套用 PAC 檔案

  1. 前往 Google 管理控制台。
  2. 依序前往「裝置」 >「Chrome」 >「設定」。
  3. 選取組織單位或群組,然後按一下「Proxy 模式」。
  4. 在「Proxy 模式」下方,選取「一律使用以下指定的 Proxy 自動設定」。
  5. 在指定欄位中輸入託管 PAC 檔案的公開網址。
  6. 按一下 [儲存]。

步驟 3:設定 Chrome Enterprise 進階版擴充功能

擴充功能必須處理驗證。這項擴充功能政策與標準設定不同,因為不含 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 角色,讓他們可以使用服務探索功能。按照「新增服務探索閘道層級繫結」一節的指示操作。

  3. 更新 Chrome Enterprise 進階版擴充功能設定:按照「安裝 Chrome Enterprise 進階版擴充功能」一節的指示更新擴充功能政策。新的 JSON 設定必須包含 "serviceDiscovery": { "routes": {} } 區塊。

  4. 移除舊版 PAC 檔案:服務探索功能啟用後,就不再需要舊版 PAC 檔案。

    1. 在 Google 管理控制台中,依序前往「裝置」>「Chrome」>「設定」>「使用者和瀏覽器設定」>「網路」。
    2. 找出「Proxy 模式」設定。
    3. 移除 Proxy 自動設定 (PAC) 網址,或將設定從「一律使用以下指定的 Proxy 自動設定」切換為適合您網路的模式,例如「允許使用者自行設定」。
    4. 按一下 [儲存]。

使用者體驗

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

在 Chrome 中存取應用程式

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

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

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

後續步驟