星期日, 10月 18, 2020

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

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


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

  • 建立方式使用 Console 方式

  • 發佈至 CloudWatch


原始需求想法: 

  • 想要知道 AWS 上面連線服務的資訊, 例如針對特定 IP 的服務或是特定的 port, 是誰過來進行連線?

  • 然後並不是所有的服務提供都是放在 LB 後面, 也是會有單一 EC2 提供服務的狀況, 所以這個時候會先想到使用 AWS Flow log 的方式


現實面的考量: 

VPC Flow Log 可以發佈到 CloudWatch 與 S3, 兩個部份都會實作

目前想法上應該是用 VPC Flow Log + S3, 因為價格差很多

  • 參考  https://aws.amazon.com/tw/cloudwatch/pricing/ 

  • 每月日誌擷取費用

    • CloudWatch - 0 到 10 TB 每 GB @0.50 USD

    • S3 - 0 到 10 TB 每 GB @0.25 USD

  • 每月日誌存檔費用

    • CloudWatch - 每 GB @0.03 USD

    • S3 - 每 GB @0.023 USD


做法上還是要看應用的情景是啥, CloudWatch 可以馬上查詢, S3 的部分應該是要透過 Aethna 來結合查詢


首先第一彈就是來實作使用 Console 的方式, 啟用 AWS Flow log, 發佈到 CloudWatch


首先登入到 AWS Console


點選 AWS Console 搜尋 CloudWatch 到 CloudWatch 服務首頁

點選 左方的 Log groups


 

點選 Create log group


輸入群組資訊

點選 Create




確認 Log group 有被建立




接下來建立 IAM Role (讓 VPC 有權限寫入 ColudWatch Log Group)


登入到 IAM 服務首頁


點選左方的 Roles



點選 Create role


點選 EC2 作為使用案例

點選 Next: Permissions



Permission 的部分先跳過, 因為等等會進行編輯(也可以在這個頁面用 Create policy 建立, 不過會新增一個分頁, 所以等等回來處理)

點選 Next: Tags



視需求看看要不要加入 Tag

點選 Next: Review



輸入 Role Name 與相關資訊

點選 Create role




點選剛建立的 IAM Role



點選 Permissions

點選 Attach policies



點選 Create policy



點選 JSON 分頁

修改內容如下


{

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

  "Statement": [

    {

      "Action": [

        "logs:CreateLogGroup",

        "logs:CreateLogStream",

        "logs:PutLogEvents",

        "logs:DescribeLogGroups",

        "logs:DescribeLogStreams"

      ],

      "Effect": "Allow",

      "Resource": "*"

    }

  ]

}



點選 Review policy


輸入名稱

點選 Create policy



回到 VPC-Flow-Log 的頁面

建議重新整理 policy

輸入關鍵字 VPC-Flow

勾選剛剛建立的 Policy "VPC-Flow-Log-Policy"

點選 Attach policy


觀察相關資訊


接下來點選 Trust relationships

點選 Edit trust relationship



設定以下權限讓 VPC Flow Log Service 能 Assume the Role


{

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

  "Statement": [

    {

      "Sid": "",

      "Effect": "Allow",

      "Principal": {

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

      },

      "Action": "sts:AssumeRole"

    }

  ]

}


點選 Update Trust Policy


確認相關資訊




接下來建立 VPC Flow Log


登入到 VPC 的服務頁面

然後切換到要啟用 VPC Flow Log 的 Region


勾選要啟用的 VPC

點選 Actions

點選 Create flow log



輸入名稱

選取要擷取的類型

選取 aggregation 時間區間

點選 Send to CloudWatch Logs

Destination log group: 選取剛剛建立的 Log group



IAM role: 選取剛剛建立的 Role 

Log record format: 使用預設格式

點選 Create flow log



觀察相關資訊


點選剛剛勾選的 VPC

點選 Flow logs 標籤

可以觀察到相關資訊





==== 驗證相關資訊 ====


登入 CloudWatch 服務頁面

點選左方 Log groups

點選 剛剛建立的 log group “flow-log-group”

因為剛剛設定的 aggregation 時間是  10 分鐘, 所以至少要 10 分鐘後才會有 Log stream

可以觀察到相關資訊



  • 這個邊可以觀察到 eni- 開頭的 log stream, 會對應到服務或是資源的網卡 ID


接下來要搜尋相關資訊


點選 Search all



之前建立 VPC Flow log 是使用預設的格式


Log 欄位說明參考:

VPC 流程日誌- Amazon Virtual Private Cloud



欄位列表


<version> <account-id> <interface-id> <srcaddr> <dstaddr> <srcport> <dstport> <protocol> <packets> <bytes> <start> <end> <action> <log-status>



查詢的方式


如果不精確的方式, 也許可以直接輸入 IP

另外也可以用比較精準的方式來搜尋


例如 要找 dstport 22 的 log


[version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport = 22, protocol, packets, bytes, start, end, action, logstatus]


當然也可以結合多條件


[version, accountid, interfaceid, srcaddr = 210.85.244.94, dstaddr, srcport, dstport = 22, protocol, packets, bytes, start, end, action, logstatus]


輸出參考




這樣算是又向 AWS 前進一步


~ enjoy it


Reference:



沒有留言: