2011-11-05 42 views
7

Tôi đang làm việc về triển khai bảo mật dựa trên vai trò trong LDAP và Java. Cụ thể, tôi có các đối tượng sau đây mà tôi cần để biểu diễn trong LDAP:Triển khai bảo mật dựa trên vai trò trong LDAP

  • Người dùng
  • nhóm doanh nghiệp của người sử dụng - Nhân sự, Tài chính, vv
  • Quyền - DOCUMENT_READ, DOCUMENT_MODIFY, vv
  • Vai trò - ADMIN, GUEST, v.v.

Vai trò cơ bản là các nhóm quyền và có thể gán cho người dùng hoặc một nhóm người dùng.

Tôi đã nghĩ đến việc đại diện cho họ trong LDAP như folows:

  • Users - Person và uidObject lớp học với userPassword thuộc tính.
  • Nhóm người dùng - tổ chứcPhân loại độc lập, theo đó người dùng là .
  • Vai trò - nhómOfNames đối tượng lớp.
  • Quyền - không chắc chắn về điều này, có lẽ cũng groupOfNames lớp học.

Ý tưởng là có quyền truy cập nhanh từ người dùng hoặc nhóm vào danh sách vai trò mà người dùng hoặc nhóm này có. Tôi biết rằng tôi có thể đưa người dùng và nhóm vào thuộc tính "thành viên" của vai trò, nhưng sau đó tôi sẽ phải quét tất cả các vai trò để tìm những vai trò nào có người dùng này được liệt kê. Có cách nào để có một cái gì đó giống như thuộc tính "thành viên" trong một đối tượng Person?

Thông thường, có ai biết về triển khai bảo mật dựa trên vai trò tốt trong LDAP không? Tôi không thể tìm thấy tài liệu hay hướng dẫn tốt về chủ đề này. Tôi đang sử dụng ApacheDS như một máy chủ LDAP hiện tại, nhưng tôi đang mở để gợi ý.

Trả lời

8

Users: inetOrgPerson

Bộ sưu tập: organizationalUnit, nhưng hãy cẩn thận của cố gắng để tái cơ cấu tổ chức của bạn trong thư mục LDAP của bạn: điều này thường là một sai lầm, là tổ chức thay đổi và người dùng di chuyển xung quanh tổ chức. Bạn nên cân nhắc sử dụng thuộc tính ou .

Vai trò: organizationRole. Tôi đã sử dụng các nhóm vai trò như groupOfUniqueNames, nhưng đó là một sai lầm, tôi nên đã tiếp tục sử dụng organizationRole để các vai trò chỉ đơn giản là đệ quy.

Giấy phép: đây chỉ là vai trò thực sự hoặc thuộc tính của vai trò. Nếu bạn sử dụng CMA, chúng được định nghĩa trong web.xml, chứ không phải LDAP.

Như tôi đã nói, đừng cố gắng làm cho cây LDAP phản chiếu tổ chức của bạn. Làm cho nó phản chiếu tổ chức của riêng nó. Tôi sử dụng các thuộc tính có giá trị nhiều khi cần thiết. Tôi sử dụng organizationUnit chủ yếu cho các lớp trong chính LDAP, hoặc nơi tôi đã phá vỡ các quy tắc của tôi ở trên ;-)

OpenLDAP có lớp phủ toàn vẹn tham chiếu có thể giữ rất nhiều điều này cho bạn.

Có một số gợi ý rất tốt về cấu trúc LDAP trong Mastering OpenLDAP Matt Butcher, và một cái nhìn mức độ cao hơn của nó tất cả trong Hiểu và Triển khai LDAP Directory Services bởi Howes et al.

+0

Cảm ơn bạn, tôi sẽ thử. ou thuộc tính là một ý tưởng tốt. Trong kịch bản của tôi, một người có thể thuộc về nhiều hơn một đơn vị tổ chức, vì vậy tôi không chắc cái nào tốt hơn - có nhiều thuộc tính ou hoặc có thể làm cho nhóm groupOfNames là tốt. – user1031054

+0

@ user1031054 xem chỉnh sửa. – EJP

+0

bài viết ldap tốt: http://www.zytrax.com/books/ldap/ – cleverpig

0

Khám phá Pháo đài. Nó là ANSI RBAC INCITS 359 tuân thủ và được xây dựng trên LDAP. Mã nguồn là mã nguồn mở và bạn có thể kéo xuống các tệp nhị phân được tạo sẵn bao gồm OpenLDAP từ đây: http://iamfortress.org/

2

Một tùy chọn khác: kiểm tra kiểm soát truy cập dựa trên thuộc tính (). ABAC là một sự tiến hóa của RBAC. Nó sử dụng các thuộc tính (là các nhãn về người dùng, tài nguyên, ngữ cảnh) và các chính sách để xác định những gì được cho phép và những gì không được phép.

Ví dụ: Người dùng có vai trò quản lý == trong bộ phận == bán hàng có thể thực hiện hành động == chỉnh sửa trên tài liệu loại == đơn đặt hàng nếu số tiền PO < = giới hạn phê duyệt của người dùng.

Bạn có thể đọc thêm về ABAC tại số NIST website.

Các vấn đề liên quan