您可以使用允許政策的政策分析工具,根據 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 會分析服務帳戶的許可政策和專案的許可政策。
- 如果您將查詢範圍限定為某個機構,政策分析工具會分析服務帳戶的許可政策、擁有服務帳戶的專案許可政策、包含專案的任何資料夾的許可政策,以及機構的許可政策。
條件式存取
如果角色繫結具有限制條件,則只有在符合該限制條件時,主體才能獲得存取權。政策分析工具一律會回報與相關角色繫結相關的條件。相關角色繫結是一種角色繫結,當中包含您在分析查詢中指定的主體、存取權和資源。
在某些情況下,政策分析工具也可以分析條件,也就是說,它可以回報是否符合條件。政策分析器可分析下列類型的條件:
- 針對提供資源名稱的資源類型,根據資源屬性設定的條件。
- 日期/時間條件 (僅限 API 和 gcloud CLI)。如要讓政策分析工具分析這些條件,您必須在分析查詢中提供存取時間 (
accessTime)。如要瞭解如何提供此情境,請參閱「在特定時間決定存取權」。
如果相關角色繫結包含條件,政策分析工具會執行下列任一操作:
如果 Policy Analyzer 可以分析條件,就會執行下列任一操作:
- 如果條件評估結果為 true,政策分析工具就會在查詢結果中加入角色繫結,並將條件評估結果標示為
TRUE。 - 如果條件評估為 false,Policy Analyzer 就不會在查詢結果中加入角色。
- 如果條件評估結果為 true,政策分析工具就會在查詢結果中加入角色繫結,並將條件評估結果標示為
如果政策分析工具無法分析相關角色繫結的條件,就會在查詢結果中加入該角色,並將條件評估結果標示為
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-1的storage.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.actAsiam.serviceAccounts.getAccessTokeniam.serviceAccounts.getOpenIdTokeniam.serviceAccounts.implicitDelegationiam.serviceAccounts.signBlobiam.serviceAccounts.signJwt
配額與限制
Cloud Asset Inventory 會根據消費者專案,限制傳入要求的頻率,包括政策分析要求。Cloud Asset Inventory 也會限制群組成員內的群組擴展,以及資源階層中的資源擴展。
如要查看 Policy Analyzer 的預設配額和限制,請參閱 Cloud Asset Inventory 說明文件中的「配額和限制」。
定價
每個機構每天最多可執行 20 項分析查詢,且不收費用。這項限制同時包含允許政策分析和機構政策分析。
如要執行超過 20 個分析查詢,您必須在機構層級啟用 Security Command Center 進階或企業方案。詳情請參閱「帳單問題」。