🏢 GCP 組織政策介紹
如果您身為組織政策管理員,可以透過組織政策服務,對組織的雲端資源進行集中控制,常見的用法包括以下:
- 集中控制並限制對組織資源使用方式(限制或約束)
- 為組織制定明確政策,同時為開發團隊建立一個保護護欄,以提高資安防護(避免可能的作業風險)確保大家在組織訂定的規範內的範圍工作
- 幫助專案擁有者及其團隊快速行動,不必擔心違反合規性
- 限制身分和存取管理服務帳戶的使用或是僅限於相同 domain 下的 identities 才能進行資源共享
📁 資源層次結構規劃
運作上可以設定整個資源層級結構的限制條件,Google Cloud 使用的資源層次結構在概念上類似傳統檔案系統,這種層次結構允許你將資源分類為父級和子級,形成一個層次性的結構,這樣的組織方式使得管理和控制資源變得更加有序。
Organization
--> Folders
--> Projects
--> Resources
基於這個層次結構中,你可以將特定的政策和權限附加到特定的節點或資源,這樣可以更精確地控制和管理對這些資源的訪問和操作權限。就像你可以在電腦上對檔案夾或文件應用特定的訪問權限一樣,你也可以在 Google Cloud 的資源層次結構中對資源應用類似的管理控制。
常見 Policies 有那些
Policy 目前已支援到 100 多種,可以依不同產業別或是組織在資安或是使用需求進行設定,以下列舉自己曾經使用過一些滿值得引入的政策
- Limit resource sharing based on domain.
- Limit the usage of Identity and Access Management service accounts.
- Restrict the physical location of newly created resources.
- Google Cloud Platform Resource Location Restriction(資源位置限制)
constraints/gcp.resourceLocations
以上兩個限制在 GCP 中新建資源的物理位置或開資源的區域,特別是 TW 金融業使用雲端時,監管單位會先管你是否在境內還是境外,或是在歐盟的《一般資料保護規範》(GDPR),這些資源限制佈署在歐洲區域,此政策可能是必要的 - Restrict Public IP access on Cloud SQL instances
盡可能讓您的系統遠離公開的存取 - Enforce Public Access Prevention
- Enforce uniform bucket-level access
確保您的所有 Cloud Storage 物件都套用 Uniform bucket-level access - Domain restricted sharing
- Disable service account key creation
- Disable service account key upload
- Require OS Login
OS Login 是一種比 SSH 更好的登入機器的機制(寫過一篇相關文章) - Restrict Cloud NAT usage
少了 external IPs 要連網際網路需求改用 NAT 吧(寫過一篇相關文章) - Define trusted image projects
只有 IMAGE 掃完 OK 才能送到 GKE(無論是來自您的還是由 Google 提供和維護的),這是提高穩定性和安全性的一種方法 - Define allowed external IPs for VM instances
請盡可能避免使用公用 IP,定義允許那些 VM 執行個體可以設置外部 IP ,使不需要的系統可以遠離公開存取 - Skip default network creation(跳過建立 default VPC)
constraints/compute.skipDefaultNetworkCreation
在你開始設定前
請看一下是否在 IAM 權限有【機構政策管理員】 (Organization Policy Administrator),如果層級要到 Organization 或 Folder 層,給予設定者權限即可!
The Identity and Access Management role
roles/orgpolicy.policyAdmin
並熟悉相關 Policy,一來是要進行溝通、解釋這樣作的良善之意,若日後有影響到服務面使用狀況,就得跟使用者或開發團隊說明!部份是資安框架的訂定,部份也要雙邊合意這份組織共同的政策。
🚀 Example — Disable Automatic IAM Grants for Default Service Accounts 或 Service Account Key Creation 等
先切換至 Organization 層級,找到 Organization Policy 並選擇此 Policies 後,進行啟用
或是自行輸入 JSON 表示法
套用 Disable service account key creation
政策,並觀察一下 Service Account Policies
🚀 Example — 拒絕沒有啟用 OS Login 的 VM 實例
{
"spec": {
"rules": [
{
"action": "deny",
"description": "Deny VM instances without OS Login",
"expression": "resource.type == 'compute.googleapis.com/Instance' && !('enable-oslogin' in resource.labels)",
"title": "DenyVMWithoutOSLogin"
}
]
}
}
這個 JSON 表示法中的規則會拒絕沒有啟用 OS Login 的 VM 實例。以下是參數的說明:
action
: 設定為 "deny",表示如果規則條件符合,將拒絕該資源的存取。description
: 提供對這個規則的簡短描述,有助其他人理解此規則expression
: 包含了一個布林表達式,指定了要拒絕的資源。這裡我們檢查資源類型是否是compute.googleapis.com/Instance
並且是否沒有enable-oslogin
標籤。title
: 提供了規則的名稱,使其易於識別。
並請替換 compute.googleapis.com/Instance
為實際的資源類型(如果您希望檢查其他資源),以及根據實際情況適應標籤名稱和值。
🚀 Example — Cloud Cloud Storage 資料保護的建議做法
要進行 Google Cloud Storage(GCS)政策設定前,要先了解 GCS 提供了兩種存取控制的差異,分別為
- ACL 存取控制清單(Access Control List)
- 統一 Bucket 層級存取權限控制(Uniform bucket-level access)
由於 ACL 屬於物件層級(object-level),可對單個物件授予使用者存取權限,進行較精細的權限控制,而 Uniform bucket-level acces 僅允許授予對單一 Bucket 權限。例如,假設 GCS 上 Bucket 有 a.png
和 dog.png
。借助 ACL,我們可以在將 a.png
其設為私有的同時讓 b.png
公開存取。相較之下,Uniform bucket-level access 僅允許您將 Bucket 下的所有物件設為 Public 或是 Private 兩者擇一。
📌註:ACL 和 Uniform bucket-level acces 不能同時使用
Uniform bucket-level access 可由 IAM 控制,但 ACL 無法
IAM(身分和存取管理)用於管理誰可以使用這些服務,以及他們可以使用這些服務的權限。GCP 為了允許在物件層級進行精細的權限設置,引入了 ACL,這也代表著角色和服務帳戶等 IAM 功能可用於 Uniform bucket-level acces,但不能用於 ACL。在 Bucket 層級執行 IAM 策略可以幫助防止意外公開,如果客戶將單個物件公開,在沒有此功能的情況下,可能會發生這類的資料外洩風險。
什麼時候應該使用 ACL,什麼時候應該使用統一的桶級存取?
一般來說,Google 建議使用 Uniform bucket-level acces,因為這大大簡化了管理物件層級的細粒度權限。此外, Uniform bucket-level acces 存取是 IAM 的一部分,而 ACL 不是,因此創建桶時預設啟用 Uniform bucket-level acces 而不是 ACL。
建議在 Cloud Cloud Storage Policy 可以啟用以下
- 啟用限制網域外的分享(Domain-restricted sharing):透過啟用此政策,可有效防止將內容與組織外部人分享。舉例而言,若嘗試將儲存在儲存桶(bucket)中的資料提供給公開網際網路使用者,此政策將直接禁止執行此操作
- Bucket 層級之統一存取控制(Uniform bucket-level access):透過啟用此政策,可簡化權限管理流程,有助於更有效地控制大規模存取。所有新建立的 bucket 將以 bucket 層進行存取控制,以統一控制其底下所有基礎物件的存取權限,提高管理效率
現實狀況是來自於網路和駭客的攻擊面數量不斷增加,管理員必須從各個角度處理安全問題,同時最大限度地減少開發和安全營運的負擔。🔒 自訂 GCP 組織策略是確保雲端基礎架構的安全性、合規性和效率的關鍵步驟,對管理員來說是一個省力的工具,不然這麼多面向在自動化及滲透測試真的很難去一一實作出來😢😢😢。這些 Policy 的引入對資料保護來說也非常實用 🚀,尤其是金融服務和大型高科技行業的客戶,也要確保 workload 可以符合安全要求和行業的法規限制。
Reference
- (GCP)Introduction to the Organization Policy Service
- How To Create Awesome Custom GCP Organization Policies 📑
- Org Policies by default
- GCP — Basic Information
- GCP Organization Policies: Governing Your Inheritance
- 五大方法,加強您的雲端儲存安全性與資料保護
- 【最佳實踐】4 種方法,確保 Cloud Storage 中的資料隱私與安全性
- Useful Organization Policies in GCP
- Top 5 Organization Policy Services for Google Cloud
- Difference between ACL and uniform bucket-level access in Google Cloud Storage
- GCS — Access Control Lists
- How do I provide organizational wide security control using Hierarchical Firewall Policies