0Pricing
DevOps Bootcamp · บทเรียน

นโยบาย Sentinel เพื่อการกำกับดูแล

เรียนรู้การเขียนและบังคับใช้นโยบายในรูปแบบโค้ดด้วย HashiCorp Sentinel เพื่อรับรองการปฏิบัติตามข้อกำหนดและการกำกับดูแลในการปรับใช้ Terraform

นโยบาย Sentinel เพื่อการกำกับดูแล เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 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) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “นโยบาย Sentinel เพื่อการกำกับดูแล”

เรียนรู้การเขียนและบังคับใช้นโยบายในรูปแบบโค้ดด้วย HashiCorp Sentinel เพื่อรับรองการปฏิบัติตามข้อกำหนดและการกำกับดูแลในการปรับใช้ Terraform คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

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

บทเรียน “นโยบาย Sentinel เพื่อการกำกับดูแล” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

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

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

  1. รูปแบบมัลติคลาวด์และไฮบริดคลาวด์
  2. นโยบาย Sentinel เพื่อการกำกับดูแล
  3. Terraform Cloud และ Enterprise
  4. การสร้างโพรไวเดอร์แบบกำหนดเอง
← กลับไปที่ DevOps Bootcamp