สร ปส นๆ
AWS GuardDuty Runtime Agent Image SHA อยู่ที่นี่: https://guarddutysha.cageyv.dev/guardduty_runtime_image_sha256.json
สคริปต์ Parser อยู่ที่นี่: https://github.com/cageyv/guardduty-runtime-monitoring-agent-release-json

สถานะการสร้างล่าสุด ลิงก์ไปยังหัวข้อ

Update GuardDuty Digests

ความท้าทายที่ซ่อนอยู่ของการจัดการเวอร์ชัน AWS GuardDuty ลิงก์ไปยังหัวข้อ

เคยลองติดตามเวอร์ชันของ AWS GuardDuty runtime monitoring agents ไหม? ถ้าคุณกำลังรัน containerized workloads ใน AWS และใส่ใจเรื่องความปลอดภัย คุณน่าจะเคยเจอความหงุดหงิดนี้ แม้ว่า AWS จะมีเอกสารและ API ที่ดีโดยทั่วไป แต่ก็มีช่องว่างที่น่าสนใจเกี่ยวกับเวอร์ชันของ GuardDuty runtime monitoring agents โดยเฉพาะสำหรับ Fargate

เมื่อไม่นานมานี้ ผมต้องติดตามเวอร์ชันเหล่านี้สำหรับโครงการ compliance ความต้องการดูเหมือนจะง่าย: บันทึกเวอร์ชันของ security agents ทั้งหมดที่รันในสภาพแวดล้อมของเรา ส่วนใหญ่ของส่วนประกอบนั้นง่ายต่อการตรวจสอบ แต่ GuardDuty runtime monitoring agents กลับหายาก AWS ไม่เปิดเผยเวอร์ชันเหล่านี้ผ่าน API ใดๆ ทำให้เรามีจุดบอดในเอกสารความปลอดภัยของเรา

ปัญหาในพื้นที่นี้ ลิงก์ไปยังหัวข้อ

GuardDuty Runtime Monitoring เป็นฟีเจอร์ที่ทรงพลังที่ช่วยตรวจจับภัยคุกคามใน containerized workloads ของคุณ เมื่อเปิดใช้งาน AWS จะติดตั้ง security agents ลงใน ECS Fargate tasks หรือ EKS clusters ของคุณ Agents เหล่านี้จะตรวจสอบกิจกรรมที่น่าสงสัยและรายงานกลับไปยัง GuardDuty

ความท้าทาย? AWS อัปเดต agents เหล่านี้เป็นประจำด้วยความสามารถใหม่และการแก้ไขความปลอดภัย แต่ไม่ให้ API เพื่อ:

  1. ตรวจสอบว่าเวอร์ชันใดถูกติดตั้งอยู่ในปัจจุบัน
  2. ดูประวัติการปล่อยหรือ changelogs
  3. ตรวจสอบ SHA256 digests สำหรับ container images

สิ่งนี้สร้างปัญหาหลายอย่าง:

  • ทีม compliance ไม่สามารถบันทึก security agents ที่ใช้งานได้ง่าย
  • ทีม security ไม่สามารถตรวจสอบได้ว่าเวอร์ชันล่าสุดถูกติดตั้งหรือไม่
  • วิศวกร DevOps ไม่สามารถแก้ไขปัญหาเกี่ยวกับ agents ได้อย่างมีประสิทธิภาพ

การสร้างทางแก้ไข ลิงก์ไปยังหัวข้อ

แทนที่จะยอมรับข้อจำกัดนี้ ผมตัดสินใจสร้างทางแก้ไขที่ง่ายแต่มีประสิทธิภาพ: ไฟล์ JSON ที่ติดตามประวัติการปล่อยของ GuardDuty runtime monitoring agents พร้อมกับ SHA256 digests

แนวทางง่ายๆ คือ:

  1. รวบรวม SHA256 digests สำหรับ GuardDuty runtime monitoring agent images
  2. จัดระเบียบตามเวอร์ชันและสถาปัตยกรรม (x86_64 และ arm64)
  3. ทำให้ข้อมูลพร้อมใช้งานในรูปแบบ JSON ที่มีโครงสร้าง
  4. อัตโนมัติการอัปเดตเพื่อให้ข้อมูลเป็นปัจจุบัน

