Overview
Casbin เป็นไลบรารีควบคุมการเข้าถึงแบบโอเพนซอร์สที่ทรงพลังและมีประสิทธิภาพ ซึ่งรองรับโมเดลการควบคุมการเข้าถึงต่างๆ access control models เพื่อบังคับใช้การอนุญาตทั่วทั้งระบบ
การบังคับใช้กฎเซ็ตนั้นง่ายดายเหมือนการระบุวัตถุประสงค์, วัตถุ และการกระทำที่ต้องการอนุญาต (หรือรูปแบบอื่นๆ ตามความต้องการของคุณ) ในไฟล์ policy นี่คือสิ่งที่เหมือนกันในทุกกระบวนการที่ใช้ Casbin นักพัฒนา/ผู้ดูแลระบบมีอำนาจควบคุมเต็มที่เกี่ยวกับโครงสร้าง, การดำเนินการ และเงื่อนไขสำหรับการอนุญาต ซึ่งถูกตั้งค่าผ่านไฟล์ model Casbin มี Enforcer สำหรับการตรวจสอบคำขอที่เข้ามาตามนโยบายและไฟล์โมเดลที่ให้ไว้กับ Enforcer
ภาษาที่รองรับโดย Casbin
Casbin ให้การสนับสนุนสำหรับภาษาโปรแกรมมิ่งต่างๆ พร้อมที่จะรวมเข้ากับโปรเจกต์และกระบวนการทำงานใดๆ:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
พร้อมใช้งานในการผลิต | พร้อมใช้งานในการผลิต | พร้อมใช้งานในการผลิต | พร้อมใช้งานในการผลิต |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
พร้อมใช้งานในการผลิต | พร้อมใช้งานในการผลิต | พร้อมใช้งานในการผลิต | พร้อมใช้งานในการผลิต |
ชุดคุณสมบัติสำหรับภาษาต่างๆ
เรากำลังทำงานอย่างเต็มที่เพื่อให้ Casbin มีชุดคุณสมบัติเดียวกันสำหรับทุกภาษา อย่างไรก็ตาม ความเป็นจริงนั้นไม่ได้สวยงามเสมอไป
คุณสมบัติ | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' of matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
หมายเหตุ - ✅ สำหรับ Watcher หรือ Role Manager หมายถึงมีอินเตอร์เฟซในไลบรารีหลักเท่านั้น ไม่ได้บ่งบอกว่ามีการดำเนินการ watcher หรือ role manager ที่พร้อมใช้งาน Casbin คืออะไร?
Casbin เป็นไลบรารีการอนุญาตที่สามารถใช้ในกระบวนการที่เราต้องการให้ object
หรือเอนทิตี้ถูกเข้าถึงโดยผู้ใช้เฉพาะหรือ subject
ประเภทของการเข้าถึง คือ action
, สามารถเป็น read, write, delete, หรือการกระทำอื่นๆ ตามที่นักพัฒนาตั้งค่า นี่คือวิธีที่ Casbin ถูกใช้งานอย่างแพร่หลาย และเรียกว่า "มาตรฐาน" หรือการไหล { subject, object, action }
แบบคลาสสิก Casbin สามารถจัดการกับสถานการณ์การอนุญาตที่ซับซ้อนมากกว่าการไหลมาตรฐาน
สามารถเพิ่ม บทบาท (RBAC), คุณลักษณะ (ABAC) ฯลฯ Casbin ทำอะไร
บังคับใช้นโยบายในรูปแบบคลาสสิก { subject, object, action }
หรือรูปแบบที่กำหนดเองตามที่คุณกำหนด
- ทั้งการอนุญาตและการปฏิเสธการอนุญาตได้รับการสนับสนุน จัดการการเก็บรักษาโมเดลการควบคุมการเข้าถึงและนโยบายของมัน
- จัดการการแมประหว่างบทบาทกับผู้ใช้และการแมประหว่างบทบาทกับบทบาท (หรือที่เรียกว่าลำดับชั้นบทบาทใน RBAC)
- สนับสนุน superusers ในตัวเช่น
root
หรือadministrator
- Support built-in superusers like
root
oradministrator
. ผู้ใช้งานระดับสูงสามารถทำอะไรก็ได้โดยไม่ต้องมีสิทธิ์อย่างชัดเจน - ให้ตัวดำเนินการหลายตัวที่สร้างมาเพื่อรองรับการจับคู่กฎ ตัวอย่างเช่น,
keyMatch
สามารถทำให้คีย์ทรัพยากร/foo/bar
ตรงกับรูปแบบ/foo*
สิ่งที่ Casbin ไม่ทำ NOT Do
- การตรวจสอบสิทธิ์ (หรือการตรวจสอบ
username
และpassword
เมื่อผู้ใช้เข้าสู่ระบบ) - จัดการรายชื่อผู้ใช้หรือบทบาท
มันสะดวกกว่าสำหรับโปรเจกต์ในการจัดการรายชื่อผู้ใช้, บทบาท, หรือรหัสผ่านของตนเอง ผู้ใช้มักจะมีรหัสผ่านของตนเอง และ Casbin ไม่ได้ถูกออกแบบมาเพื่อเป็นที่เก็บรหัสผ่าน อย่างไรก็ตาม, Casbin จัดเก็บการแมประหว่างผู้ใช้กับบทบาทสำหรับสถานการณ์ RBAC