排解政策和存取權問題
本文將概略說明 Google Cloud 存取權政策執行控制項,以及可用於協助排解存取問題的工具。這份文件適用於想協助機構客戶解決Google Cloud 資源存取問題的支援團隊。
Google Cloud 存取政策執行控制項
本節說明您或機構管理員可導入的政策,這些政策會影響對 Google Cloud 資源的存取權。您可以使用下列所有或部分產品和工具來實施存取權政策。
標籤、標記和網路標記
Google Cloud 提供多種標示和分組資源的方法。您可以使用標籤、標記和網路標記來協助強制執行政策。
標籤是鍵/值組合,可協助您整理 Google Cloud 資源。許多 Google Cloud 服務都支援標籤。您也可以使用標籤篩選及分組資源,以便用於其他用途,例如識別測試環境中的所有資源,而非實際工作環境中的資源。在政策執行的情況下,標籤可指出資源應放置的位置。舉例來說,您為標示為測試的資源套用的存取政策,與您為標示為實際工作環境資源的資源套用的存取政策不同。
標記是鍵/值組合,可提供識別資源和套用政策的機制。您可以為機構、資料夾或專案附加標記。標記會套用至套用標記的階層層級中的所有資源。您可以使用標記,根據資源是否具備特定標記,決定是否允許或拒絕存取政策。您也可以搭配防火牆政策使用標記,控制虛擬私有雲 (VPC) 網路中的流量。如要排解問題,請務必瞭解標記如何繼承及與存取和防火牆政策結合。
網路標記與先前的 Resource Manager 標記不同。網路標記適用於 VM 執行個體,也是另一種控管 VM 內外網路流量的方法。在 Google Cloud 網路中,網路標記會識別哪些 VM 受制於防火牆規則和網路路徑。您可以在防火牆規則中使用網路標記做為來源和目的地值。您也可以使用網路標記,識別特定路徑套用至哪些 VM。網路標記可用於定義網路和路由規則,因此瞭解網路標記有助於排解存取問題。
虛擬私人雲端防火牆規則
您可以設定虛擬私有雲防火牆規則,允許或拒絕虛擬機器 (VM) 執行個體和 VM 上建構的產品的傳入與傳出流量。每個虛擬私有雲網路都會以分散式防火牆的形式運作。雖然 VPC 防火牆規則是在網路層級定義,但是否允許連線則取決於每個執行個體本身。您可以將 VPC 防火牆規則套用至 VPC 網路、依標記分組的 VM,以及依服務帳戶分組的 VM。
VPC Service Controls
VPC Service Controls 提供安全範圍解決方案,可協助降低資料從 Cloud Storage 和 BigQuery 等 Google Cloud 服務竊取的風險。您可以建立服務範圍,在Google Cloud 資源周圍建立安全邊界,並管理範圍內外允許的內容。VPC Service Controls 也會根據 IP 位址和身分等情境屬性,導入政策,提供情境感知存取權控管功能。
Resource Manager
您可以使用 Resource Manager 設定機構資源。Resource Manager 提供工具,可將您的機構和應用程式開發方式對應至資源階層。除了協助您以邏輯方式將資源分組,Resource Manager 也提供存取權控管機制和機構政策的附加點與沿用設定。
Identity and Access Management
Identity and Access Management (IAM) 可讓您定義「哪些人員」 (身分) 對於「哪些資源」具有「哪些類型的存取權」 (角色)。IAM 政策是一組陳述式,用於定義哪些人員具備何種存取權,例如讀取或寫入存取權。IAM 政策會附加至資源,並在使用者嘗試存取資源時強制執行存取權控管機制。
IAM 的功能之一是 IAM 條件。將 IAM 條件納入政策定義時,您可以選擇僅在達成已設定條件時,將資源存取權授予身分 (主體)。舉例來說,您可以使用 IAM 條件,限制只有向總部辦公室提出要求的員工,才有資源的存取權。
機構政策服務
機構政策服務可讓您在機構階層中,針對支援的資源強制執行限制。組織政策支援的每項資源都有一組限制,說明資源的限制方式。您定義的政策會定義限制資源設定的特定規則。
機構政策服務可讓授權管理員視需要在資料夾或專案層級覆寫預設機構政策。機構政策著重於資源的設定方式,而 IAM 政策則著重於您的身分對這些資源擁有哪些權限。
配額
Google Cloud 會對資源強制實施配額,限制專案可使用的特定Google Cloud 資源用量。您擁有的專案數量也受配額限制。下列資源用量類型會受到配額限制:
- 「頻率配額」,例如每日 API 要求數。這項配額每過一段指定時間 (如 1 分鐘或 1 天) 會重設一次。
- 「分配配額」,例如專案使用的虛擬機器或負載平衡器數量。這個配額不會隨時間重設。如果您不想繼續使用某項資源,例如刪除 Google Kubernetes Engine (GKE) 叢集,就必須明確釋出配額。
如果您達到配額上限,就無法啟動新的資源。如果您達到頻率配額,就無法完成 API 要求。這兩個問題都可能看起來像是存取權相關問題。
Chrome Enterprise Premium
Chrome Enterprise 進階版會使用各種 Google Cloud 產品,根據使用者的身分和要求情境,強制執行精細的存取權控管機制。您可以設定 Chrome Enterprise 進階版,限制對 Google Cloud 控制台和 Google Cloud API 的存取權。
Chrome Enterprise 進階版存取權保護功能會使用下列 Google Cloud 服務:
- Identity-Aware Proxy (IAP):這項服務會驗證使用者身分,並利用背景資料判斷是否應將資源存取權授予使用者。
- IAM: Google Cloud的身分管理和授權服務。
- Access Context Manager:可啟用精細存取權控管機制的規則引擎。
- 端點驗證:Google Chrome 擴充功能,可收集使用者裝置詳細資料。
IAM 建議工具
IAM 包含 Policy Intelligence 工具,可提供一套全面的主動式指引,協助您在使用 Google Cloud時提高效率和安全性。控制台中的通知會提供建議動作,您可以直接套用這些動作,也可以使用傳送至 Pub/Sub 主題的事件。
IAM Recommender 是 Policy Intelligence 套件的一部分,可協助您套用最小權限原則。Recommender 會比較專案層級角色授予權限,以及每個主體在過去 90 天內使用的權限。如果您向主體授予專案層級角色,但該主體未使用該角色的所有權限,Recommender 可能會建議您撤銷該角色。如有需要,推薦工具也會建議使用較不寬鬆的角色做為替代方案。
如果您自動套用建議,可能會不小心導致使用者或服務帳戶無法存取資源。如果您決定使用自動化功能,請參考 IAM 推薦工具最佳做法,決定您能接受的自動化程度。
Kubernetes 命名空間和 RBAC
Kubernetes 會以代管服務的形式在 Google Cloud Google Kubernetes Engine (GKE) 上運作。無論 GKE 叢集執行的位置為何,GKE 都能強制執行一致的政策。影響資源存取權的政策是內建 Kubernetes 控制項和 Google Cloud 專屬控制項的組合。
除了 VPC 防火牆和 VPC Service Controls,GKE 還會使用命名空間、角色型存取權控管 (RBAC) 和工作負載身分,管理影響資源存取權的政策。
命名空間
命名空間是受同一實體叢集支援的虛擬叢集,可提供名稱範圍。命名空間中的資源名稱不得重複,但您可以在不同的命名空間中使用相同的名稱。命名空間可讓您使用資源配額,在多個使用者之間劃分叢集資源。
RBAC
RBAC 包含下列功能:
- 精細控管使用者存取在叢集上執行的 API 資源的方式。
- 可讓您建立詳細的政策,定義您允許使用者和服務帳戶存取的作業和資源。
- 可控制 Google 帳戶、 Google Cloud服務帳戶和 Kubernetes 服務帳戶的存取權。
- 可讓您建立適用於整個叢集或叢集中特定命名空間的 RBAC 權限。
- 叢集層級權限可用於限制特定使用者對特定 API 資源的存取權。這些 API 資源包括安全性政策和密鑰。
- 舉例來說,如果您有多個使用者群組,且各自在各自的命名空間內運作,命名空間專屬權限就非常實用。RBAC 可確保使用者只能存取自身命名空間中的叢集資源。
- 只能用於授予單一命名空間內資源的存取權的角色。
- 角色包含表示一組權限的規則。權限只能增加,沒有拒絕規則。
IAM 和 Kubernetes RBAC 會整合在一起,如果使用者根據「任一項」工具擁有足夠的權限,在此情況下就會授權使用者執行動作。
圖 1 顯示如何搭配使用 IAM 與 RBAC 和命名空間來實施政策。
圖 1 顯示以下政策實作方式:
- 在專案層級,IAM 會定義叢集管理員的角色,讓他們管理叢集,並讓容器開發人員存取叢集內的 API。
- 在叢集層級,RBAC 會定義個別叢集的權限。
- 在命名空間層級,RBAC 會定義命名空間的權限。
Workload Identity
除了 RBAC 和 IAM 之外,您還需要瞭解工作負載身分的影響。Workload Identity 可讓您設定 Kubernetes 服務帳戶,讓其充當 Google 服務帳戶。以 Kubernetes 服務帳戶身分執行的任何應用程式,在存取 API 時會自動以 Google 服務帳戶身分進行驗證。 Google Cloud這項驗證可讓您為叢集中的應用程式指派精細身分和授權。
GKE 適用的工作負載身分聯盟會使用 IAM 權限控管 GKE 應用程式可存取的Google Cloud API。舉例來說,如果 IAM 權限有所變更,GKE 應用程式可能就無法寫入 Cloud Storage。
疑難排解工具
本節將說明可用來排解政策問題的工具。您可以使用不同的產品和功能,套用多種政策。舉例來說,您可以使用防火牆和子網路,管理環境中資源與您定義的任何安全區之間的通訊。您也可以使用 IAM 限制安全區域和任何已定義的 VPC Service Controls 區域內的存取權。
記錄
發生問題時,通常第一步是查看記錄。 Google Cloud 記錄可提供與存取權相關問題的深入分析,包括 Cloud 稽核記錄、防火牆規則記錄和虛擬私有雲流程記錄。
Cloud 稽核記錄
Cloud 稽核記錄包含每個專案、資料夾和機構的以下稽核記錄串流:管理員活動、資料存取和系統事件。 Google Cloud服務會將稽核記錄項目寫入這些記錄,協助您瞭解哪位使用者在 Google Cloud 專案中執行了哪些動作、執行地點和時間。
- 管理員活動記錄包含 API 呼叫或其他修改資源設定或中繼資料的管理動作的記錄項目。管理員活動記錄一律為啟用。如要瞭解管理員活動記錄的定價和配額,請參閱 Cloud 稽核記錄總覽。
- 資料存取記錄會記錄用於建立、修改或讀取使用者提供資料的 API 呼叫。資料存取稽核記錄預設為停用,BigQuery 除外。資料存取記錄檔可能會變得非常大,並且可能產生費用。如要瞭解資料存取記錄的使用限制,請參閱「配額與限制」。如要瞭解可能的費用,請參閱「定價」一文。
- 系統事件記錄包含 Compute Engine 執行系統事件時的記錄項目。舉例來說,每個即時遷移都會記錄為系統事件。如要瞭解系統事件記錄的定價和配額,請參閱 Cloud 稽核記錄總覽。
在 Cloud Logging 中,protoPayload
欄位包含儲存稽核記錄資料的 AuditLog
物件。如需稽核記錄項目範例,請參閱稽核記錄項目範例。
如要查看管理員活動稽核記錄,您必須具備「記錄檢視者」角色 (roles/logging.viewer
) 或基本「檢視者」角色 (roles/viewer
)。盡可能選取完成任務所需權限最少的角色。
個別稽核記錄項目會儲存一段特定時間。如要保留更長時間,您可以將記錄項目匯出至 Cloud Storage、BigQuery 或 Pub/Sub。如要從貴機構的所有專案、資料夾和帳單帳戶匯出記錄項目,您可以使用匯總匯出功能。匯總匯出作業可讓您集中查看整個機構的記錄。
如要使用稽核記錄協助排解問題,請按照下列步驟操作:
- 請確認您具備查看記錄所需的 IAM 角色。如果您匯出記錄,還需要在匯入端查看匯出的記錄的權限。
- 請按照使用稽核記錄的最佳做法,執行稽核策略。
- 選取團隊策略即可查看記錄檔。在 Cloud 稽核記錄中,查看記錄的方式有幾種,而疑難排解團隊的每位成員都應使用相同的方法。
- 使用 Google Cloud 控制台「活動」頁面,即可概略查看活動記錄。
- 查看匯出至匯入端的匯出記錄。只有在接收器中,才能查看保留期限外的記錄。您也可以使用匯出的記錄進行比較調查,例如與一切正常運作時的情況進行比較。
防火牆規則記錄
「防火牆規則記錄」可讓您稽核、驗證及分析防火牆規則的效果。舉例來說,您可以判斷用來拒絕流量的防火牆規則是否正常運作。
您可以為需要記錄連線的每項防火牆規則個別啟用防火牆規則記錄。無論防火牆規則的動作 (允許或拒絕) 或方向 (輸入或輸出) 為何,您都可以為任何防火牆規則啟用防火牆規則記錄。防火牆規則記錄功能可能會產生大量資料。防火牆規則記錄功能會產生相關費用,因此您必須仔細規劃要記錄哪些連線。
決定要儲存防火牆記錄檔的位置。如果您想要查看機構內的記錄,請將防火牆記錄匯出至與稽核記錄相同的匯出地點。使用篩選器搜尋特定防火牆事件。
防火牆深入分析
防火牆洞察提供的報表包含防火牆使用情形資訊,以及各種防火牆規則對虛擬私有雲端網路的影響。您可以使用防火牆深入分析功能,確認防火牆規則是否允許或封鎖預期的連線。
您也可以使用防火牆深入分析功能,偵測遭到其他規則覆蓋的防火牆規則。遭覆蓋的規則是指防火牆規則的所有相關屬性 (例如 IP 位址範圍和通訊埠),都與優先順序相同或較高的其他一或多個防火牆規則的屬性重疊。系統會在您啟用防火牆規則記錄功能後的 24 小時內計算覆蓋規則。
啟用防火牆規則記錄功能後,防火牆深入分析會分析記錄,針對您指定的觀察期間 (預設為過去 24 小時) 內使用的任何拒絕規則,提供深入分析建議。拒絕規則深入分析可提供防火牆封包捨棄信號。您可以使用封包捨棄信號,確認封包遭到捨棄是因為安全防護措施,或是因為網路設定錯誤等問題而非預期地遭到捨棄。
虛擬私有雲流量記錄
虛擬私有雲流程記錄檔會記錄 VM 執行個體傳送和接收的網路流程樣本。虛擬私有雲流量記錄涵蓋影響 VM 的流量。系統會記錄所有輸出 (外送) 流量,即使遭到拒絕輸出防火牆規則封鎖也是如此。如果輸入防火牆規則允許輸入流量,系統會記錄該流量。如果輸入拒絕防火牆規則封鎖了流量,系統不會記錄該流量。
系統會以特定間隔針對個別 VM 連線收集流程記錄;系統會將在某個指定間隔針對指定連線收集的所有取樣封包 (匯總間隔) 匯總到單一流程記錄項目中。然後將記錄流程項目傳送至 Cloud Logging。
您可以為每個虛擬私有雲子網路啟用或停用虛擬私有雲流量記錄。啟用虛擬私有雲流量記錄後,系統會產生大量資料。建議您仔細管理啟用虛擬私有雲流量記錄的子網路。舉例來說,建議您不要在開發專案使用的子網路上,持續啟用流量記錄。您可以使用 Cloud Logging 或匯出的接收器,直接查詢 VPC 流量記錄 。排解疑似與流量相關的問題時,您可以使用虛擬私有雲流程記錄檔,查看流量是否透過預期的通訊埠離開或進入 VM。
快訊
您可以透過快訊,及時收到可能影響 Google Cloud 資源存取權的任何違規事件通知。
即時通知
Cloud Asset Inventory 可保留五個星期的 Google Cloud 資產中繼資料記錄。素材資源是支援 Google Cloud 的資源。支援的資源包括 IAM、Compute Engine 和相關網路功能 (例如防火牆規則和 GKE 命名空間),以及角色和叢集角色繫結。上述所有資源都會影響對 Google Cloud 資源的存取權。
如要監控資源設定 (例如防火牆規則和轉送規則) 是否有異常,您可以訂閱即時通知。如果資源設定有所變更,即時通知會立即透過 Pub/Sub 傳送通知。通知功能可提早提醒您任何問題,避免您需要撥打客服電話。
Cloud Audit Logs 和 Cloud Run 函式
除了使用即時通知外,您還可以監控 Cloud Logging,並在呼叫機密動作時發出快訊。舉例來說,您可以建立Cloud Logging 接收器,篩選機構層級對 SetIamPolicy
的呼叫。接收器會將記錄檔傳送至 Pub/Sub 主題,您可以使用該主題觸發 Cloud Run 函式。
連線能力測試
如要判斷存取問題是否與網路或權限有關,請使用網路智慧中心的「Connectivity Tests」工具。Connectivity Tests 是靜態設定分析器和診斷工具,可讓您檢查來源和目的地端點之間的連線。連線能力測試可協助您找出與Google Cloud 網路設定相關聯的網路存取問題的根本原因。
連線測試會執行多項測試,包括虛擬私有雲網路、VPC 網路對等互連,以及連線至內部部署網路的 VPN 通道。舉例來說,Connectivity Tests 可能會指出防火牆規則封鎖了連線。詳情請參閱「常見用途」。
政策疑難排解工具
Google Cloud 中的許多工作都需要 IAM 角色和相關權限。建議您檢查角色包含哪些權限,並檢查完成工作所需的每項權限。舉例來說,如果使用者要使用 Compute Engine 映像檔建立執行個體,就必須具備 compute.imageUser
角色,其中包含九項權限。因此,使用者必須具備包含所有九項權限的角色和權限組合。
政策疑難排解工具是 Google Cloud 控制台工具,可協助您偵錯,找出使用者或服務帳戶為何沒有存取資源的權限。如要排解存取權問題,請使用政策疑難排解工具的 IAM 部分。
舉例來說,您可能想查看為何特定使用者可以在專案的值區中建立物件,而其他使用者則無法。政策疑難排解工具可協助您查看第一位使用者擁有而第二位使用者沒有的權限。
政策疑難排解工具需要下列輸入內容:
- 主體 (個別使用者、服務帳戶或群組)
- 權限 (請注意,這些是基礎權限,而非 IAM 角色)
- 資源
IAM 建議工具
雖然 IAM 推薦工具是政策執行控制項 (如前述「推薦工具」一節所述),但您也可以將其用於疑難排解。推薦工具會執行每日作業,分析過去 60 天內的 IAM 存取記錄資料和授予的權限。您可以使用 Recommender 檢查最近是否核准並套用了可能影響使用者先前允許存取的資源的最佳化建議。在這種情況下,您可以授予已移除的權限。
提報給 Customer Care
排解存取權相關問題時,請務必建立完善的內部支援程序,並明確定義升級至 Cloud Customer Care 團隊的程序。本節將說明支援服務設定的範例,以及如何與客戶服務團隊溝通,協助他們快速解決您的問題。
如果您無法使用本文所述的工具解決問題,客戶服務團隊會透過明確的支援程序協助您排除問題。建議您採用系統化方法進行疑難排解,如 Google 網站可靠性工程師 (SRE) 書籍的「有效疑難排解」一章所述。
我們建議您的內部支援程序應執行下列操作:
- 詳細說明發生問題時應採取的程序。
- 明確定義提報程序。
- 設定值班程序。
- 建立事件回應方案。
- 設定錯誤追蹤或服務中心系統。
- 請確認您的支援人員已獲授權與客戶服務團隊聯絡,並將他們指定為聯絡人。
- 向內部員工說明支援程序,包括如何與 Google Cloud 指定聯絡人聯絡。
- 定期分析支援問題,並根據所學進行調整和改善。
- 納入標準化的回顧表單。
如果需要將問題提報給客戶服務團隊,請在排解存取權問題時,提供下列資訊給客戶服務團隊:
- 要求存取權的使用者身分 (使用者或服務帳戶電子郵件)。
- 這項問題是否會影響所有身分識別資訊,還是只會影響部分資訊。
- 如果只有部分身分受到影響,請提供可正常運作的例外身分,以及無法運作的例外身分。
- 身分是否最近才重新建立。
- 使用者嘗試存取的資源 (包括專案 ID)。
- 正在呼叫的要求或方法。
- 提供要求和回應的副本。
- 系統授予身分識別碼的權限。
- 提供 IAM 政策的副本。
- 系統嘗試存取資源的來源 (位置)。例如,如果使用者嘗試從Google Cloud 資源 (例如 Compute Engine 執行個體)、Google Cloud 控制台、Google Cloud CLI、Cloud Shell 或外部來源 (例如內部或網路) 存取資源,
- 如果來源來自其他專案,請提供來源專案 ID。
- 錯誤首次發生的時間 (時間戳記),以及錯誤是否仍存在。
- 已知的最後一次成功存取資源的時間 (包括時間戳記)。
- 發生問題前所做的任何變更 (包括時間戳記)。
- 任何在 Cloud Logging 中記錄的錯誤。與客戶服務團隊分享資料前,請務必遮蓋機密資料,例如存取權杖、憑證、信用卡號碼。
後續步驟
如需更多參考架構、圖表和最佳做法,請瀏覽 雲端架構中心。