ผลลัพธ์คือ endpoint JSON สาธารณะที่ใครก็ใช้ตรวจสอบเวอร์ชันของ GuardDuty runtime monitoring agents ได้: https://guarddutysha.cageyv.dev/guardduty_runtime_image_sha256.json

โครงสร้างภายในของ JSON ลิงก์ไปยังหัวข้อ

ไฟล์ JSON จัดเวอร์ชันของ GuardDuty agents ออกเป็นสองหมวดหลัก:

  1. Fargate ECS agents - ใช้สำหรับ Amazon ECS tasks
  2. EKS agents - ใช้สำหรับ Amazon EKS clusters

แต่ละหมวดมีรายการเวอร์ชันพร้อม SHA256 digests ที่เกี่ยวข้อง ดังนี้:

{
  "fargate_ecs": {
    "v1.7.0-Fg_x86_64": "sha256:bf9197abdf853607e5fa392b4f97ccdd6ca56dd179be3ce8849e552d96582ac8",
    "v1.7.0-Fg_arm64": "sha256:bf9197abdf853607e5fa392b4f97ccdd6ca56dd179be3ce8849e552d96582ac8",
    // Additional versions...
  },
  "eks": {
    "v1.10.0-Eks_x86_64": "sha256:6dcbe5b055e1ef0af903071ede0b08f755ad5b7e9774a67df5399efdaa1f3d7d",
    "v1.10.0-Eks_arm64": "sha256:6dcbe5b055e1ef0af903071ede0b08f755ad5b7e9774a67df5399efdaa1f3d7d",
    // Additional versions...
  }
}

สิ่งที่น่าสนใจคือสำหรับแต่ละเวอร์ชัน SHA256 digests เหมือนกันทั้งสำหรับสถาปัตยกรรม x86_64 และ arm64 ซึ่งบ่งชี้ว่า AWS ใช้ multi-architecture images ที่มี digest เดียวกัน ซึ่งเป็นแนวปฏิบัติทั่วไปสำหรับ container images ที่รองรับหลายแพลตฟอร์ม

วิธีการทำงานเบื้องหลัง ลิงก์ไปยังหัวข้อ

ที่เก็บข้อมูลนี้ใช้แนวทางง่ายแต่มีประสิทธิภาพในการดูแลข้อมูลนี้:

  1. สคริปต์ Python ตรวจสอบเวอร์ชันใหม่ของ GuardDuty agents เป็นระยะ
  2. เมื่อพบเวอร์ชันใหม่ ไฟล์ JSON จะถูกอัปเดต
  3. GitHub Actions อัตโนมัติขั้นตอนนี้เพื่อให้ข้อมูลเป็นปัจจุบัน
  4. Cloudflare Workers ให้บริการไฟล์ JSON สำหรับการเข้าถึงสาธารณะ

โซลูชันทั้งหมดเป็นโอเพนซอร์สและพร้อมใช้งานบน GitHub: guardduty-runtime-monitoring-agent-release-json

การใช้งานในทางปฏิบัติ ลิงก์ไปยังหัวข้อ

คุณจะใช้ข้อมูลนี้อย่างไร? นี่คือตัวอย่างบางกรณี:

เอกสาร Compliance ลิงก์ไปยังหัวข้อ

สำหรับองค์กรที่ต้องบันทึกเครื่องมือความปลอดภัยทั้งหมดในสภาพแวดล้อมของตน:

# ดึงเวอร์ชันล่าสุดของ GuardDuty agent
curl -s https://guarddutysha.cageyv.dev/guardduty_runtime_image_sha256.json | jq '.fargate_ecs | keys'

สคริปต์ตรวจสอบ ลิงก์ไปยังหัวข้อ

เพื่อตรวจสอบว่าคอนเทนเนอร์ของคุณใช้เวอร์ชัน GuardDuty agent ที่คาดหวังหรือไม่:

import requests
import json

# ดึงเวอร์ชันของ GuardDuty agent
response = requests.get('https://guarddutysha.cageyv.dev/guardduty_runtime_image_sha256.json')
guardduty_versions = json.loads(response.text)

# ตรวจสอบว่า digest ที่ระบุเป็น GuardDuty agent หรือไม่
def is_guardduty_agent(digest):
    for platform in guardduty_versions:
        for version, sha in guardduty_versions[platform].items():
            if sha == digest:
                return True, platform, version
    return False, None, None

# ตัวอย่างการใช้งาน
is_agent, platform, version = is_guardduty_agent("sha256:bf9197abdf853607e5fa392b4f97ccdd6ca56dd179be3ce8849e552d96582ac8")
if is_agent:
    print(f"นี่คือ GuardDuty agent สำหรับ {platform}, เวอร์ชัน {version}")

การตรวจสอบความปลอดภัย ลิงก์ไปยังหัวข้อ

สำหรับทีม security ที่ต้องการให้แน่ใจว่าเวอร์ชัน agent ล่าสุดถูกติดตั้ง:

# ดึงเวอร์ชันล่าสุดของ Fargate ECS agent
LATEST_VERSION=$(curl -s https://guarddutysha.cageyv.dev/guardduty_runtime_image_sha256.json | jq -r '.fargate_ecs | keys | .[0]')
echo "เวอร์ชัน GuardDuty Fargate agent ล่าสุด: $LATEST_VERSION"

ข้อจำกัดปัจจุบันและงานในอนาคต ลิงก์ไปยังหัวข้อ

แม้ว่าโซลูชันนี้จะตอบโจทย์ความต้องการในทันที แต่ก็มีข้อจำกัดบางประการ:

  1. การตั้งชื่อเวอร์ชันของ EKS agent เป็นการคาดเดาอย่างมีเหตุผล เนื่องจาก AWS ไม่เผยแพร่ข้อมูลนี้
  2. ไม่มี changelog อย่างเป็นทางการจาก AWS เพื่อเชื่อมโยงเวอร์ชันกับฟีเจอร์หรือการแก้ไขเฉพาะ
  3. ข้อมูลถูกรวบรวมด้วยตนเอง แทนที่จะได้รับผ่านช่องทางอย่างเป็นทางการของ AWS

ผมหวังว่า AWS จะให้ API อย่างเป็นทางการสำหรับข้อมูลนี้ในอนาคต จนกว่าจะถึงเวลานั้น ไฟล์ JSON นี้เป็นทางเลือกที่มีประโยชน์สำหรับผู้ที่ต้องติดตามเวอร์ชันของ GuardDuty runtime monitoring agents

การมีส่วนร่วม ลิงก์ไปยังหัวข้อ

ถ้าคุณเห็นว่านี่มีประโยชน์และต้องการช่วยเหลือ มีหลายวิธีที่คุณสามารถช่วยได้:

  1. รายงานเวอร์ชัน agent ใหม่เมื่อคุณพบ
  2. แนะนำการปรับปรุงโครงสร้าง JSON หรือ API
  3. ช่วยบันทึกความแตกต่างระหว่างเวอร์ชันของ agent
  4. แชร์วิธีที่คุณใช้ข้อมูลนี้ในโปรเจกต์ของคุณเอง

ที่เก็บ GitHub เปิดรับ issues และ pull requests: guardduty-runtime-monitoring-agent-release-json

ความคิดสุดท้าย ลิงก์ไปยังหัวข้อ

บางครั้งทางแก้ไขที่ง่ายที่สุดกลับมีประสิทธิภาพที่สุด แม้ว่า AWS จะมีเครื่องมือที่ยอดเยี่ยมสำหรับความต้องการด้านความปลอดภัยส่วนใหญ่ แต่ก็ยังมีช่องว่างที่ชุมชนสามารถเติมเต็มได้ โปรเจกต์เล็กๆ นี้ช่วยแก้ไขช่องว่างหนึ่ง ทำให้เราทุกคนติดตามและตรวจสอบ security agents ที่ปกป้อง containerized workloads ได้ง่ายขึ้น

คุณอยากเห็นข้อมูลความปลอดภัย AWS อะไรที่เข้าถึงได้ง่ายขึ้นอีกไหม? แจ้งให้ผมทราบในคอมเมนต์หรือ ติดต่อโดยตรงได้เลย