Access Context Manager (ACM) 簡介
在零信任 (Zero Trust) 架構中,身分只是拼圖的一角。存取內容管理器 (Access Context Manager, ACM) 是評估請求「內容背景 (Context)」的引擎,在授予存取權之前,它會檢查「何地」、「何物」以及「如何」。如果說 IAM 管理的是「誰」,那麼 ACM 管理的就是「在什麼條件下」。
對於 專業雲端安全工程師 (PSE) 而言,ACM 是內容感知存取 (Context-Aware Access) 的核心策略引擎。它允許您建立精細的存取層級 (Access Levels),這些層級可被 Identity-Aware Proxy (IAP) 和 VPC 服務控制 (VPC Service Controls, VPC SC) 使用,從而在 Web 應用程式和雲端 API 之間提供統一的安全狀況。
白話文解釋
1. 高安全性保險庫 (存取層級)
想像一個銀行保險庫。要進入其中,您不僅需要一把鑰匙 (身分)。保安人員還會檢查:您是否穿著公司制服?(設備狀態)。現在是營業時間嗎?(時間背景)。您是從正門進來還是從後巷進來?(IP/位置)。如果其中任何一個條件不滿足,即使您有鑰匙,保險庫也會保持鎖定。
2. 機場安檢 (基本 vs. 自定義)
基本存取層級就像標準安檢線:每個人都經過相同的檢查 (身分證、行李、金屬探測器)。自定義存取層級則像「快速通關」或「外交通道」,使用特定的規則 (CEL 運算式) 來驗證標準線無法處理的複雜身分與狀態組合。
3. 數位健康證明 (設備狀態)
想想一位需要健康證明才能入境的國際旅客。ACM 會檢查您設備的「健康狀況」:磁碟是否已加密?是否有螢幕鎖?操作系統是否為最新版本?如果您的設備「生病了」(未加密),ACM 就會拒絕您進入雲端應用程式。
定義存取層級 (基本 vs. 自定義)
存取層級 (Access Level) 是一組命名的條件。
基本存取層級 (Basic Access Levels)
基本層級可透過 Google Cloud 主控台或 YAML 檔案建立。它們支援常見的屬性:
- IP 子網路: 限制存取特定的 CIDR 範圍 (例如:公司 VPN 或辦公室 IP)。
- 設備策略: 檢查螢幕鎖、磁碟加密和操作系統版本。
- 地理位置: 僅允許來自特定國家的存取。
- 必要的存取層級: 您可以嵌套存取層級 (例如:層級 A 需要滿足層級 B)。
自定義存取層級 (Custom Access Levels)
自定義層級使用通用運算式語言 (CEL) 來處理複雜邏輯。
- 情境: 只有當使用者屬於「財務」群組,且正在使用受控設備或來自「受信任 IP」時,才授予存取權。
- CEL 允許執行基本層級無法提供的
if/then/else邏輯。
存取內容管理器 (Access Context Manager, ACM) 是一項 Google Cloud 服務,可讓您為專案和資源定義精細的、基於屬性的存取控制策略。
屬性:IP、設備狀態與位置
ACM 利用 端點驗證 (Endpoint Verification) (一個 Chrome 擴充功能或行動應用程式) 來收集設備遙測數據。
設備狀態屬性:
is_managed:設備是否已註冊到組織的管理系統中?is_encrypted:設備的儲存空間是否在靜態時已加密?screen_lock_enabled:解鎖設備是否需要 PIN 或密碼?os_type:限制特定的操作系統 (例如:僅限 macOS 和 Windows)。
要強制執行基於設備的 ACM 策略,使用者必須在他們的設備上安裝並啟用端點驗證 (Endpoint Verification)。
搭配 VPC 服務控制 (VPC SC) 使用存取層級
VPC 服務控制為您的資料建立了一個「周邊 (Perimeter)」。然而,有時合法使用者需要從外部存取該周邊內的資源。
通往周邊的橋樑:
- 定義一個 ACM 存取層級 (例如:"Corporate_IPs")。
- 在 VPC SC 周邊設定中,將該存取層級加入到傳入策略 (Ingress Policy)。
- 來自公司 IP 的使用者現在可以從他們的筆記型電腦存取受限的 API (如 BigQuery 或 GCS),即使他們不在 VPC 內部。
PSE 情境如果同時牽涉 VPC Service Controls 與 VPC 外的使用者存取,考試期待的答案是「把 ACM Access Level 掛在 VPC SC 的 Ingress Policy 上」,而不是改 VPC firewall rule 或調整 Shared VPC。Firewall rule 無法評估 is_managed、is_encrypted 或國家地理屬性,只有透過 VPC SC ingress 引用的 ACM Access Level 才辦得到。
與 BeyondCorp Enterprise 整合
ACM 是 BeyondCorp Enterprise 的核心。它實現了:
- 持續評估: 如果使用者在登入期間取消了磁碟加密,ACM (透過端點驗證) 可以偵測到變化並立即撤銷存取權。
- 安全瀏覽: 結合 Chrome Enterprise,ACM 可以確保資料只能下載到「授權設備」。
設備安全性狀態檢查
對於 PSE 而言,「狀態 (Posture)」不只是勾選方塊。ACM 可以強制執行特定的操作系統版本,以防止來自具有已知漏洞的設備的存取。
- 條件約束:
device.os_config.version >= "10.0.19041"(Windows 10 版本檢查)。
務必在存取層級的「使用者訊息」欄位中提供明確的錯誤訊息。如果使用者被拒絕,他們需要知道「為什麼」(例如:「請啟用磁碟加密以存取此資源」)。
管理多個存取策略
在大型組織中,不同部門可能需要不同的安全性規則。
- 組織策略: 預設情況下,整個組織只有一個全域存取策略。
- 範圍限定策略 (Scoped Policies): 您現在可以建立僅套用於特定資料夾或專案的範圍限定存取策略。這可以防止策略變更的「爆炸半徑」影響到整個公司。
ACM 必背數字:每個 Organization 預設只有 1 個 全域 Access Policy,另可加掛 Folder/Project 層級的 Scoped Access Policies。Endpoint Verification 的設備狀態同步最久可能延遲約 24 小時。被拒絕的存取會在 accesscontextmanager.googleapis.com 日誌中以 protoPayload.status.code=7 出現;要給承包商 48 小時的時限性存取,標準解法是在 iap.httpsResourceAccessor 角色上掛 IAM Condition。
使用 CEL 建立自定義存取層級
CEL 運算式功能強大,但需要仔細的語法檢查。
CEL 運算式範例:
// 滿足 (加密且啟用螢幕鎖) 或 (位於公司 IP) 時允許存取
(device.encryption_status == DeviceEncryptionStatus.ENCRYPTED &&
device.screen_lock_enabled == true) ||
(levels.select_trusted_ips)
CEL 運算式區分大小寫。DeviceEncryptionStatus.ENCRYPTED 與 encrypted 不同。請務必參考 ACM 官方 CEL 文件以獲取準確的列舉值 (Enum values)。
存取層級拒絕的故障排除
當使用者被 ACM 阻擋時,日誌是您最好的朋友。
- Cloud Logging: 在
accesscontextmanager.googleapis.com日誌中搜尋protoPayload.status.code=7(權限遭拒)。 - 稽核日誌: 查看日誌條目中的
accessLevels欄位,以確定是哪個特定的層級失敗了。 - 端點驗證控制台: 檢查使用者的設備是否正確報告其狀態。
ACM 與 Identity-Aware Proxy (IAP) 的互動
ACM 和 IAP 協同工作,為 Web 應用程式提供內容感知存取。
- IAP 處理身分 (誰)。
- ACM 處理存取層級 (內容背景)。
- 工作流程: 使用者登入 → IAP 檢查 IAM → IAP 呼叫 ACM → ACM 檢查設備/IP → 授予或拒絕存取。
ACM 的 CLI 指令
列出存取層級
gcloud access-context-manager levels list \
--policy=1234567890
建立基本存取層級 (YAML)
- title: Trusted_IPs
description: 僅限公司辦公室 IP
basic:
conditions:
- ipSubnetworks:
- 203.0.113.0/24
combiningFunction: OR
gcloud access-context-manager levels create Trusted_IPs \
--policy=1234567890 \
--yaml-file=trusted_ips.yaml
PSE 安全性最佳實踐
- 從簡單開始: 在轉向複雜的設備狀態檢查之前,先從基於 IP 的限制開始。
- 使用範圍限定策略: 對於大型組織,使用範圍限定策略將管理權限委派給不同的團隊。
- 使用 SCC 監控: Security Command Center 可以在存取層級被刪除或不安全修改時向您發出警報。
- 寬限期: 強制執行操作系統更新時,為使用者提供一個「寬限期」(在 ACM 中定義),這樣他們就不會在發布新更新時立即被鎖定。
故障排除情境
情境:使用者儘管使用公司筆記型電腦仍被阻擋
診斷: 端點驗證擴充功能可能已被停用,或者設備在過去 24 小時內未與雲端同步。 修正: 指導使用者開啟 Chrome 並確保端點驗證擴充功能處於活動狀態且正在「同步」。
情境:VPC 服務控制周邊阻擋了有效的管理員
診斷: 管理員正嘗試從本地機器使用 gsutil 或 bq 工具,而該機器未被周邊傳入策略中的 ACM 存取層級涵蓋。
修正: 將管理員的 IP 範圍或設備策略加入 ACM 存取層級,並更新 VPC SC 傳入規則以允許該層級。
PSE 考試情境
情境 1:多因素內容背景
「一家公司希望確保 BigQuery 資料只能由使用受控、已加密筆記型電腦,且位於美國或加拿大的使用者存取。您如何實施?」
答案: 在 ACM 中建立一個基本存取層級。加入 is_managed、is_encrypted 以及允許區域清單 (US, CA) 的條件。將 combiningFunction 設定為 AND。
情境 2:動態策略變更
「您需要允許臨時承包商在 48 小時內從其家庭 IP 存取受保護的應用程式。最安全的方法是什麼?」
答案: 為承包商的 IP 建立一個臨時的 ACM 存取層級,並在 iap.httpsResourceAccessor 角色上使用會在 48 小時後過期的 IAM 條件 (IAM Condition)。
總結清單
- 區分基本存取層級與自定義存取層級。
- 列出至少四個 ACM 可以檢查的設備屬性。
- 解釋 ACM 如何與 VPC 服務控制整合。
- 識別端點驗證 (Endpoint Verification) 在 ACM 生態系統中的角色。
- 了解範圍限定存取策略的目的。