ทดลองส่ง Amazon Inspector โดย AWS Chatbot ไปยัง Slack
สวัสดีครับ 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
แล้วตั้งค่า 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
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) ครับ !