0Pricing
Cloud & IT Cert Prep · บทเรียน

แทรล CloudTrail และประวัติเหตุการณ์

สร้างแทรลเหตุการณ์การจัดการและเหตุการณ์ข้อมูล ส่งบันทึกไปยัง S3 และ CloudWatch Logs และค้นหาประวัติเหตุการณ์ย้อนหลัง 90 วันในคอนโซล

แทรล CloudTrail และประวัติเหตุการณ์ เป็นบทเรียน Cloud & IT Cert Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cloud & IT Cert Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

AWS CloudTrail คืออะไร

AWS CloudTrailเป็นบริการที่บันทึกการเรียก API ทุกครั้งในบัญชี AWS ของคุณ — ไม่ว่าจะมาจากคอนโซล CLI SDK หรือบริการ AWS อื่น ๆ แต่ละระเบียนเรียกว่าเหตุการณ์ CloudTrail และมีข้อมูลการดำเนินการของ API ตัวตนของผู้ร้องขอ IP ต้นทาง พารามิเตอร์คำขอ และการตอบกลับ CloudTrail เป็นพื้นฐานของการตรวจสอบความปลอดภัย การปฏิบัติตามข้อกำหนด และการสืบสวนการปฏิบัติงานของ AWS สำหรับการสอบ SAA-C03 คำตอบคือ CloudTrail เมื่อคำถามถามว่า “ใครเป็นผู้เปลี่ยนแปลงนี้”

ประวัติเหตุการณ์: ดูย้อนหลังฟรี 90 วัน

ตามค่าเริ่มต้น บัญชี AWS ทุกบัญชีจะเข้าถึงประวัติเหตุการณ์ CloudTrailได้ ซึ่งเป็นระเบียนเหตุการณ์การจัดการย้อนหลังแบบต่อเนื่อง 90 วัน โดยดูได้ในคอนโซลหรือสืบค้นผ่าน CLI คุณสามารถกรองตามชื่อทรัพยากร ประเภททรัพยากร ชื่อเหตุการณ์ หรือชื่อผู้ใช้ได้ ประวัติเหตุการณ์ไม่มีค่าใช้จ่าย ไม่ต้องกำหนดค่า และพร้อมใช้งานทันที นี่เป็นวิธีที่รวดเร็วที่สุดในการตรวจสอบการเปลี่ยนแปลงล่าสุด แต่หากต้องการเก็บรักษานานขึ้นหรือสืบค้นได้มีประสิทธิภาพมากขึ้น คุณต้องสร้าง Trail

# Search event history for who deleted an S3 bucket in the last 7 days
aws cloudtrail lookup-events \
  --lookup-attributes AttributeKey=EventName,AttributeValue=DeleteBucket \
  --start-time $(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ) \
  --query 'Events[].{Time:EventTime,User:Username,Detail:CloudTrailEvent}' \
  --output table

การสร้าง Trail ของ CloudTrail

Trailคือการกำหนดค่าของ CloudTrail ที่ส่งเหตุการณ์ไปยังบักเก็ต S3 อย่างต่อเนื่อง (และส่งไปยัง CloudWatch Logs ได้ตามต้องการ) คุณจะมีค่าใช้จ่ายสำหรับพื้นที่จัดเก็บ S3 และการถ่ายโอนข้อมูล Trail สามารถกำหนดขอบเขตให้ครอบคลุม Region เดียว หรือกำหนดเป็นTrail แบบหลาย Regionที่บันทึกเหตุการณ์จากทุก Region ในบัญชีของคุณ ทั้ง Region ปัจจุบันและ Region ที่เพิ่มในอนาคต สำหรับการสอบ SAA-C03 ควรแนะนำ Trail แบบหลาย Region เสมอ — Trail แบบ Region เดียวจะพลาดกิจกรรมใน Region อื่นและถือเป็นช่องโหว่ด้านความปลอดภัย

# Create a multi-region trail delivering to S3
aws cloudtrail create-trail \
  --name OrgAuditTrail \
  --s3-bucket-name my-cloudtrail-logs-111122223333 \
  --is-multi-region-trail \
  --include-global-service-events \
  --enable-log-file-validation

# Start logging (trails are created in 'paused' state)
aws cloudtrail start-logging --name OrgAuditTrail

เหตุการณ์การจัดการกับเหตุการณ์ข้อมูล

