จำกัดอำนาจของ agent
เรียนจบแล้วกำหนดการดำเนินการ ทรัพยากร และเงื่อนไขที่อนุญาต ตรวจสอบสิทธิ์นอกโมเดลและแยกการพัฒนาออกจากการออก release
เผยแพร่โดย Taigaวิธีเขียนเนื้อหาของเรา
ตรวจความเข้าใจคุณสั่ง 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)การยกเลิกตัวเลือกนี้จะลบความคืบหน้าทั้งหมดที่บันทึกใน browser นี้
ความคืบหน้าอยู่ใน browser นี้ ไม่ใช้บัญชีและไม่ติดตามการใช้งาน