文章段落
一、前言:共同責任模型
資訊安全,不管地端到雲端,都要注意。
很多人說雲端比較不安全,你說的可能是對的,但只有對一半。不管廠商對你的支援到什麼樣的程度,對你的服務多麼好,一旦資安事件發生,即使廠商有賠償,那個賠償也遠遠比不上你的損失。
以公有雲為例,如果今天是資料庫掛掉,資料完全消失,裡面的資料沒有備份,請問公有雲廠商會賠償嗎?
答案是會,但賠償你的是「資料庫不能運作的時間折算成金額」,例如每小時100元,那資料庫掛8小時,那就賠800元。但不會賠償「因資料消失而造成的商業損失」。
這裡有一張共同責任模型 (Shared Responsibility Model),提到不同層級的服務,大家承擔責任的範圍會不一樣,例如你使用 BigQuery,你就要負責管好你的內容和存取權限; 如果你用 Compute Engine (就是 VM),你就要管到應用程式的安全、身份驗證、授權和網路安全等等。
總歸一句話,廠商不會負全責,終究要負責的還是自己。
但是不用擔心,今天就是要來簡介一下,在 GCP 上有哪些資安的東西可以用。
二、外部資安防護
首先是外部的資安防護,也是大家最常談到的外部攻擊或入侵的問題,最基本的就是 VPC 的防火牆,很多人為了方便存取,防火牆都全開,這樣就容易讓駭客找到漏洞。
如果你的 VM 有外部 IP,卻又沒提供網站服務,等於就是在網路上裸奔,有很多駭客每天都會跑一些小程式,一天到晚在網路上掃描開放連線的 IP 和 Port,有點亂槍打鳥的感覺。
但如果哪一天被矇對了帳號密碼,那就像中樂透一樣,直接讓你的主機變成僵屍電腦,或貼心地幫你加密資料,然後跟你要錢。(你偶爾可以看一下 secure 或 ssh 相關 log,搞不好整天都有人在那邊 try 你的帳密)
建議可以這樣做:
這樣馬上讓你的 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:
除此之外,還有預先定義好的規則,例如 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 可以讓你在 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,它不是說說而已,它真的幫你一行一行掃瞄你的程式碼:
不管你用的是 Compute Engine (GCE/VM), App Engine (GAE) 或 Kubernetes Engine (GKE) 都可以用喔,但要注意,只能掃同一個專案的網站,不能掃外面的喔!
第三種弱點掃瞄,則是針對容器映像檔 (Container Image) 的 Cloud Container Registry,只要你把 Image 存放在這裡,它就可以自動幫你做弱點掃瞄,它一樣能夠幫你依照嚴重性做排明,並附上說明文件,算是非常方便的安全性功能。
五、BeyondCorp 安全模型
接下來要介紹的是 Google 進階的 BeyondCorp 安全模型,它強調零信任,就是說我不管你是從哪裡來的流量,你都必須經過身份驗證、授權和加密才能進來。即使你本來就在 GCP 的內網,我還是管到底。
在這個框架底下,GCP 有一系列的「情境感知存取權」(Context-Aware Access) 各項功能:
你不需要全部都設定,可針對公司現況設定適合的政策。首先是 Access Context Manager,可以依列條件設定存取的等級和條件:
- IP 範圍:如果沒從公司 IP 連線,則不允許存取
- Region (國家代碼) :如果從某些奇奇怪怪國家連線,則不允許存取
- Device 螢幕鎖定或加密:手機或電腦本身沒有設密碼,則不允許存取 (管很寬)
上面提的是從外部連線進來,這裡還有從內部傳出資料的規定:VPC Service Controls,例如我可以設定我的一個專案要保護 BigQuery:
然後我再去 BigQuery 匯出資料的話:
我會看到禁止匯出資料的訊息,可確保資料不會隨意被攜出。
最後還有最嚴格的防護規則: Cloud IAP
它能夠保護 GAE、GCE (VM) 和 GKE ,甚至連地端的資源都能夠保護(前提是使用 Cloud Interconnect)。
它的設定方式非常多且複雜,並且會動到既有的系統架構,所以如果要使用 Cloud IAP 的話,請先評估並且計劃一下改動的方式,步驟如下:
- 建立 VM 群組
- 設定網域和 SSL 憑證
- 建立 HTTPS load balancer 並加入憑證
- 重開 VM
- 刪除原有防火牆規則,建立 IAP 相關防火牆規則
- 啟動 Cloud IAP
- 設定 Oauth
- 加入使用者
- 測試 IAP 服務
如果有設定完成,它的防護就可以做到非常嚴格,除了憑證、防火牆,也管到你的身份驗證,這些都通過才能存取 GCP。
以上就是在 GCP 上幾個比較重要的資安功能介紹,建議把重點列成清單隨時查看喔!