您可以使用允許政策的政策分析工具,根據 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.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 進階或企業方案。詳情請參閱「帳單問題」。