本文將概略介紹 Access Context Manager 服務及其功能。 Google Cloud 機構管理員可以使用 Access Context Manager,為 Google Cloud中的專案和資源定義精細的屬性存取權控管機制。管理員首先定義存取權政策,這是適用於全機構的存取層級和服務範圍容器。
存取層級描述接受要求的必要需求,例如:
- 裝置類型和作業系統
- IP 位址
- 使用者身分
服務範圍可定義資源的沙箱,讓各資源能在範圍內自由交換資料,但不能將資料匯出至範圍之外。Access Context Manager 並不負責執行政策,而是用來定義特定規則或情境。您可透過不同點 (例如 VPC Service Controls) 來設定和強制執行政策。如要進一步瞭解相關服務,請參閱各服務的使用者指南。
您可以在下列 Chrome Enterprise Premium 解決方案元件中設定及強制執行 Access Context Manager 政策:
優點
許多公司都會仰賴防火牆等邊界安全性模型來保護內部資源。邊界安全性模型的出入口只有一個,且戒備森嚴。城牆外的任何外來物都視為危險不可靠,只有牆內的東西才可以信賴。
假如特定使用者和服務有明確的界線,那麼防火牆和範圍安全性模型就可以完美搭配運作。但如果面臨的是行動使用者,隨著自攜裝置和雲端服務的普及,裝置也會越來越多元;這會導致範圍模型未顧及的其他攻擊向量。因此,範圍不再侷限於企業的實體據點,而內部的資料也無法再視為安全無虞。
您可以使用 Access Context Manager 縮小特權網路的範圍,並移至端點不是根據網路來取得環境授權的模型。您可以根據要求的背景資訊 (例如裝置類型、使用者身分等) 授予存取權,並視需要檢查公司網路的存取權。
Access Context Manager 是 Google BeyondCorp 不可或缺的功能。詳情請參閱 BeyondCorp。
存取權政策
存取權政策是所有 Access Context Manager 資源的容器,例如存取層級和服務範圍。
您可以在機構的背景下建立存取權政策,並在機構的任何位置使用機構層級存取權政策。如要委派存取政策的管理權,您可以建立有範圍的存取政策,並在資料夾或專案層級設定政策的範圍。已指派受限政策的委派管理員只能管理受限存取權政策,而無法管理機構層級存取權政策。
存取權政策會使用 etag
進行版本控制。您可以使用 etag
指定存取權政策的變更,例如存取層級或特定政策版本的變更。如果有多個來源變更您的存取權政策,請為 gcloud
指令列工具和 API 呼叫使用 etag
欄位,以免發生不必要的覆寫和衝突。
如要瞭解如何建立存取權政策,請參閱「建立存取權政策」。
存取層級
存取層級可用於根據要求的背景資訊,授予存取資源的權限。您可以使用存取層級來安排信任層級。舉例來說,您可以建立名為 High_Level
的存取層級,允許少數擁有高度權限的使用者提出要求。您也可以指定較一般性的信任群組,例如您要允許傳送要求的 IP 範圍。在這種情況下,您可以建立名為 Medium_Level
的存取層級,允許這些要求。
定義存取層級後,強制執行服務就能根據這些層級判定是否接受要求。舉例來說,您可以指定許多資源可供 Medium_Trust
使用,但某些較敏感的資源則需要 High_Trust
層級。除了標準 IAM 政策,系統也會套用這些檢查。
您可以自訂存取層級 (例如 High_Trust
和 Medium_Trust
存取層級),您可以在同一個存取權政策內指定多個存取層級。
Access Context Manager 提供兩種方式來定義存取層級:
基本存取層級包含一組用於測試要求的條件。條件可定義為您要測試的一組屬性,例如裝置類型、IP 位址或使用者身分。屬性會以 AND 運算 (所有屬性都必須為 true) 或 NOR 運算 (所有屬性都必須為 false) 的形式結合,用於判斷是否符合條件。
自訂存取層級是使用一般運算語言的子集建立。除了用於基本存取層級的要求內容外,您也可以使用自訂存取層級,根據第三方服務的資料允許要求。詳情請參閱「自訂存取層級」。
在巢狀存取層級和結合所有邏輯時,請注意,如果布林運算子 AND
(&&
) 和 OR
(||
) 的任何運算元皆可單獨決定結果,則其他運算元可能會或不會進行評估。此外,如果該評估作業產生執行階段錯誤,系統會忽略該錯誤。舉例來說,在下列運算式中,origin.region_code
的評估失敗,但 levels.ip_check
評估成功。由於至少有一個檢查成功,由 OR
組合的整體條件會變為 true,且存取權為 GRANTED
。
!(origin.region_code in ['RU', 'BY', 'UA']) -> FAILED // levels.regions_check
inIpRange(origin.ip, ['205.220.128.0/23']) -> GRANTED // levels.ip_check
!(origin.region_code in ['RU', 'BY', 'UA']) || inIpRange(origin.ip, ['205.220.128.0/23']) -> GRANTED
levels.regions_check || levels.ip_check -> GRANTED
IP 位址
您可以根據來源要求的 IP 位址授予存取層級。請依無類別跨網域路由 (CIDR) 區塊格式來指定允許的 IP 範圍,這種格式簡易明瞭同時又能讓您精細控管 IP。
一個存取層級可包含多個 IP 範圍。
如要瞭解如何建立只允許從特定 IP 位址範圍 (例如公司網路內的 IP 位址) 存取的存取層級條件,請參閱「為公司網路的存取作業建立存取層級」一文。
裝置類型
Access Context Manager 使用端點驗證功能,收集使用者裝置的相關資訊,例如作業系統、裝置類型或版本。您可以根據這些資料授予存取層級。舉例來說,假如裝置執行的是您公司部署的主要作業系統的最新版本,則可授予較寬鬆的存取層級。
如要瞭解如何根據這些裝置屬性授予存取層級,請參閱「依裝置類型限制存取權」。
使用者身分
在某些情況下,您可能會想授予存取層級給特定實體。在這些情況下,系統會判斷呼叫者的身分識別是否符合條件。這類情況通常會搭配服務帳戶和 VPC Service Controls 使用。舉例來說,您可以使用這個情境,允許 Cloud 函式存取受 VPC Service Controls 保護的資料。
您可以使用 gcloud
指令列工具建立及管理僅限身分識別的存取層級,但無法使用 Google Cloud 主控台。
如要開始建立基本存取層級,請參閱「建立 Access Context Manager 的存取層級」。
如要瞭解如何建立可根據要求情境允許存取權的存取層級,請參閱「建立自訂存取層級」。
合併條件
一個存取層級可包含多個條件,您可使用 AND
或 OR
運算子來評估條件。此外,您建立或更新存取層級時可以指定模式。
AND
是比較嚴格的限制選項 (預設),只有在所有條件都符合時才會授予存取層級。舉例來說,您可指定要求必須來自公司網路內部「And (以及)」來自執行最新版作業系統的裝置。
OR
的限制比較少,這個選項只需要眾多條件中任一條件為真。處理使用者身分識別時這個運算子滿實用的;舉例來說,如要在一般要求中排除特定實體 (例如服務帳戶) 就可以使用 OR。
巢狀條件
您可以使條件形成巢狀結構,也就是讓條件依附於其他條件。舉例來說,如果您有「Medium」(中) 和「High」(高) 信任關係這兩個存取層級,則可將「High」(高) 需求設為必須符合「Medium」(中) 及其他條件。
巢狀條件讓存取層級的管理作業更便利。舉例來說,假設您最寬鬆的存取層級包含最低作業系統版本,且更嚴格的層級依附於這個層級,您日後要更新最低版本,只要更新一個條件就好,不用將政策中的每個存取層級都更新。