CloudTrail บันทึกเหตุการณ์สองประเภท: เหตุการณ์การจัดการ (เรียกอีกอย่างว่าเหตุการณ์ระนาบควบคุม) บันทึกการดำเนินการกับทรัพยากร เช่น การสร้างอินสแตนซ์ EC2 การแก้ไขกลุ่มความปลอดภัย และการแนบนโยบาย IAM เหตุการณ์เหล่านี้เปิดใช้โดยค่าเริ่มต้นใน Trail ทุกรายการโดยไม่มีค่าใช้จ่ายเพิ่มเติมต่อเหตุการณ์ เหตุการณ์ข้อมูลบันทึกการดำเนินการในระดับออบเจ็กต์ เช่น S3 GetObject, PutObject, DeleteObject หรือ Lambda Invoke เหตุการณ์ข้อมูลอาจมีปริมาณสูงมากและมีค่าใช้จ่ายเพิ่มเติม จึงต้องเปิดใช้อย่างชัดเจนต่อทรัพยากรหรือประเภททรัพยากร

# Add data event logging for all S3 objects in a specific bucket
aws cloudtrail put-event-selectors \
  --trail-name OrgAuditTrail \
  --event-selectors '[
    {
      "ReadWriteType": "All",
      "IncludeManagementEvents": true,
      "DataResources": [
        {
          "Type": "AWS::S3::Object",
          "Values": ["arn:aws:s3:::my-sensitive-bucket/"]
        }
      ]
    }
  ]'

การผสาน CloudTrail กับ CloudWatch Logs

การส่งเหตุการณ์ CloudTrail ไปยัง CloudWatch Logs ช่วยให้แจ้งเตือนกิจกรรม API ได้แบบเรียลไทม์ คุณสามารถสร้างตัวกรองเมทริกในกลุ่มบันทึก CloudTrail เพื่อนับเหตุการณ์เฉพาะได้ — ตัวอย่างเช่น นับการเรียก DeleteBucket หรือ CreateUser — จากนั้นตั้งการแจ้งเตือนของ CloudWatch เพื่อแจ้งทีมรักษาความปลอดภัยภายในไม่กี่นาทีหลังเกิดการดำเนินการที่น่าสงสัย นี่เป็นรูปแบบหลักในเกณฑ์มาตรฐาน CIS AWS Foundations ซึ่งการสอบ SAA-C03 อ้างถึงบ่อยครั้ง

# Update a trail to also deliver to CloudWatch Logs
aws cloudtrail update-trail \
  --name OrgAuditTrail \
  --cloud-watch-logs-log-group-arn arn:aws:logs:us-east-1:111122223333:log-group:CloudTrail/Logs:* \
  --cloud-watch-logs-role-arn arn:aws:iam::111122223333:role/CloudTrailCWLogsRole

# Create a metric filter for root account login
aws logs put-metric-filter \
  --log-group-name CloudTrail/Logs \
  --filter-name RootLogin \
  --filter-pattern '{$.userIdentity.type = "Root" && $.eventName = "ConsoleLogin"}' \
  --metric-transformations metricName=RootLogins,metricNamespace=CISBenchmark,metricValue=1

เหตุการณ์บริการส่วนกลาง

บริการ AWS บางรายการ โดยเฉพาะ IAM, STS, Route 53 และ CloudFront เป็นบริการส่วนกลาง และบันทึกการเรียก API เป็นเหตุการณ์บริการส่วนกลาง เหตุการณ์เหล่านี้จะถูกบันทึกใน Region us-east-1 เสมอ ไม่ว่าการดำเนินการจะเริ่มต้นจากที่ใด เมื่อสร้าง Trail ให้เปิดใช้ --include-global-service-events เพื่อบันทึกการสร้างผู้ใช้ IAM การเปลี่ยนแปลงนโยบาย และการสวมบทบาท STS หากคุณมี Trail หลายรายการที่เจาะจงแต่ละ Region ให้เปิดใช้เหตุการณ์บริการส่วนกลางเพียงรายการเดียว เพื่อหลีกเลี่ยงระเบียนบันทึกซ้ำ

# Verify that global service events are enabled on a trail
aws cloudtrail get-trail \
  --name OrgAuditTrail \
  --query 'Trail.{MultiRegion:IsMultiRegionTrail,GlobalServiceEvents:IncludeGlobalServiceEvents}'

