[GCP 資安攻略] GCP 資訊安全各項功能簡介

[GCP 資安攻略] GCP 資訊安全各項功能簡介

一、前言:共同責任模型

資訊安全,不管地端到雲端,都要注意。

很多人說雲端比較不安全,你說的可能是對的,但只有對一半。不管廠商對你的支援到什麼樣的程度,對你的服務多麼好,一旦資安事件發生,即使廠商有賠償,那個賠償也遠遠比不上你的損失。

以公有雲為例,如果今天是資料庫掛掉,資料完全消失,裡面的資料沒有備份,請問公有雲廠商會賠償嗎?

答案是會,但賠償你的是「資料庫不能運作的時間折算成金額」,例如每小時100元,那資料庫掛8小時,那就賠800元。但不會賠償「因資料消失而造成的商業損失」

這裡有一張共同責任模型 (Shared Responsibility Model),提到不同層級的服務,大家承擔責任的範圍會不一樣,例如你使用 BigQuery,你就要負責管好你的內容和存取權限; 如果你用 Compute Engine (就是 VM),你就要管到應用程式的安全、身份驗證、授權和網路安全等等。

 GCP 的共同責任模型 shared responsibility model
GCP 的共同責任模型 shared responsibility model

總歸一句話,廠商不會負全責,終究要負責的還是自己。

但是不用擔心,今天就是要來簡介一下,在 GCP 上有哪些資安的東西可以用。

二、外部資安防護

首先是外部的資安防護,也是大家最常談到的外部攻擊或入侵的問題,最基本的就是 VPC 的防火牆,很多人為了方便存取,防火牆都全開,這樣就容易讓駭客找到漏洞。

如果你的 VM 有外部 IP,卻又沒提供網站服務,等於就是在網路上裸奔,有很多駭客每天都會跑一些小程式,一天到晚在網路上掃描開放連線的 IP 和 Port,有點亂槍打鳥的感覺。

GCP 防火牆
GCP 防火牆

但如果哪一天被矇對了帳號密碼,那就像中樂透一樣,直接讓你的主機變成僵屍電腦,或貼心地幫你加密資料,然後跟你要錢。(你偶爾可以看一下 secure 或 ssh 相關 log,搞不好整天都有人在那邊 try 你的帳密)

建議可以這樣做:

GCP 跳板機連線 Basion Host
GCP 跳板機連線,又稱 Bastion Host

這樣馬上讓你的 VM 安全性提高一大半。詳細操作可以看 使用 Google VM 的5大常見錯誤 – 有一種叫忘記關機!!

如果是用 Cloud SQL 呢?可以參考 Cloud SQL安全連線密技part1 – 限定IP與強制SSL連線

如果是像 DDoS 攻擊呢?別擔心,GCP 現在用 Cloud Armor,提供 WAF 和 DDoS 的防護,除了可以指定 IP 來阻擋,也可以設定第三方 (Cloudflare, Imperva) 提供的 IP 清單,也能針對特定國家的流量,可以參考這篇文章 [GCP DDoS 大作戰] 如何設定 Google Cloud Armor 阻擋來自某些國家的 IP

Cloud_Armor
Cloud_Armor

除此之外,還有預先定義好的規則,例如 XSS (Cross Site Attack), SQL injection, LFI, RFI, RCE 等等。設定方式很像原本的 GCP 防火牆,例如 allow 或 deny,以及優先順序是從小到大排序。

今年開始又推出了 Internet Endpoint Group,連外部的來源都可以防禦,可以保護到外部的 CDN 。

三、內部資料加密

其實 GCP 上的資料,不管是儲存時的加密 (Encryption at rest),或傳輸時的加密 (Encryption in transit),都已經有內建一些服務來保護你的資料。

除此之外,還有所謂的 CMEK (Customer Managed Encryption Key),指的是客戶使用代管式的金鑰管理,Google 的 KMS (Key Management Service)。

KMS_Key Management Service
KMS_Key Management Service

KMS 可以讓你在 GCP 上建立自己的 key,讓你存資料時帶 key 進去加密,然後取資料也要帶 key 去解密資料;還能夠設定自動換 key,每個月換 500 個 key 都沒問題。

你可能會想,那能不能自己管 key 呢?當然可以,就是所謂的 CSEK (Customer Supplied Encryption Key),可以讓你用地端的 key 來加密,但是!!!

自己管就不要弄丟 key!!Key 丟了,沒有人可以救得回來喔!Google 只會放在它的暫存記憶體讓你存取資料時使用,但並不會幫你留 Key 在 GCP上面。

四、安全中心 Security Command Center 與弱點掃瞄

(這裡必須要有 Org 等級的權限才能進來操作, 如果沒有 Org, 要先透過 G Suite 或 Cloud Identity 建立,可參考「GCP上如何建立Organization ? 透過Cloud Identity Free 幫你實現 」)

Security Command Center 提供你看到整個 GCP 的組織架構底下,有哪些弱點,它會幫你評估弱點的嚴重程度和建議的解決辦法,就像一個 GCP 資安顧問一樣,是個很好用的功能。

還有大家最常用的網站弱點掃瞄 Web Security Scanner,它不是說說而已,它真的幫你一行一行掃瞄你的程式碼:

GCP 網站弱點掃瞄 Web Security Scanner
GCP 網站弱點掃瞄 Web Security Scanner

不管你用的是 Compute Engine (GCE/VM), App Engine (GAE) 或 Kubernetes Engine (GKE) 都可以用喔,但要注意,只能掃同一個專案的網站,不能掃外面的喔!

第三種弱點掃瞄,則是針對容器映像檔 (Container Image) 的 Cloud Container Registry,只要你把 Image 存放在這裡,它就可以自動幫你做弱點掃瞄,它一樣能夠幫你依照嚴重性做排明,並附上說明文件,算是非常方便的安全性功能。

Container Registry 自動弱點掃瞄
Container Registry 自動弱點掃瞄

五、BeyondCorp 安全模型

接下來要介紹的是 Google 進階的 BeyondCorp 安全模型,它強調零信任,就是說我不管你是從哪裡來的流量,你都必須經過身份驗證、授權和加密才能進來。即使你本來就在 GCP 的內網,我還是管到底。

在這個框架底下,GCP 有一系列的「情境感知存取權」(Context-Aware Access) 各項功能:

基於BeyondCorp建立的Context-Aware Access
基於 BeyondCorp 建立的 Context-Aware Access

你不需要全部都設定,可針對公司現況設定適合的政策。首先是 Access Context Manager,可以依列條件設定存取的等級和條件:

  • IP 範圍:如果沒從公司 IP 連線,則不允許存取
  • Region (國家代碼) :如果從某些奇奇怪怪國家連線,則不允許存取
  • Device 螢幕鎖定或加密:手機或電腦本身沒有設密碼,則不允許存取 (管很寬)

上面提的是從外部連線進來,這裡還有從內部傳出資料的規定:VPC Service Controls,例如我可以設定我的一個專案要保護 BigQuery:

VPC Service Perimeter
VPC Service Perimeter

然後我再去 BigQuery 匯出資料的話:

Service Control 禁止將資料帶出 BigQuery

我會看到禁止匯出資料的訊息,可確保資料不會隨意被攜出。

最後還有最嚴格的防護規則: Cloud IAP

它能夠保護 GAEGCE (VM)GKE ,甚至連地端的資源都能夠保護(前提是使用 Cloud Interconnect)。

它的設定方式非常多且複雜,並且會動到既有的系統架構,所以如果要使用 Cloud IAP 的話,請先評估並且計劃一下改動的方式,步驟如下:

  • 建立 VM 群組
  • 設定網域和 SSL 憑證
  • 建立 HTTPS load balancer 並加入憑證
  • 重開 VM
  • 刪除原有防火牆規則,建立 IAP 相關防火牆規則
  • 啟動 Cloud IAP
  • 設定 Oauth
  • 加入使用者
  • 測試 IAP 服務

如果有設定完成,它的防護就可以做到非常嚴格,除了憑證、防火牆,也管到你的身份驗證,這些都通過才能存取 GCP。

以上就是在 GCP 上幾個比較重要的資安功能介紹,建議把重點列成清單隨時查看喔!

發佈留言