บทบาทและขอบเขตสิทธิ์
OpenFactory เก็บบทบาทอิสระที่ระดับองค์กร หน่วย และทีม ชื่อบทบาทบอกขอบเขต ไม่ใช่สิทธิ์สากลที่ ใช้กับทุก API หรือคุณสมบัติผลิตภัณฑ์โดยอัตโนมัติ
โมเดลขอบเขต
organization membership: owner | admin | member
└── unit membership: unit_admin | base_creator | base_approver | member
└── team membership: team_lead | variant_creator | variant_deployer | variant_userการเป็นสมาชิกองค์กรคือขอบเขตนอกสุด ผู้ใช้ต้องเป็นสมาชิกองค์กร ก่อนที่ผู้ดูแลจะเพิ่มเข้าหน่วยหรือทีมขององค์กรนั้นได้ การเป็นสมาชิกถูกตรวจแยกที่แต่ละระดับ อย่าอนุมานบทบาทหน่วยหรือทีม จากบทบาทองค์กรที่แสดงในบริบทอื่น
บทบาทองค์กร
API จัดการองค์กรปัจจุบันบังคับสิทธิ์เหล่านี้:
| การดำเนินการ | เจ้าของ | ผู้ดูแล | สมาชิก |
|---|---|---|---|
| ดูองค์กร สมาชิก กลุ่ม หน่วย และทีม | ใช่ | ใช่ | ใช่ |
| แก้ไขชื่อหรือคำอธิบายองค์กร | ใช่ | ใช่ | ไม่ |
| สร้าง แก้ไข หรือลบกลุ่ม และจัดการสมาชิกกลุ่ม | ใช่ | ใช่ | ไม่ |
| เชิญหรือถอดสมาชิกทั่วไป | ใช่ | ใช่ | ไม่ |
| เปลี่ยนบทบาทสมาชิกทั่วไป/ผู้ดูแล | ใช่ | ใช่ | ไม่ |
| เชิญหรือเลื่อนเป็นเจ้าของ | ใช่ | ไม่ | ไม่ |
| เปลี่ยนหรือถอดเจ้าของที่มีอยู่ | ใช่ | ไม่ | ไม่ |
| สร้างหรือลบหน่วย | ใช่ | ใช่ | ไม่ |
| ลบองค์กร | ใช่ | ไม่ | ไม่ |
| ออกจากองค์กร | ใช่ เว้นแต่เป็นเจ้าของคนเดียว | ใช่ | ใช่ |
องค์กรสามารถมีเจ้าของมากกว่าหนึ่งคน API กันเจ้าของคนเดียว
ไม่ให้ออกจนกว่าจะมีเจ้าของอีกคน หรือองค์กรถูกลบ ไม่มี
การกระทำ “โอนกรรมสิทธิ์” แยกใน API นี้ เจ้าของเปลี่ยนบทบาทของสมาชิก
อีกคนเป็น owner แล้วจึงเปลี่ยนหรือถอดเจ้าของเดิมตามที่ตั้งใจ
บทบาทหน่วย
เจ้าของและผู้ดูแลองค์กรจัดการได้ทุกหน่วย ภายในหน่วย
API จัดการองค์กรปัจจุบันให้ unit_admin มีการดำเนินการบริหารต่อไปนี้:
- แก้ไขหน่วย;
- เพิ่ม ถอด และเปลี่ยนบทบาทสมาชิกหน่วย;
- สร้าง แก้ไข และลบทีมในหน่วยนั้น;
- เพิ่มและจัดการสมาชิกทีมในหน่วยนั้น
เฉพาะเจ้าของหรือผู้ดูแลองค์กรเท่านั้นที่ลบตัวหน่วยได้
base_creator, base_approver และ member ของหน่วยเป็นป้ายบทบาทที่เก็บไว้สำหรับ
นโยบายเวิร์กโฟลว์อิมเมจฐาน เส้นทาง CRUD ขององค์กรเองไม่ได้
พิสูจน์ว่าการสร้าง การอนุมัติ หรือการปรับใช้ทุกแห่งบังคับป้ายเหล่านั้น
ตรวจพฤติกรรมการอนุญาตของเวิร์กโฟลว์บิลด์หรือการอนุมัติเฉพาะ
ก่อนพึ่งเป็นตัวควบคุม
บทบาททีม
เจ้าของ/ผู้ดูแลองค์กร และ unit_admin ของหน่วยแม่ จัดการสมาชิกทีมได้
team_lead สามารถ:
- แก้ไขชื่อหรือคำอธิบายทีม;
- เพิ่มและถอดสมาชิกทีม;
- เปลี่ยนบทบาทสมาชิกทีม
team_lead ลบทีมผ่าน API องค์กรปัจจุบันไม่ได้
การนั้นสงวนไว้สำหรับเจ้าของ/ผู้ดูแลองค์กร หรือ
unit_admin ของหน่วยแม่
variant_creator, variant_deployer และ variant_user แสดงความรับผิดชอบ
เวิร์กโฟลว์ตัวแปรที่ตั้งใจไว้ ไม่ควรอ่านว่าเป็นหลักฐานว่าจุดสิ้นสุดตัวแปรทุกแห่ง
บังคับเมทริกซ์สร้าง/แก้ไข/ปรับใช้ครบ ทดสอบเวิร์กโฟลว์ที่แน่นอน
และเส้นทางถูกปฏิเสธในรุ่นที่ปรับใช้แล้ว
กลุ่มแตกต่างออกไป
กลุ่มเป็นชุดการแชร์ระดับองค์กร ไม่ใช่ลำดับชั้นบทบาทอีกชั้น เจ้าของและผู้ดูแลสร้างกลุ่มและจัดการสมาชิกกลุ่ม สมาชิกองค์กรทั้งหมด สามารถแสดงรายการกลุ่มและสมาชิกได้ การเป็นสมาชิกกลุ่มไม่ได้ทำให้ผู้ใช้ กลายเป็นผู้ดูแลองค์กร ผู้ดูแลหน่วย หรือหัวหน้าทีม
การเปลี่ยนบทบาทอย่างปลอดภัย
- ยืนยันองค์กร หน่วย หรือทีมเป้าหมาย
- บันทึกการเป็นสมาชิกที่มีผลปัจจุบันของผู้ใช้ทั้งสามขอบเขต
- ใช้การเปลี่ยนบทบาทครั้งเดียว
- ทดสอบทั้งการดำเนินการที่อนุญาตและการดำเนินการที่ถูกปฏิเสธด้วยเซสชันของ ผู้ใช้นั้นเอง
- ตรวจว่าสถานะ UI ที่แคชและเซสชันที่มีอยู่สะท้อนการเปลี่ยนแปลง
- เก็บบันทึกตรวจสอบนอกป้ายบทบาทหากนโยบายของคุณต้องการ
การเปลี่ยนป้ายโดยไม่ทดสอบเส้นทางถูกปฏิเสธไม่ใช่หลักฐานเพียงพอว่า สิทธิ์น้อยที่สุดถูกบังคับ
กรณีขอบที่พบบ่อย
- ผู้ดูแลไม่สามารถเลื่อนใครเป็นเจ้าของ หรือเปลี่ยนบทบาทเจ้าของที่มีอยู่
- ผู้ใช้ไม่สามารถถูกเพิ่มเข้าหน่วยหรือทีมจนกว่าจะอยู่ใน องค์กร
- สมาชิกหน่วยและทีมอาจถอดตนเองได้ การเป็นสมาชิกองค์กรยังคงอยู่ เว้นแต่ถอดแยก
- การถอดสมาชิกองค์กรควรตรวจผลตกค้างในหน่วย ทีม กลุ่ม การแชร์ และเซสชันในรุ่นของคุณ
- สีป้ายใน UI เป็นการนำเสนอ ไม่ใช่ตัวควบคุมความปลอดภัย อาศัย การอนุญาตฝั่งเซิร์ฟเวอร์และการทดสอบเส้นทางถูกปฏิเสธเสมอ