GCP Flow Log with Console 建立小記
上次寫 AWS 的 Flow log, 今天來寫 GCP 的 Flow log 建立小記
建立方式: 使用 Console
發佈至: GCS
原始需求想法:
想要知道 GCP 上面連線服務的資訊, 例如針對特定 IP 的服務或是特定的 port, 是誰過來進行連線?
然後並不是所有的服務提供都是放在 LB 後面, 也是會有單一 GCE 提供服務的狀況, 所以這個時候會先想到使用 GCP Flow log 的方式
GCP 的 Flow log 可以輸出到不同的目的地, 這邊為了可以保存比較久的時間以及之後再利用, 之後會存放到 GCS 上.
所以首先就是來建立 GCS Bucket
==== 建立 GCS Bucket ====
登入 GCP console
點選左側選單的 Storage -- > Browser
點選 CREATE BUCKET 來建立 Bucket
輸入名稱
點選 CONTINUE
選取 Location type
這邊我用 Region 方式
點選 CONTINUE
設定 Storage class
c
設定 Access control
選取 Fine-grained
點選 CONTINUE
Advanced settings 部分看有沒有需求
點選 CREATE 建立
==== 啟用 VPC Log ====
點選左側 VPC network -- > VPC network
因為 Flow log 是針對單一 VPC Subnet 來設定的
所以先點要設定的 VPC Subnet
點選 EDIT
點選 Flow logs 的 On
點選 CONFIGURE LOGS
預設是 5 SEC 就 Aggregation, 這邊依照自己的需求來選取, 時間越大可以節省的空間越多, 我是用 10MIN
想法上是日後要來稽核或是查詢使用, 所以 Sample rate 我調整爲 100% ( 預設爲 50% )
點選 SAVE
啟用之後
點選 View flow logs
這個時候會被帶到 Logs Explorer
沒意外的話應該是新的介面, 也就是 Logs Explorer
可以點選 OPTIONS 確認目前在新介面(Logs Explorer)還是 Legacy Logs Viewer
在Logs Explorer
點選 Actions -- > 點選 Create Sink
輸入名稱
點選 NEXT
Sink destination 部分
Select sink service 選取 Cloud Storage bucket
點選 BROWSE
選取剛剛建立的 GCS Bucket -- > Select
點選 NEXT
這個時候會看到被帶入的 filter
點選 NEXT
點選 CREATE SINK
建立完成之後畫面會被帶到 Logs Router
在這邊也可以觀察預設的 Logs Router Sink
以及剛剛建立的 Cloud Storage bucket Type 的 Sink
因為 Aggregation 是 10 分鐘
也怕像是 AWS 那樣有流量才有動作, 所以我有用 GCE 建立一些流量
然後同事回饋, google 可能是批次作業, 最好放個一個小時再回來看
等待一段時間
就可以看到 log 被放入 bucket 內
可以將 log 檔下載來觀察
我下載使用 使用 cat 加上 jq 指令來觀察他的欄位
裡面大概最常被利用的應該就是 jsonPayload 內的
dest_ip
dest_port
protocol
src_ip
src_port
==== 驗證與查詢 ====
查詢的方式, 日後應該是結合 Big Query 來進行查詢
但是現階段就先用 Logs Explorer 來進行查詢吧
舉例來說, 依照某個 port 進行查詢
logName:("projects/YOUR_PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows") AND jsonPayload.connection.src_port=443
請帶入自己的 Project ID
或是以 src_ip 或是 dest_ip 方式來查詢
logName:("projects/YOUR_PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows") AND jsonPayload.connection.src_ip=10.12.53.2
這樣就可以快速查詢相關紀錄啦
又向 GCP 前進一步
~ enjoy it
Reference: