星期六, 10月 31, 2020

GCP Flow Log with Console 建立小記

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:




沒有留言: