ทดลองส่ง Amazon Inspector โดย AWS Chatbot ไปยัง Slack

Amazon Inspector เป็นบริการที่สแกนช่องโหว่ของ Amazon EC2 และ Amazon ECR นอกจากนี้ยังสามารถส่งผลการสแกนไปยัง Slack ได้ แต่ต้องใช้ Service อื่นๆประกอบด้วย เช่น Amazon EventBridge, Amazon SNS และ AWS Chatbot เป็นต้น ซึ่งผมได้ลองใช้งานแล้ว ก็เลยจะมาแนะนำวิธีการตั้งค่าแจ้งเตือนข้อความเพื่อส่งเหตุการณ์จาก Inspector ไปยัง Slack

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

ครั้งนี้ผมจะมาทดลองส่ง Amazon Inspector โดย AWS Chatbot ไปยัง Slack

วิธีการตั้งค่า Amazon Inspector

ดูวิธีการใช้งาน Amazon Inspector สำหรับ EC2 ได้ที่ลิงก์บทความด้านล่างนี้

เมื่อตั้งค่าตามบทความด้านบนนี้เสร็จแล้ว ให้ทำตามขั้นตอนในหัวข้อถัดไปได้เลย

แผนภาพและบริการที่ใช้

Amazon EventBridge

Amazon EventBridge เป็นบริการเหตุการณ์แบบไร้เซิร์ฟเวอร์ที่สามารถรับเหตุการณ์ กรอง แปลง กำหนดเส้นทาง และส่งเหตุการณ์จากแอปพลิเคชันที่เชื่อมต่อได้โดยไม่ต้องเขียนโค้ดที่กำหนดเองหรือจัดการและเตรียมเซิร์ฟเวอร์

Amazon SNS

Amazon SNS เป็นบริการแจ้งเตือนข้อความที่รวดเร็วและราคาไม่แพง

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Amazon SNS ได้ที่บทความด้านล่างนี้

AWS Chatbot

AWS Chatbot เป็นบริการที่แจ้งเตือนเหตุการณ์ที่เกิดขึ้นไปยัง Slack และ Amazon Chime

การตั้งค่า Amazon SNS

การดำเนินการทั้งหมดนับจากนี้จะดำเนินการในรีเจี้ยนสิงคโปร์ "Asia Pacific (Singapore) ap-southeast-1"

ค้นหา ?︎ SNS แล้วคลิก Simple Notification Service

คลิก Next step

แล้วตั้งค่า Details ในหน้า Create Topic ตามนี้
» Type: Standard
» Name: tinnakorn-test-slack-topic (ตั้งชื่อตามต้องการ)
» Display name: tinnakorn-test-slack-topic (ป้อนตามต้องการ)

เลื่อนลงมาด้านล่างสุด แล้วคลิก Create topic

การตั้งค่า AWS Chatbot

ค้นหา ?︎ AWS Chatbot แล้วคลิก AWS Chatbot

เมื่อเข้ามาแล้วจะเจอหัวข้อ Configure a chat client แล้วเลือก Chat client: Slack แล้วคลิก Configure client

เลือก Workspace ที่ด้านบนขวา แล้วตรวจสอบลิงก์ว่าเป็นของ Workspace ที่เราเลือกหรือไม่ จากนั้นคลิก Allow

เมื่อเสร็จแล้วจะแสดงหน้าจอแบบนี้


ต่อไปคือการตั้งค่าใน Slack

เปิด Slack แล้วคลิก + ที่แท็บ Channels แล้วเลือก Create a channel

ครั้งนี้เราจะมาสร้างเป็น public channel ถ้าต้องการสร้างเป็น private channel ให้เปิดใช้งานที่ Make private
ที่นี้ให้ป้อน Name ที่ต้องการ เช่น tinnakorn-test-slack-chatbot แล้วคลิก Create

คลิก

เมื่อเสร็จแล้วจะได้ Channel แบบนี้

กลับมาที่หน้า Service AWS Chatbot แล้วคลิก Configure new channel ที่หัวข้อ Configured channels

ตั้งค่าหน้า Configure Slack channel ดังนี้
หัวข้อ Configuration details
Configuration name: tinnakorn-test-slack-chatbot (ป้อนชื่อตามต้องการ)

หัวข้อ Slack channel
Channel type: ⦿ Public (หากต้องการตั้งค่าเป็น Private ให้ดูที่ลิงก์บทความ วิธีแก้ปัญหาเมื่อไม่สามารถใช้ AWS Chatbot เชื่อมต่อกับ Private channel ของ Slack ได้ นี้)
Public channel name: tinnakorn-test-slack-chatbot (เลือก Channel ใน Slack ที่สร้างเมื่อสักครู่นี้)

หัวข้อ Permissions
Role name: tinnakorn-test-slack-chatbot (ป้อนชื่อ Role ที่ต้องการ)

Channel guardrail policies
Policy name: ค้นหา AdministratorAccess แล้วติ๊ก ✅ AdministratorAccess

