2018年5月17日 星期四

在 GCP 上為 VM 設定防火牆

在雲端環境中,防火牆的概念其實跟傳統模式有點不同。傳統的防火牆概念是在作業系統上設定像是 iptables 等。但在雲端上,因為網路服務是由獨立的元件提供的,所以其實應該用 SdN(Software defined Network)的方式來思考這個問題。具體來說就是,網路相關的設定並不會在 VM 上設定,而是在 VM 外部設定,就像是真的有個牆放在 VM 前面這樣。

設定防火牆規則

在 GCP 中,網路服務的提供是由 VPC 來進行的,因此在設定時要先在「VPC networks」裡的「Firewall rules」新增防火牆規則。防火牆規則的內容中,最重要的在於這個規則要套用到哪些 VM,而決定套用對象的方式在於設定「Targets」。

Targets 有三種模式可以設定:

  1. All instances in the network
  2. Specified target tags
  3. Specified service account

如果想要簡單的話,可以設定成 1,也就是規則將套用到網路中所有的 VM。不過如果只想針對特定一些 VM 的話,用 2 比較合適。用 2 的模式時,會需要輸入對象的標籤名稱,假設我想要打開 22 port,所以我命名標籤叫做「allow-ssh」,代表只要 VM 有「allow-ssh」這個標籤,就要套用這條防火牆規則。

設定 VM 標籤

接下來是比較奇特的地方,在 VM 上要標剛剛寫的標籤。從「Compute Engine」進入「VM Instances」,然後編輯想要設定防火牆的 VM。編輯時,要注意要找的是「Network tags」(中文介面會寫「網路標籤」)而不是「Lables」(中文介面會寫「標籤」)……。因為剛剛在防火牆規則設定的標籤是「allow-ssh」,因此 VM 的 Network tags 裡也要設定相同的名字。設定完以後,儲存然後稍微等一下下,防火牆規則就會套上 VM 了。

沒有留言: