กฎ AWS Config และการแก้ไขอัตโนมัติ
นำกฎ Config ที่มีการจัดการและกฎแบบกำหนดเองไปใช้งานเพื่อตรวจจับทรัพยากรที่ไม่เป็นไปตามข้อกำหนด และใช้เอกสาร SSM Automation เพื่อแก้ไขโดยอัตโนมัติ
กฎ AWS Config และการแก้ไขอัตโนมัติ เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
AWS Config คืออะไร
AWS Config เป็นบริการตรวจสอบการกำหนดค่าอย่างต่อเนื่อง ซึ่งบันทึกสถานะการกำหนดค่าของทรัพยากร AWS ของคุณตามช่วงเวลา และประเมินการกำหนดค่าเหล่านั้นตามกฎที่ต้องการ ต่างจาก CloudTrail (ซึ่งบันทึกว่าใครทำอะไร) AWS Config ตอบคำถามว่า ทรัพยากรนี้มีลักษณะอย่างไรในตอนนี้ และ ในช่วงเวลาใดเวลาหนึ่งที่ผ่านมา ทรัพยากรนี้มีลักษณะอย่างไร นอกจากนี้ยังตอบได้ว่า การกำหนดค่านี้เป็นไปตามนโยบายของฉันหรือไม่ จึงเป็นบริการหลักสำหรับการกำกับดูแลและการปฏิบัติตามข้อกำหนด
รายการการกำหนดค่าและประวัติการกำหนดค่า
เมื่อ AWS Config บันทึกทรัพยากร ระบบจะสร้าง รายการการกำหนดค่า (CI) ซึ่งเป็นภาพบันทึกคุณลักษณะ ความสัมพันธ์ และข้อมูลเมตาของทรัพยากร ณ ช่วงเวลาหนึ่ง ทุกครั้งที่ทรัพยากรมีการเปลี่ยนแปลง ระบบจะบันทึก CI รายการใหม่ AWS Config จะเก็บรักษา ประวัติการกำหนดค่าทั้งหมดของทรัพยากรแต่ละรายการ ทำให้คุณดูได้ว่ากลุ่มความปลอดภัยเปลี่ยนแปลงไปอย่างไรตลอดหลายเดือน และกฎถูกเพิ่มหรือลบเมื่อใด CI จะถูกส่งไปยังบัคเก็ต S3 และเลือกส่งไปยัง CloudWatch Events ได้
# Get the full configuration history for an EC2 security group
aws configservice get-resource-config-history \
--resource-type AWS::EC2::SecurityGroup \
--resource-id sg-0abc1234def567890 \
--limit 10 \
--query 'configurationItems[].{Time:configurationItemCaptureTime,Status:configurationItemStatus}'การเปิดใช้ AWS Config
หากต้องการเริ่มใช้ AWS Config ให้สร้าง ตัวบันทึกการกำหนดค่า (ระบุประเภททรัพยากรที่จะบันทึก) และ ช่องทางการส่งข้อมูล (ระบุบัคเก็ต S3 และหัวข้อ SNS ที่เป็นตัวเลือกสำหรับการแจ้งเตือนการเปลี่ยนแปลง) คุณสามารถบันทึกประเภททรัพยากรที่รองรับทั้งหมด หรือเลือกเฉพาะบางประเภทได้ ตัวรวมข้อมูลการกำหนดค่าช่วยให้คุณรวมข้อมูล Config จากหลายบัญชีและหลายรีเจียนไว้ในมุมมองเดียว เพื่อรายงานการปฏิบัติตามข้อกำหนดทั่วทั้งองค์กร
# Enable AWS Config recording for all resource types
aws configservice put-configuration-recorder \
--configuration-recorder \
name=default,roleARN=arn:aws:iam::111122223333:role/AWSConfigRole \
--recording-group allSupported=true,includeGlobalResourceTypes=true
# Set up delivery channel
aws configservice put-delivery-channel \
--delivery-channel \
name=default,s3BucketName=my-config-bucket-111122223333,snsTopicARN=arn:aws:sns:us-east-1:111122223333:ConfigChanges
aws configservice start-configuration-recorder --configuration-recorder-name defaultกฎ AWS Config: กฎที่ AWS จัดการให้
กฎ Configกำหนดสถานะการกำหนดค่าที่ต้องการสำหรับทรัพยากรของคุณ กฎ Config ที่ AWS จัดการให้เป็นกฎที่ AWS สร้างไว้ล่วงหน้า ครอบคลุมการตรวจสอบการปฏิบัติตามข้อกำหนดทั่วไป ตัวอย่างเช่น s3-bucket-public-read-prohibited ตรวจสอบว่าบัคเก็ต S3 ไม่อนุญาตให้อ่านแบบสาธารณะ ec2-instance-no-public-ip ตรวจสอบว่าอินสแตนซ์ EC2 ไม่มี IP สาธารณะ และ iam-password-policy ตรวจสอบว่านโยบายรหัสผ่านของบัญชีเป็นไปตามข้อกำหนดด้านความซับซ้อน มี prosgRule ที่ AWS จัดการให้พร้อมใช้งานมากกว่า 300 รายการ
# Add the managed rule to check S3 buckets are not publicly readable
aws configservice put-config-rule \
--config-rule '{
"ConfigRuleName": "s3-bucket-public-read-prohibited",
"Source": {
"Owner": "AWS",
"SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED"
},
"Scope": {
"ComplianceResourceTypes": ["AWS::S3::Bucket"]
}
}'
# View compliance status of all rules
aws configservice describe-compliance-by-config-rule \
--query 'ComplianceByConfigRules[].{Rule:ConfigRuleName,Compliance:Compliance.ComplianceType}'กฎ Config แบบกำหนดเองด้วย Lambda
เมื่อไม่มีกฎที่ AWS จัดการให้ครอบคลุมข้อกำหนดของคุณ คุณสามารถเขียน กฎ Config แบบกำหนดเองโดยใช้ฟังก์ชัน AWS Lambda ได้ Lambda จะได้รับรายการการกำหนดค่าเป็นข้อมูลเหตุการณ์ และต้องส่งผลการตัดสินเป็น COMPLIANT หรือ NON_COMPLIANT กฎแบบกำหนดเองสามารถบังคับใช้หลักเกณฑ์การตั้งชื่อเฉพาะขององค์กร แท็กที่จำเป็น รหัส AMI ที่อนุมัติ หรือ ตรรกะใด ๆ ที่ทีมกำกับดูแลการปฏิบัติตามข้อกำหนดของคุณต้องการ กฎสามารถประเมินผล เมื่อมีการเปลี่ยนแปลง (เมื่อทรัพยากรเปลี่ยนแปลง) เป็นระยะ (ทุก 1/3/6/12/24 ชั่วโมง) หรือทั้งสองแบบได้
# Register a custom Lambda-backed Config rule
aws configservice put-config-rule \
--config-rule '{
"ConfigRuleName": "required-tags-enforcer",
"Source": {
"Owner": "CUSTOM_LAMBDA",
"SourceIdentifier": "arn:aws:lambda:us-east-1:111122223333:function:RequiredTagsChecker",
"SourceDetails": [{
"EventSource": "aws.config",
"MessageType": "ConfigurationItemChangeNotification"
}]
},
"Scope": {
"ComplianceResourceTypes": ["AWS::EC2::Instance","AWS::S3::Bucket"]
}
}'กฎเชิงรุกด้วย CloudFormation Guard
Config ยังรองรับ กฎเชิงรุกโดยใช้ AWS CloudFormation Guard ซึ่งเป็นภาษานโยบายในรูปแบบโค้ด กฎเชิงรุกจะประเมินทรัพยากร ก่อนที่ทรัพยากรจะถูกสร้างผ่าน CloudFormation, AWS CDK หรือ Terraform Cloud โดยตรวจจับการกำหนดค่าที่ไม่เป็นไปตามข้อกำหนดตั้งแต่เวลานำไปใช้งาน แทนที่จะรอจนทรัพยากรเหล่านั้นอยู่ในระบบจริง วิธีนี้ช่วยเลื่อนการตรวจสอบการปฏิบัติตามข้อกำหนดไปไว้ตั้งแต่ต้นในกระบวนการทำงานโครงสร้างพื้นฐาน การประเมินเชิงรุกเป็นฟีเจอร์ที่ใหม่กว่า ซึ่งข้อสอบ SAA-C03 อาจอ้างถึงในสถานการณ์การกำกับดูแลแบบ shift-left
การแก้ไขปัญหาแบบอัตโนมัติด้วย SSM
สามารถจับคู่กฎ Config กับ การดำเนินการแก้ไขอัตโนมัติ เพื่อแก้ไขทรัพยากรที่ไม่เป็นไปตามข้อกำหนดโดยไม่ต้องมีผู้ดำเนินการ การดำเนินการแก้ไขคือ เอกสาร Automation ของ AWS Systems Manager (SSM) ตัวอย่างเช่น หากบัคเก็ต S3 ไม่เป็นไปตามข้อกำหนดเนื่องจากมีผู้เปิดใช้การเข้าถึงแบบสาธารณะ Config สามารถเรียกใช้เอกสาร SSM AWS-DisableS3BucketPublicReadWrite โดยอัตโนมัติ เพื่อเปิดใช้บล็อกการเข้าถึงแบบสาธารณะของบัคเก็ตอีกครั้ง การแก้ไขอาจเป็นแบบอัตโนมัติ (ดำเนินการทันที) หรือแบบด้วยตนเอง (ทริกเกอร์เมื่อมีการเรียกใช้ตามต้องการ)
# Add automatic remediation to a Config rule
aws configservice put-remediation-configurations \
--remediation-configurations '[
{
"ConfigRuleName": "s3-bucket-public-read-prohibited",
"TargetType": "SSM_DOCUMENT",
"TargetId": "AWS-DisableS3BucketPublicReadWrite",
"Parameters": {
"S3BucketName": {"ResourceValue": {"Value": "RESOURCE_ID"}},
"AutomationAssumeRole": {"StaticValue": {"Values": ["arn:aws:iam::111122223333:role/ConfigRemediationRole"]}}
},
"Automatic": true,
"MaximumAutomaticAttempts": 3,
"RetryAttemptSeconds": 60
}
]'ไทม์ไลน์ Config และความสัมพันธ์ของทรัพยากร
Resource Timeline ของ AWS Config ในคอนโซลจะแสดงการเปลี่ยนแปลงการกำหนดค่าทั้งหมดของทรัพยากรในรูปแบบไทม์ไลน์ คุณสามารถเลื่อนย้อนกลับไปยังช่วงเวลาใดก็ได้เพื่อดูว่าทรัพยากรมีสถานะอย่างไรในขณะนั้น รวมถึงความสัมพันธ์กับทรัพยากรอื่น ๆ เช่น กลุ่ม Security ที่แนบอยู่ หรือบทบาท IAM ที่เชื่อมโยงอยู่ เมื่อคลิกความสัมพันธ์ ระบบจะนำทางไปยังไทม์ไลน์ของทรัพยากรที่เกี่ยวข้อง ฟีเจอร์นี้ทำให้ Config มีประโยชน์อย่างมากสำหรับการวิเคราะห์สาเหตุรากฐาน เพราะคุณสามารถระบุได้อย่างแม่นยำว่าการเปลี่ยนแปลงใดทำให้ระบบ Production ขัดข้อง
# Get current compliance status for all EC2 instances
aws configservice get-compliance-details-by-resource \
--resource-type AWS::EC2::Instance \
--resource-id i-0123456789abcdef0 \
--query 'EvaluationResults[].{Rule:EvaluationResultIdentifier.EvaluationResultQualifier.ConfigRuleName,Compliance:ComplianceType}'การรวม Config ข้ามบัญชี
ตัวรวบรวมการกำหนดค่าจะรวบรวมข้อมูล Config จาก AWS หลายบัญชีและหลายรีเจียนมาไว้ในบัญชีเดียว เพื่อจัดทำรายงาน Compliance แบบรวมศูนย์ ใน AWS Organisation คุณสามารถสร้างตัวรวบรวมในบัญชีการจัดการ ซึ่งจะรวมบัญชีสมาชิกทั้งหมดโดยอัตโนมัติโดยไม่ต้องให้สิทธิ์แยกเป็นรายบัญชี ตัวรวบรวมรองรับการสืบค้นด้วย Advanced Queries ซึ่งเป็นอินเทอร์เฟซลักษณะเดียวกับ SQL สำหรับค้นหาทรัพยากรที่ไม่เป็นไปตามข้อกำหนดทั้งหมดทั่วทั้ง Organisation ได้ภายในไม่กี่วินาที
# Query all non-compliant resources across an organisation using Advanced Query
aws configservice select-aggregate-resource-config \
--configuration-aggregator-name OrgAggregator \
--expression "SELECT resourceId, resourceType, accountId, awsRegion
WHERE complianceType = 'NON_COMPLIANT'
AND resourceType = 'AWS::S3::Bucket'"
--query 'Results'การแก้ไขปัญหาในวงกว้าง
เมื่อมีทรัพยากรที่ไม่เป็นไปตามข้อกำหนดหลายพันรายการ ข้อยกเว้นการแก้ไขปัญหาของ Config จะช่วยให้คุณยกเว้นทรัพยากรเฉพาะรายการได้ตามช่วงเวลาที่กำหนด พร้อมระบุเหตุผลไว้อย่างเป็นเอกสาร เพื่อหลีกเลี่ยงการแก้ไขผลตรวจที่เป็นบวกเท็จสำหรับกรณีพิเศษที่ถูกต้องตามการใช้งาน สำหรับการล้างข้อมูลขนาดใหญ่ คุณสามารถเรียกใช้การแก้ไขปัญหาด้วยตนเองเป็นชุดจากคอนโซล หรือใช้การเชื่อมโยงของ Systems Manager State Manager เพื่อใช้การกำหนดค่าที่ต้องการกับกลุ่มอินสแตนซ์ EC2 ตามกำหนดเวลา โดยผสานการตรวจจับของ Config เข้ากับการบังคับใช้ของ SSM
# Add a remediation exception for a specific resource
aws configservice put-remediation-exceptions \
--config-rule-name s3-bucket-public-read-prohibited \
--resource-keys ResourceType=AWS::S3::Bucket,ResourceId=my-public-website-bucket \
--message 'Static website hosting requires public access' \
--expiration-time 2025-01-01T00:00:00Zการเปรียบเทียบ AWS Config กับ CloudTrail
คำถามทั่วไปของ SAA-C03 คือการแยกความแตกต่างระหว่าง Config กับ CloudTrail CloudTrail ตอบคำถามว่า ใครทำอะไร เมื่อไร และจากที่ใด (บันทึกการตรวจสอบการเรียก API) ส่วน AWS Config ตอบคำถามว่า ขณะนี้ทรัพยากรมีลักษณะอย่างไร และในช่วงเวลาที่ผ่านมาเคยมีลักษณะอย่างไร (ประวัติสถานะการกำหนดค่าและ Compliance) ทั้งสองบริการทำงานเสริมกัน — CloudTrail บอกว่ามีผู้เรียกใช้ ModifySecurityGroup เมื่อเวลา 15:00 น. ขณะที่ Config แสดงสถานะของกลุ่ม Security ก่อนและหลังการเปลี่ยนแปลง ใช้ทั้งสองบริการร่วมกันเพื่อให้การกำกับดูแลด้าน Security ครบถ้วน
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า AWS Config บันทึกสถานะการกำหนดค่าตามช่วงเวลา และประเมินทรัพยากรตามกฎ Compliance, กฎที่จัดการให้และกฎแบบกำหนดเองจะตรวจสอบแอตทริบิวต์ของทรัพยากรหลายร้อยรายการด้วยการประเมินโดยอัตโนมัติหรือตามคำขอ และ การแก้ไขปัญหาด้วย SSM Automation สามารถแก้ไขทรัพยากรที่ไม่เป็นไปตามข้อกำหนดได้โดยอัตโนมัติโดยไม่ต้องมีมนุษย์ดำเนินการ บทถัดไปเราจะสำรวจ Conformance Packs และ Organisation Trails สำหรับการกำกับดูแลระดับองค์กร
คำถามที่พบบ่อย
บทเรียน “กฎ AWS Config และการแก้ไขอัตโนมัติ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “กฎ AWS Config และการแก้ไขอัตโนมัติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “กฎ AWS Config และการแก้ไขอัตโนมัติ”
นำกฎ Config ที่มีการจัดการและกฎแบบกำหนดเองไปใช้งานเพื่อตรวจจับทรัพยากรที่ไม่เป็นไปตามข้อกำหนด และใช้เอกสาร SSM Automation เพื่อแก้ไขโดยอัตโนมัติ คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “กฎ AWS Config และการแก้ไขอัตโนมัติ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม
ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แทรล CloudTrail และประวัติเหตุการณ์
- CloudTrail Insights และความสมบูรณ์ของไฟล์บันทึก
- กฎ AWS Config และการแก้ไขอัตโนมัติ
- แพ็กความสอดคล้องและแทรลระดับองค์กร