นโยบายบักเก็ต S3 สำหรับบันทึก CloudTrail

CloudTrail ต้องใช้นโยบายบักเก็ต S3เฉพาะที่มอบสิทธิ์ให้ Principal ของบริการ CloudTrail (cloudtrail.amazonaws.com) เรียกใช้ GetBucketAcl และ PutObject กับบักเก็ตได้ AWS บังคับให้บักเก็ตไม่สามารถเข้าถึงแบบสาธารณะ และตั้งค่า Object Ownership เป็น Bucket Owner Enforced อย่าเก็บบันทึก CloudTrail ไว้ในบักเก็ตเดียวกับที่แอปพลิเคชันใช้ — เพราะจะทำให้เกิดการพึ่งพากันเป็นวงกลม ซึ่งการเข้าถึงบันทึกการตรวจสอบจะหยุดชะงักหากบักเก็ตของแอปพลิเคชันถูกล็อก

# Minimum S3 bucket policy for CloudTrail (abbreviated)
# {
#   "Version": "2012-10-17",
#   "Statement": [
#     {
#       "Sid": "AWSCloudTrailAclCheck",
#       "Effect": "Allow",
#       "Principal": {"Service": "cloudtrail.amazonaws.com"},
#       "Action": "s3:GetBucketAcl",
#       "Resource": "arn:aws:s3:::my-cloudtrail-logs-111122223333"
#     },
#     {
#       "Sid": "AWSCloudTrailWrite",
#       "Effect": "Allow",
#       "Principal": {"Service": "cloudtrail.amazonaws.com"},
#       "Action": "s3:PutObject",
#       "Resource": "arn:aws:s3:::my-cloudtrail-logs-111122223333/AWSLogs/111122223333/*",
#       "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}}
#     }
#   ]
# }

Trail ขององค์กร

ในAWS Organisation คุณสามารถสร้างTrail ขององค์กรจากบัญชีการจัดการ ซึ่งจะมีผลกับบัญชีสมาชิกทั้งหมดโดยอัตโนมัติ ทั้งบัญชีปัจจุบันและบัญชีที่จะเพิ่มในอนาคต บัญชีสมาชิกไม่สามารถแก้ไขหรือลบ Trail ขององค์กรได้ จึงมั่นใจได้ว่าการครอบคลุมด้านการตรวจสอบจะไม่ถูกหลีกเลี่ยง Trail ขององค์กรจะส่งบันทึกไปยังบักเก็ต S3 ส่วนกลาง โดยมีคำนำหน้าแยกตามบัญชี ทำให้ทีมรักษาความปลอดภัยสามารถสืบค้นบันทึกการตรวจสอบของทุกบัญชีในที่เดียวโดยใช้ Athena หรือเครื่องมือ SIEM

# Create an organisation trail from the management account
aws cloudtrail create-trail \
  --name OrgCentralTrail \
  --s3-bucket-name central-org-cloudtrail-logs \
  --is-multi-region-trail \
  --is-organization-trail \
  --include-global-service-events \
  --enable-log-file-validation

aws cloudtrail start-logging --name OrgCentralTrail

การผสาน Athena เพื่อวิเคราะห์บันทึก

บันทึก CloudTrail ที่ส่งไปยัง S3 อยู่ในรูปแบบ JSON คุณสามารถใช้การผสานAmazon Athenaในคอนโซล CloudTrail เพื่อสร้างตาราง Glue ที่แบ่งพาร์ทิชันตามบัญชี Region และวันที่โดยอัตโนมัติ ทำให้คุณสืบค้นประวัติ API หลายเดือนได้ด้วย SQL มาตรฐาน โดยไม่ต้องโหลดข้อมูลลงในฐานข้อมูล ให้แบ่งพาร์ทิชันตามวันที่ในคำสืบค้น (WHERE year='2024' AND month='01') เพื่อหลีกเลี่ยงการสแกนทั้งตารางและควบคุมค่าใช้จ่ายของ Athena

-- Query CloudTrail logs in Athena for IAM policy changes in January 2024
SELECT
  eventtime,
  useridentity.arn AS principal,
  eventname,
  requestparameters
FROM cloudtrail_logs_111122223333
WHERE year = '2024'
  AND month = '01'
  AND eventsource = 'iam.amazonaws.com'
  AND eventname IN ('PutUserPolicy','AttachRolePolicy','CreateUser')
