適用於允許政策的政策分析工具

您可以使用允許政策的政策分析工具,根據 IAM 允許政策,瞭解哪些主體 (例如使用者、服務帳戶、群組和網域) 具備哪些存取權,可以存取哪些 Google Cloud 資源。

針對許可政策的 Policy Analyzer 可協助您回答下列問題:

  • 誰可以存取這個 IAM 服務帳戶?
  • 誰可以讀取這個 BigQuery 資料集中包含個人識別資訊 (PII) 的資料?
  • dev-testers 群組對這個專案中的任何資源有哪些角色和權限?
  • 在專案 A 中,Tal 可以刪除哪些 Compute Engine 虛擬機器 (VM) 執行個體?
  • 誰可以在晚上 7 點存取這個 Cloud Storage 值區?

政策分析工具 (適用於允許政策) 的運作方式

如要使用政策分析工具來設定許可政策,請建立分析查詢、指定分析範圍,然後執行查詢。

分析查詢

如要使用政策分析工具,請建立分析查詢,指定下列一或多個欄位:

  • 主體:您要檢查存取權的使用者身分 (例如使用者、服務帳戶、群組和網域)
  • 存取權:您要檢查的權限和角色
  • 資源:您要檢查存取權的資源
  • (僅限 API) 條件背景資訊:您想檢查存取權的背景資訊,例如時間

通常,您會在分析查詢中指定一或兩個這些欄位,然後使用查詢結果,進一步取得未指定欄位的相關資訊。舉例來說,如果您想知道誰對特定資源擁有特定權限,請在分析查詢中指定存取權和資源,但不要指定主體。

如需更多可建立查詢類型的範例,請參閱「常見查詢類型」。

分析範圍

如要執行分析查詢,您必須指定要分析的範圍。範圍是指您要限制分析範圍的機構、資料夾或專案。系統只會分析用於做為範圍的資源,以及該資源的子項所附加的 IAM 允許政策。

在 REST API 和 gcloud CLI 中,您可以手動指定範圍。在 Google Cloud 主控台中,系統會根據您管理的專案、資料夾或機構,自動決定範圍。

建立分析查詢並指定範圍後,您可以執行查詢,分析該範圍內的政策。

查詢結果

執行分析查詢時,Policy Analyzer 會回報任何包含您在查詢中指定主體、存取權和資源的角色繫結。針對每個角色繫結,它會回報繫結中的主體、繫結授予的存取權 (角色和權限),以及繫結授予存取權的資源。

您可以查看這些結果,進一步瞭解專案、資料夾或機構的存取權。舉例來說,如果您執行查詢來找出哪些主體有權存取特定資源,您就會在查詢結果中查看主體。

您可以啟用查詢選項,調整查詢結果中的資訊。

支援的政策類型

允許政策的 Policy Analyzer 僅支援 IAM 允許政策

針對允許政策的 Policy Analyzer 不支援下列形式的存取控制:

Policy Analyzer 查詢結果不考量不支援的政策類型。舉例來說,假設使用者因允許政策而擁有專案的 iam.roles.get 權限,但因拒絕政策而無法使用該權限。即使有拒絕政策,政策分析工具仍會回報他們擁有 iam.roles.get 權限。

政策繼承

為考量政策繼承,Policy Analyzer 會自動分析指定範圍內的所有相關允許政策,無論這些政策位於資源階層中的何處皆然。

舉例來說,假設您想找出可存取 IAM 服務帳戶的使用者:

  • 如果您將查詢範圍限定為專案,Policy Analyzer 會分析服務帳戶的許可政策和專案的許可政策。
  • 如果您將查詢範圍限定為某個機構,政策分析工具會分析服務帳戶的許可政策、擁有服務帳戶的專案許可政策、包含專案的任何資料夾的許可政策,以及機構的許可政策。

條件式存取

如果角色繫結具有限制條件,則只有在符合該限制條件時,主體才能獲得存取權。政策分析工具一律會回報與相關角色繫結相關的條件。相關角色繫結是一種角色繫結,當中包含您在分析查詢中指定的主體、存取權和資源。

在某些情況下,政策分析工具也可以分析條件,也就是說,它可以回報是否符合條件。政策分析器可分析下列類型的條件:

如果相關角色繫結包含條件,政策分析工具會執行下列任一操作:

  • 如果 Policy Analyzer 可以分析條件,就會執行下列任一操作:

    • 如果條件評估結果為 true,政策分析工具就會在查詢結果中加入角色繫結,並將條件評估結果標示為 TRUE
    • 如果條件評估為 false,Policy Analyzer 就不會在查詢結果中加入角色。
  • 如果政策分析工具無法分析相關角色繫結的條件,就會在查詢結果中加入該角色,並將條件評估結果標示為 CONDITIONAL

資料更新間隔

Policy Analyzer 會使用 Cloud Asset API,該 API 會盡力提供最新的資料。幾乎所有的政策更新都會在幾分鐘內顯示在 Policy Analyzer 中,但 Policy Analyzer 可能不會包含最新的政策更新。

常見查詢類型

本節說明如何使用分析查詢,回答常見的存取權相關問題。

哪些主體可以存取這項資源?

如要判斷哪些主體可以存取資源,請建立分析查詢,指定資源,以及您要檢查的角色和權限 (選用)。

這些查詢可協助您回答下列問題:

  • 誰可以存取這個 IAM 服務帳戶?
  • 誰有權模擬這個 IAM 服務帳戶?
  • 專案 A 的帳單管理員是誰?
  • (僅限 API 和 gcloud CLI):誰可以透過冒用服務帳戶來更新專案 A?

如要瞭解如何建立及傳送這些查詢,請參閱「判斷哪些主要實體可以存取資源」。

哪些主體具備這些角色和權限?

如要判斷哪些主體具備特定角色和權限,請建立分析查詢,指定主體和要檢查的一組角色和權限。

這些查詢可協助您回答下列問題:

  • 誰有權模擬機構中的服務帳戶?
  • 誰是機構中的帳單管理員?
  • 誰可以讀取這個 BigQuery 資料集中含有個人識別資訊 (PII) 的資料?
  • (僅適用於 API 和 gcloud CLI):本機構中誰可以透過冒用服務帳戶讀取 BigQuery 資料集?

如要瞭解如何建立及傳送這些查詢,請參閱「判斷哪些擁有者具有特定角色或權限」。

這個主體對這項資源具備哪些角色和權限?

如要判斷主體對特定資源擁有哪些角色和權限,請建立分析查詢,指定要檢查權限的主體和資源。

這些查詢可協助您回答下列問題:

  • 使用者 Sasha 在這個 BigQuery 資料集中擁有哪些角色和權限?
  • dev-testers 群組對這個專案中的任何資源有哪些角色和權限?
  • (僅限 API 和 gcloud 指令列):如果 Dana 冒用服務帳戶,這個使用者在 BigQuery 資料集上會有哪些角色和權限?

如要瞭解如何建立及傳送這些查詢,請參閱「判斷主體對資源具備哪些存取權」。

這個主體可以存取哪些資源?

如要判斷特定主體可存取哪些資源,請建立分析查詢,指定主體以及要檢查的角色和權限。

這些查詢可協助您回答下列問題:

  • 使用者 Mahan 有權讀取哪些 BigQuery 資料集?
  • dev-testers 群組是哪些 BigQuery 資料集的資料擁有者?
  • Tal 可刪除專案 A 中的哪些 VM?
  • (僅限 API 和 gcloud CLI):John 使用服務帳戶冒用功能時,可以刪除哪些 VM?

如要瞭解如何建立及傳送這些查詢,請參閱「判斷主體可存取哪些資源」。

已儲存的分析查詢

如果您使用的是 REST API,可以儲存分析查詢,以便重複使用或與他人共用。您可以執行已儲存的查詢,方法與執行其他查詢相同。

如要進一步瞭解如何儲存查詢,請參閱「管理已儲存的查詢」。

匯出查詢結果

您可以使用 analyzeIamPolicyLongrunning 以非同步方式執行查詢,並將查詢結果匯出至 BigQuery 或 Cloud Storage。

如要瞭解如何將查詢結果匯出至 BigQuery,請參閱「將政策分析結果寫入 BigQuery」一文。

如要瞭解如何將查詢結果匯出至 Cloud Storage,請參閱「將政策分析結果寫入 Cloud Storage」。

查詢選項

Policy Analyzer 提供多種選項,可為查詢結果新增更多詳細資料。

如要瞭解如何啟用這些選項,請參閱「啟用選項」。

群組展開

如果啟用群組展開功能,查詢結果中的任何群組都會展開為個別成員。每個群組的擴充上限為 1,000 位成員。如果您具備足夠的群組權限,巢狀群組也會展開。只有在查詢中未指定實體時,這個選項才有效。

舉例來說,假設您為「Who has the storage.buckets.delete permission for project-1?」查詢啟用群組展開功能,如果政策分析工具發現有任何群組具有 storage.buckets.delete 權限,查詢結果就會列出群組 ID 和群組中的所有個別成員。

這個選項可讓您瞭解個別使用者的存取權,即使他們的存取權是因為群組成員資格而取得也一樣。

角色展開

如果啟用角色展開功能,查詢結果除了角色本身之外,還會列出各個角色中的所有權限。只有在查詢中未指定任何權限或角色時,才能使用這個選項。

舉例來說,假設您為「my-user@example.com 對值區 bucket-1 有何存取權?」這項查詢啟用角色展開功能,如果政策分析工具發現任何可讓 my-user@example.com 存取 bucket-1 的角色,查詢結果就會列出角色名稱,以及角色內含的所有權限。

這個選項可讓您查看主體具備的確切權限。

資源擴充

如果您為 Policy Analyzer 查詢啟用資源展開功能,查詢結果會列出查詢結果中所有父項資源 (專案、資料夾和機構) 的所有相關子項資源。針對 Policy Analyzer 查詢,每個父項資源的擴充上限為 1,000 項資源,針對長時間執行的 Policy Analyzer 查詢,每個父項資源的擴充上限為 100,000 項資源。

舉例來說,請思考資源擴充功能對下列查詢的影響:

  • 誰擁有 project-1storage.buckets.delete 權限?

    如果您為這項查詢啟用資源展開功能,查詢結果的「資源」部分除了會列出專案,還會列出專案內的所有儲存值區。

  • my-user@example.com 對哪些資源擁有 compute.instances.setIamPolicy 權限?

    如果您為這項查詢啟用資源展開功能,且政策分析工具發現 my-user@example.com 具有包含該權限的專案層級角色,查詢結果的「資源」部分就會列出專案,以及專案內的所有 Compute Engine 執行個體。

這個選項可讓您詳細瞭解實體可存取的資源。

服務帳戶模擬

如果您使用的是 REST API 或 gcloud CLI,可以啟用服務帳戶冒用分析功能。

如果啟用這個選項,Policy Analyzer 會執行額外的分析查詢,判斷哪些使用者可以模擬服務帳戶,並對指定資源擁有指定存取權。Policy Analyzer 會針對查詢結果中的每個服務帳戶執行一項查詢。這些查詢會分析哪些使用者擁有服務帳戶的下列任一權限:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.getAccessToken
  • iam.serviceAccounts.getOpenIdToken
  • iam.serviceAccounts.implicitDelegation
  • iam.serviceAccounts.signBlob
  • iam.serviceAccounts.signJwt

配額與限制

Cloud Asset Inventory 會根據消費者專案,限制傳入要求的頻率,包括政策分析要求。Cloud Asset Inventory 也會限制群組成員內的群組擴展,以及資源階層中的資源擴展。

如要查看 Policy Analyzer 的預設配額和限制,請參閱 Cloud Asset Inventory 說明文件中的「配額和限制」。

定價

每個機構每天最多可執行 20 項分析查詢,且不收費用。這項限制同時包含允許政策分析和機構政策分析。

如要執行超過 20 個分析查詢,您必須在機構層級啟用 Security Command Center 進階或企業方案。詳情請參閱「帳單問題」。

後續步驟