เส้นทาง 03บทเรียน 2 / 6

จำกัดอำนาจของ agent

กำหนดการดำเนินการ ทรัพยากร และเงื่อนไขที่อนุญาต ตรวจสอบสิทธิ์นอกโมเดลและแยกการพัฒนาออกจากการออก release

ผู้ปฏิบัติงาน9 minตรวจทานแล้ว

เผยแพร่โดย วิธีเขียนเนื้อหาของเรา

ตรวจความเข้าใจคุณสั่ง agent ให้แก้ branch เดียว แต่ token ของมัน push ไป default branch ได้ ขอบเขตที่มีผลจริงคืออะไรทำแบบฝึกหัด
คุณสั่ง agent ให้แก้ branch เดียว แต่ token ของมัน push ไป default branch ได้ ขอบเขตที่มีผลจริงคืออะไร

สิ่งที่จะได้เรียนรู้

  • ระบุสิทธิ์ด้วยการดำเนินการ ทรัพยากร และเงื่อนไข
  • แยกการอนุมัติงานออกจากสิทธิ์ลงมือทำ
  • ทดสอบว่าการดำเนินการที่ห้ามถูกปฏิเสธ

อธิบายงานก่อนให้สิทธิ์เข้าถึง

Agent ที่อ่านโค้ดต้องการอำนาจต่างจาก agent ที่ deploy บริการ อย่าให้สิทธิ์ทั้งสองชุดเพียงเพราะผลิตภัณฑ์เดียวกันรองรับทั้งสองอย่าง

ใช้สามส่วนกำหนดอำนาจ ได้แก่ การดำเนินการ ทรัพยากร และเงื่อนไข ในตัวอย่างแก้รายงานสมมติ agent เขียน feature branch เดียวได้ขณะงานยังดำเนินอยู่ อ่านไฟล์ repository ที่อนุมัติได้ แต่เปลี่ยนข้อมูล production หรือกฎป้องกัน repository ไม่ได้

การดำเนินการที่จำเป็นตัวอย่างขอบเขต
ตรวจดูโค้ดอ่าน repository ที่เลือก
รันการตรวจสอบใช้สภาพแวดล้อมแยกพร้อม fixture สมมติ
เตรียมการเปลี่ยนแปลงเขียน branch ของงาน
ขอการตรวจทานเปิด PR โดยไม่ merge
ออก release ซอฟต์แวร์ใช้กระบวนการ deploy แยกที่มีการป้องกัน

วิธีบังคับใช้ที่แน่นอนขึ้นอยู่กับเครื่องมือ หาก token ระบุข้อจำกัดระดับ branch ไม่ได้ ให้ใช้มาตรการควบคุม repository เพิ่มเติมหรือบริการรันงาน บันทึกอำนาจที่ยังมีอยู่อย่างตรงไปตรงมา

บังคับใช้ข้อจำกัดนอกโมเดล

Prompt ไม่ใช่ระบบควบคุมการเข้าถึง คอมโพเนนต์ที่รันงานต้องตรวจการดำเนินการและเป้าหมายที่ร้องขอกับสิทธิ์ปัจจุบัน ต้องไม่ยอมรับเพียงคำกล่าวของโมเดลว่ามีการอนุมัติแล้ว

AWS แนะนำสิทธิ์ที่จำกัดและข้อมูลรับรองชั่วคราวสำหรับ workload ที่เหมาะสม OWASP ใช้เหตุผลเรื่องสิทธิ์เท่าที่จำเป็นในลักษณะเดียวกันกับ agent และเครื่องมือ หลักการเหล่านี้ต้องนำไปใช้ในระบบตัวตนและระบบรันงานจริง ดู แนวทาง AWS IAM และ แนวทาง agent ของ OWASP

ใช้ข้อมูลรับรองอายุสั้นเมื่อรองรับ กัน secret ที่ไม่เกี่ยวข้องออกจากสภาพแวดล้อม งาน repository ที่อ่านอย่างเดียวไม่ควรได้รับรหัสผ่านฐานข้อมูล production จาก shell ของ developer

ผูกการอนุมัติกับการดำเนินการจริง

การอนุมัติให้เตรียมการเปลี่ยนแปลงไม่ได้หมายถึงอนุมัติให้ deploy การตัดสินใจ deploy ควรระบุ artifact สภาพแวดล้อมเป้าหมาย และเงื่อนไขที่เกี่ยวข้อง หากสิ่งเหล่านี้เปลี่ยน การตัดสินใจก่อนหน้าอาจใช้ไม่ได้แล้ว

พิจารณา agent ที่เสนอการอ่านฐานข้อมูลอย่างปลอดภัย แต่รัน query อื่นหลังได้รับอนุมัติ กลไกอนุมัติที่มีประโยชน์ตรวจการดำเนินการที่รันจริง ข้อความทั่วไปว่า “ทำต่อ” โดยไม่กำหนดเป้าหมายอาจซ่อนความแตกต่างนี้

แยกตัวตนออกจากความสามารถด้วย บันทึกว่าคนหรือ workload ใดเริ่มการรัน ตรวจสอบว่าตัวตนผู้เริ่มยังมีสิทธิ์เมื่อการดำเนินการเกิดขึ้น การถอนสิทธิ์ของบุคคลควรมีผลที่กำหนดชัดเจนต่องานในคิว

ทดสอบการปฏิเสธและการหยุด

ตรวจสอบมากกว่าเส้นทางที่สำเร็จ ในสภาพแวดล้อมทดสอบแยก ให้ลองดำเนินการนอกทรัพยากรที่อนุญาต ยืนยันว่าระบบรันงานปฏิเสธ ตรวจดูเหตุการณ์ audit โดยไม่บันทึกข้อมูลรับรอง

จากนั้นทดสอบการยกเลิกหรือข้อมูลรับรองหมดอายุ ระบุว่างานใดหยุดทันทีและการดำเนินการใดยังทำจนจบได้ ปุ่มหยุดไม่ได้ย้อนการดำเนินการที่ไปถึงระบบอื่นแล้วเสมอไป

เก็บบันทึกสิทธิ์สั้น ๆ ไว้กับงาน รวมผู้รับผิดชอบ ขอบเขตที่อนุมัติ มาตรการควบคุมจริง การทดสอบการปฏิเสธ และวันหมดอายุ สิ่งนี้ทำให้การตรวจทานภายหลังเจาะจงพอที่จะปรับ workflow ได้

ทำแบบฝึกหัด

กำหนดสิทธิ์สำหรับ agent ที่แก้ตัวกรองรายงาน ระบุการดำเนินการที่อนุญาตสามอย่างและที่ห้ามสามอย่าง รวม repository, branch, สภาพแวดล้อม และวันหมดอายุ อธิบายวิธีทดสอบการปฏิเสธแต่ละข้อโดยไม่เปลี่ยน production

ดาวน์โหลดใบงาน (Markdown)
ตรวจความเข้าใจ ↑

เรียนต่อ

แหล่งข้อมูลและเนื้อหาอ่านเพิ่มเติม

เนื้อหาเกี่ยวข้องจาก Taiga

← บทเรียนก่อนหน้า: กำหนดว่าข้อมูลไปที่ใดได้บ้าง