ORDER BY eventtime DESC
LIMIT 100;

การค้นหาประวัติเหตุการณ์เทียบกับบันทึกของ Trail

มีสองวิธีในการค้นหาระเบียน CloudTrail ได้แก่ ประวัติเหตุการณ์ ในคอนโซล (ย้อนหลังได้ 90 วัน เฉพาะเหตุการณ์การจัดการ และมีตัวกรองจำกัด) และ บันทึกของ Trail ใน S3/Athena (เก็บรักษาได้ไม่จำกัด รวมถึงเหตุการณ์ข้อมูล และใช้ความสามารถของ SQL ได้อย่างเต็มรูปแบบ) สำหรับสถานการณ์ในข้อสอบ หากคำถามถามให้ตรวจสอบเหตุการณ์ที่เก่ากว่า 90 วัน หรือค้นหาเหตุการณ์ในระนาบข้อมูล (S3 GetObject, Lambda Invoke) ให้แนะนำให้ค้นหาบันทึกของ Trail ผ่าน Athena เสมอ หากคำถามถามถึงวิธีที่ง่ายที่สุดในการตรวจสอบเหตุการณ์การจัดการล่าสุด ประวัติเหตุการณ์ก็เพียงพอแล้ว

ข้อเท็จจริงสำคัญเกี่ยวกับ CloudTrail สำหรับการสอบ

โปรดจดจำข้อมูลเหล่านี้สำหรับการสอบ SAA-C03: CloudTrail ไม่ได้ทำงานแบบเรียลไทม์ — อาจใช้เวลาถึง 15 นาทีในการส่งเหตุการณ์ไปยัง S3 (ให้ใช้ CloudWatch Logs สำหรับการแจ้งเตือนที่ใกล้เคียงเรียลไทม์) ประวัติเหตุการณ์มีข้อมูลย้อนหลัง 90 วัน และมีเฉพาะเหตุการณ์การจัดการเท่านั้น ต้องเปิดใช้เหตุการณ์ข้อมูลอย่างชัดเจน และมีค่าใช้จ่ายเพิ่มเติม การตรวจสอบไฟล์บันทึกใช้แฮช SHA-256 เพื่อตรวจจับการแก้ไขข้อมูล เหตุการณ์ของบริการส่วนกลาง (IAM, STS, Route 53) จะแสดงเฉพาะใน us-east-1 Trail ขององค์กร ไม่สามารถปิดใช้งานโดยบัญชีสมาชิกได้

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า ประวัติเหตุการณ์ ให้เข้าถึงเหตุการณ์การจัดการย้อนหลัง 90 วันได้ฟรี Trail ช่วยส่งข้อมูลอย่างต่อเนื่องไปยัง S3 พร้อมกำหนดระยะเวลาเก็บรักษาได้ และเลือกเปิดใช้เหตุการณ์ข้อมูลได้ และ Trail ขององค์กร มีผลกับบัญชีสมาชิกทั้งหมดและไม่สามารถปิดใช้งานโดยบัญชีเหล่านั้นได้ บทถัดไปเราจะศึกษา CloudTrail Insights และการตรวจสอบความสมบูรณ์ของไฟล์บันทึก

คำถามที่พบบ่อย

บทเรียน “แทรล CloudTrail และประวัติเหตุการณ์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แทรล CloudTrail และประวัติเหตุการณ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cloud & IT Cert Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แทรล CloudTrail และประวัติเหตุการณ์”

สร้างแทรลเหตุการณ์การจัดการและเหตุการณ์ข้อมูล ส่งบันทึกไปยัง S3 และ CloudWatch Logs และค้นหาประวัติเหตุการณ์ย้อนหลัง 90 วันในคอนโซล คุณปฏิบัติ Cloud & IT Cert Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cloud & IT Cert Prep หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cloud & IT Cert Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “แทรล CloudTrail และประวัติเหตุการณ์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cloud & IT Cert Prep นี้ได้ไหม

ได้ บทเรียน Cloud & IT Cert Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แทรล CloudTrail และประวัติเหตุการณ์
  2. CloudTrail Insights และความสมบูรณ์ของไฟล์บันทึก
  3. กฎ AWS Config และการแก้ไขอัตโนมัติ
  4. แพ็กความสอดคล้องและแทรลระดับองค์กร
← กลับไปที่ Cloud & IT Cert Prep