หัวข้อ Notifications
SNS topics
Region: เลือก Asia Pacific - Singapore
Topics: ค้นหาและติ๊ก ✅ Topics ที่สร้างใน Amazon SNS เช่น ✅ tinnakorn-test-slack-topic
แล้วคลิก Configure

เมื่อตั้งค่า Channel สำหรับ Workspace เสร็จเรียบร้อยแล้ว จะแสดงหน้าจอแบบนี้

การตรวจสอบการตั้งค่า SNS

ตรวจสอบผลการลงทะเบียนใน Subscription

ไปที่ Service Amazon SNS > Topics > [your_topic] (เช่น tinnakorn-test-slack-topic) แล้วดูที่แท็บ Subscriptions ด้านล่าง จะเห็นว่า Subscriptions ถูกสร้างขึ้นโดยอัตโนมัติ เพียงเท่านี้ก็สามารถเชื่อมต่อ Chatbot กับ SNS เข้ากันได้แล้ว

สร้าง Amazon EventBridge Rule

ค้นหา ?︎ Amazon EventBridge แล้วคลิก Amazon EventBridge

คลิก Create rule

Step 1 Define rule detail:
Rule detail
Name: tinnakorn-test-slack-rule (ตั้งชื่อตามต้องการ)
Description: tinnakorn-test-slack-rule (ป้อนตามต้องการ)
Rule type: Rule with an event pattern
คลิก Next

Step 2 Build event pattern:
เลื่อนลงมาด้านล่างสุดที่หัวข้อ Event pattern แล้วคลิก Edit pattern

คัดลอกโค้ดด้านล่างนี้วางใน Event pattern ตามรูปภาพด้านล่าง แล้วคลิก Next

ในตัวอย่างนี้ จะแจ้งเตือนเมื่อ Severity เป็น "MEDIUM, HIGH, CRITICAL"
หากต้องการแจ้งเตือนแค่ตอนที่เป็น HIGH, CRITICAL ให้ลบ MEDIUM ออก

{
  "source": ["aws.inspector2"],
  "detail-type": ["Inspector2 Finding"],
  "detail": {
    "status": ["ACTIVE"],
    "severity": ["MEDIUM", "HIGH", "CRITICAL"]
  }
}

Step 3 Select target(s):
Target 1
Target types: AWS service
Select a target: เลือก SNS topic
Topic: ค้นหาและเลือก Topics ที่สร้างใน Amazon SNS เช่น ✅ tinnakorn-test-slack-topic
คลิก Next

Step 4 - optional Configure tags:
คลิก Next

Step 5 Review and create:
ตรวจสอบข้อมูลการตั้งค่าตั้งค่า Step 1 - Step 4 แล้วคลิก Create rule

เมื่อสร้างเสร็จแล้วค้นหา Rules ของเรา แล้วคลิกเข้าไป

เมื่อเข้ามาแล้ว จะแสดงหน้าจอแบบนี้

เพียงเท่านี้การตั้งค่าทั้งหมดก็เสร็จเรียบร้อยแล้ว ทีนี้ก็พร้อมที่จะลองส่งแจ้งเตือนผลลัพธ์ Inspector ไปยัง Slack แล้ว

การส่งแจ้งเตือนผลลัพธ์ Inspector ไปยัง Slack

ดูเงื่อนไขการสแกน Amazon EC2 และ Amazon ECR ได้ที่ลิงก์ของหัวข้อด้านล่างนี้

Inspector จะสแกนตามเงื่อนไข เมื่อ Inspector ตรวจพบช่องโหว่ ก็จะแจ้งเตือนไปยัง Slack ให้เราทราบ

ทีนี้ให้เปิด Slack ขึ้นมา แล้วไปที่ Channel ที่เราสร้างไว้ เช่น # tinnakorn-test-slack-chatbot จะเห็นว่ามีการแจ้งเตือนส่งเข้ามาแล้ว

เพียงเท่านี้เราก็สามารถส่งผลลัพธ์ที่ Inspector สแกนช่องโหว่ EC2 มาที่ Slack ได้แล้ว (ข้อมูลของ Instance ที่ถูกตั้งค่า Amazon SSM Agent ใน Account ทั้งหมดจะถูกส่งไปยัง Slack)

สรุป

จากที่ผมได้ลองใช้งานในครั้งนี้คือการส่งผลการสแกนของ EC2 (Windows Server) จาก Inspector ไปยัง Slack ถ้ามีเหตุการณ์เกิดขึ้นใน Instance ที่เรากำลังใช้งาน เช่น "มีการติดตั้งหรือถอนการติดตั้ง Software packages ใหม่ใน Instance" ตัว Inspector ก็จะสแกน Instance นั้น แล้วถ้าตรวจพบช่องโหว่ การแจ้งเตือนจะถูกส่งไปที่ Slack โดยส่วนตัวผมคิดว่า Inspector เป็นเหมือนผู้ช่วยที่เพิ่มความปลอดภัยและอำนวยความสะดวกในการใช้งานโดยที่เราไม่ต้องคอยตรวจสอบช่องโหว่ด้วยตัวเอง

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP จากบริษัท Classmethod (Thailand) ครับ !

Link อ้างอิง