星期六, 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:




星期六, 10月 24, 2020

AWS 流程日誌發佈至CloudWatch with AWS CLI 小記

 AWS 流程日誌發佈至CloudWatch with AWS CLI 小記


OS: container with openSUSE Leap 15.2



上次流程日誌啟用是使用 Console 的方式



今天要來寫 透過 AWS CLI 啟用流程日誌

  • 建立方式使用 AWS CLI 方式

  • 發佈至 CloudWatch




==== 建立IAM Role ====


參考官方文件

  • https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html 


建立檔案  Trust-Policy-VPC-flow-logs.json

內容如下


{

  "Version": "2012-10-17",

  "Statement": [

    {

      "Sid": "",

      "Effect": "Allow",

      "Principal": {

        "Service": "vpc-flow-logs.amazonaws.com"

      },

      "Action": "sts:AssumeRole"

    }

  ]

}


使用 AWS CLI 建立  IAM Role


# aws  iam  create-role  --role-name  VPC-Flow-Log  --assume-role-policy-document  file://Trust-Policy-VPC-flow-logs.json


  • file:// 後面要注意是否有對應到 Trust-Policy-VPC-flow-logs.json 所在路徑



==== 建立IAM Policy ===== 


參考官方文件

  • https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html



建立檔案 VPC-Flow-Log-Policy.json

內容如下


{

  "Version": "2012-10-17",

  "Statement": [

    {

      "Action": [

        "logs:CreateLogGroup",

        "logs:CreateLogStream",

        "logs:PutLogEvents",

        "logs:DescribeLogGroups",

        "logs:DescribeLogStreams"

      ],

      "Effect": "Allow",

      "Resource": "*"

    }

  ]

}   


使用 AWS CLI 建立  IAM Policy


# aws  iam  create-policy  --policy-name  VPC-Flow-Log-Policy  --policy-document  file://VPC-Flow-Log-Policy.json




==== 關聯 Policy 到 Role上 ====

  • 參考官方文件 https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html


# aws  iam  attach-role-policy  --policy-arn  arn:aws:iam::111111111111:policy/VPC-Flow-Log-Policy  --role-name   VPC-Flow-Log


  • policy arn 部分請換成自己的 ID

  • Role-name 對應剛剛建立的 Role




==== 切換到VPC所在的region ====


參考官方文件


可以用指令先觀察目前所設定的 Region


# aws  configure  list

或是

# aws  configure  get  region


設定 Region

# aws  configure  set  region  us-east-2


  • 也可以去觀察 ~/.aws/config



==== 建立 Log Group ====


建立 Log Group


# aws  logs  create-log-group  --log-group-name  flow-log-groups



==== 建立 VPC Flow log ====


建立VPC Flow log



# aws  ec2  create-flow-logs  --resource-type  VPC  --resource-ids  vpc-c11111ac  --traffic-type  ALL  --log-destination-type  cloud-watch-logs   --log-group-name  flow-log-groups  --deliver-logs-permission-arn  arn:aws:iam::111111111111:role/VPC-Flow-Log



  • resource-ids 請換成自己的ID

  • deliver-logs-permission-arn 請換成自己的 ARN


這樣就建立完成


驗證的方式可以參考上一篇的 blog




這樣算是又向 AWS 前進一步


~ enjoy it





Reference: