นโยบาย Sentinel เพื่อการกำกับดูแล
เรียนรู้การเขียนและบังคับใช้นโยบายในรูปแบบโค้ดด้วย HashiCorp Sentinel เพื่อรับรองการปฏิบัติตามข้อกำหนดและการกำกับดูแลในการปรับใช้ Terraform
นโยบาย Sentinel เพื่อการกำกับดูแล เป็นบทเรียน Terraform Infrastructure as Code ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Terraform Infrastructure as Code และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Terraform Infrastructure as Code มีบทเรียนทั้งหมด 4 บทเรียน
บทนำสู่นโยบายในรูปแบบโค้ดและ Sentinel
จะเป็นอย่างไรหากคุณสามารถตรวจสอบโดยอัตโนมัติว่าการปรับใช้โครงสร้างพื้นฐานเป็นไปตามกฎที่กำหนด นี่คือพลังของ นโยบายในรูปแบบโค้ด (PaC) PaC จะกำหนดกฎสำหรับการสร้างและแก้ไขโครงสร้างพื้นฐานในรูปแบบที่เขียนโปรแกรมได้ ทำให้การกำกับดูแลเข้ามาเป็นส่วนหนึ่งของกระบวนการพัฒนาของคุณ โดย HashiCorp Sentinel เป็นเฟรมเวิร์ก PaC ที่ทรงพลังซึ่งออกแบบมาเพื่อจุดประสงค์นี้
บทบาทของ Sentinel ร่วมกับ Terraform
Sentinel ผสานการทำงานโดยตรงกับ Terraform Cloud และ Terraform Enterprise โดยทำหน้าที่เป็นผู้คัดกรอง ตรวจประเมินแผนการทำงานของ Terraform ก่อน ที่จะนำการเปลี่ยนแปลงใด ๆ ไปใช้กับสภาพแวดล้อมคลาวด์ของคุณ ขั้นตอนสำคัญนี้ช่วยป้องกันไม่ให้มีการจัดเตรียมโครงสร้างพื้นฐานที่ไม่เป็นไปตามข้อกำหนดหรือไม่ปลอดภัย และช่วยบังคับใช้กฎได้ล่วงหน้า
นโยบายและระดับการบังคับใช้
นโยบาย Sentinel คือชุดกฎที่เขียนด้วยภาษา Sentinel เมื่อมีการเรียกใช้นโยบาย นโยบายจะส่งคืนค่า true (ผ่าน) หรือ false (ไม่ผ่าน) คุณสามารถกำหนดค่านโยบายให้มีระดับการบังคับใช้ต่างกันได้:
- คำแนะนำ: แจ้งเตือนเมื่อพบการละเมิด แต่ยังอนุญาตให้ดำเนินการต่อ
- บังคับแบบผ่อนปรน: ต้องมีการยกเว้นอย่างชัดเจนจึงจะดำเนินการต่อด้วยการเปลี่ยนแปลงที่ไม่เป็นไปตามข้อกำหนดได้
- บังคับแบบเข้มงวด: ปิดกั้นการดำเนินการที่ไม่เป็นไปตามข้อกำหนดทั้งหมด และกำหนดให้ต้องปฏิบัติตามนโยบาย
โครงสร้างนโยบาย Sentinel
นโยบาย Sentinel ถูกกำหนดไว้ในไฟล์ .sentinel โดยทั่วไปจะประกอบด้วยการนำเข้า กฎ และเงื่อนไขหลัก กฎ main จะเป็นตัวกำหนดผลลัพธ์ว่านโยบายผ่านหรือไม่ผ่าน
นโยบายพื้นฐานอาจมีลักษณะดังนี้:
import "tfplan"
main = rule {
tfplan.resource_changes is empty
}การเข้าถึงข้อมูลแผนการทำงานของ Terraform
การนำเข้า tfplan จะแสดงมุมมองแบบมีโครงสร้างของแผนการทำงานของ Terraform นโยบายจะใช้ข้อมูลนี้เพื่อตรวจสอบ:
tfplan.resource_changes: รายละเอียดของทรัพยากรที่กำลังสร้าง อัปเดต หรือลบtfplan.variables: ตัวแปรอินพุตที่ส่งให้กับการกำหนดค่าtfplan.outputs: ค่าเอาต์พุตจากการกำหนดค่า
ข้อมูลนี้มีความสำคัญอย่างยิ่งต่อการตัดสินใจเกี่ยวกับนโยบายอย่างมีข้อมูล โดยอิงจากสิ่งที่ Terraform ตั้งใจจะดำเนินการ
ตัวอย่าง: ปฏิเสธภูมิภาคที่ไม่ได้รับอนุมัติ
มาเขียนนโยบาย Sentinel เพื่อให้แน่ใจว่าทรัพยากร AWS ทั้งหมดจะถูกปรับใช้ใน us-east-1 เท่านั้น นโยบายนี้จะตรวจสอบภูมิภาคที่กำหนดไว้สำหรับทรัพยากร AWS แต่ละรายการในแผน
import "tfplan/v2" as tfplan
allowed_regions = ["us-east-1"]
is_region_allowed = func(resource_change) {
if resource_change.provider.name is "aws" {
region = resource_change.provider.config.region else "us-east-1"
return region in allowed_regions
}
return true # Not an AWS resource, allow
}
all_regions_compliant = all tfplan.resource_changes as _, rc {
is_region_allowed(rc)
}
main = rule {
all_regions_compliant
}ฟังก์ชันและตัวดำเนินการของนโยบาย
Sentinel มีฟังก์ชันและตัวดำเนินการในตัวที่ทรงพลังสำหรับตรรกะที่ซับซ้อน:
- ฟังก์ชันคอลเลกชัน:
all,any,filter,mapสำหรับวนซ้ำผ่านรายการหรือแผนที่ - ฟังก์ชันตรวจสอบชนิดข้อมูล:
is,type_ofสำหรับตรวจสอบชนิดข้อมูล - ตัวดำเนินการ: เชิงตรรกะ (
and,or,not) และการเปรียบเทียบ (==,!=,>,<)
สิ่งเหล่านี้ช่วยให้คุณสร้างนโยบายที่รัดกุมและสื่อความหมายได้ชัดเจน เพื่อรองรับสถานการณ์ต่าง ๆ
ตัวอย่าง: บังคับใช้แท็กที่จำเป็น
ข้อกำหนดด้านการกำกับดูแลที่พบได้ทั่วไปคือการบังคับใช้แท็กเฉพาะกับทรัพยากรเพื่อจัดสรรต้นทุนหรือระบุทรัพยากร นโยบายนี้จะตรวจสอบให้แน่ใจว่าทรัพยากร aws_instance ใหม่หรือที่อัปเดตทั้งหมดมีแท็ก Project
import "tfplan/v2" as tfplan
required_tags = ["Project"]
resource_has_required_tags = func(resource_change) {
if resource_change.type is "aws_instance" {
# Check if 'tags' attribute exists in the planned state
if not ("tags" in resource_change.change.after) {
return false
}
missing_tags = filter required_tags as tag {
not (tag in resource_change.change.after.tags)
}
return missing_tags is empty
}
return true # Not an aws_instance, allow
}
all_instances_tagged = all tfplan.resource_changes as _, rc {
(rc.change.actions contains "create" or rc.change.actions contains "update") ?
resource_has_required_tags(rc) :
true # Only check on create/update actions
}
main = rule {
all_instances_tagged
}การทดสอบนโยบายภายในเครื่อง
ก่อนปรับใช้นโยบายกับ Terraform Cloud/Enterprise คุณสามารถทดสอบนโยบายภายในเครื่องโดยใช้ Sentinel CLI คำสั่ง sentinel test ช่วยให้คุณกำหนดกรณีทดสอบด้วยข้อมูล tfplan จำลอง วิธีนี้ช่วยให้คุณตรวจสอบพฤติกรรมของนโยบายและค้นหาข้อผิดพลาดได้ตั้งแต่เนิ่น ๆ ทำให้มั่นใจว่านโยบายทำงานตามที่ตั้งใจโดยไม่ส่งผลกระทบต่อสภาพแวดล้อมที่ใช้งานจริง
ตรวจสอบตรรกะของนโยบาย
คุณต้องสร้างนโยบาย Sentinel ที่ป้องกันไม่ให้มีการสร้างบักเก็ต AWS S3 ใด ๆ ที่อนุญาตให้สาธารณะอ่านได้ คุณจะตรวจสอบส่วนใดของข้อมูล tfplan เป็นหลักเพื่อบังคับใช้ข้อกำหนดนี้
สรุป: การกำกับดูแลด้วย Sentinel
เราได้สำรวจ HashiCorp Sentinel ซึ่งเป็นเฟรมเวิร์กนโยบายในรูปแบบโค้ดที่ทรงพลังสำหรับการกำกับดูแล:
- ผสานการทำงานกับ Terraform Cloud/Enterprise เพื่อบังคับใช้กฎ
- นโยบายจะประเมิน
tfplanก่อนนำโครงสร้างพื้นฐานไปใช้ - ระดับการบังคับใช้ที่แตกต่างกัน (คำแนะนำ ผ่อนปรน เข้มงวด) จะควบคุมผลกระทบของนโยบาย
- คุณสามารถเขียนนโยบายเพื่อปฏิเสธภูมิภาค บังคับใช้แท็ก และดำเนินการอื่น ๆ ได้อีกมาก
- การทดสอบภายในเครื่องช่วยให้มั่นใจว่านโยบายทำงานตามที่ตั้งใจก่อนการปรับใช้
Sentinel มีบทบาทสำคัญในการรักษาการปฏิบัติตามข้อกำหนด ความปลอดภัย และมาตรฐานการดำเนินงานในการปรับใช้โครงสร้างพื้นฐานของคุณ
คำถามที่พบบ่อย
บทเรียน “นโยบาย Sentinel เพื่อการกำกับดูแล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “นโยบาย Sentinel เพื่อการกำกับดูแล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Terraform Infrastructure as Code ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Terraform Infrastructure as Code มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “นโยบาย Sentinel เพื่อการกำกับดูแล”
เรียนรู้การเขียนและบังคับใช้นโยบายในรูปแบบโค้ดด้วย HashiCorp Sentinel เพื่อรับรองการปฏิบัติตามข้อกำหนดและการกำกับดูแลในการปรับใช้ Terraform คุณปฏิบัติ Terraform Infrastructure as Code ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Terraform Infrastructure as Code หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Terraform Infrastructure as Code บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “นโยบาย Sentinel เพื่อการกำกับดูแล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Terraform Infrastructure as Code นี้ได้ไหม
ได้ บทเรียน Terraform Infrastructure as Code ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- รูปแบบมัลติคลาวด์และไฮบริดคลาวด์
- นโยบาย Sentinel เพื่อการกำกับดูแล
- Terraform Cloud และ Enterprise
- การสร้างโพรไวเดอร์แบบกำหนดเอง