<Trước | Nội dung | Tiếp theo>
1.7. Kiểm soát truy cập
Việc quản lý loại quyền truy cập (đọc, ghi, v.v.) mà người dùng sẽ được cấp cho các tài nguyên được gọi là
kiểm soát truy cập. Các chỉ thị cấu hình liên quan được gọi là danh sách kiểm soát truy cập hoặc ACL.
Khi chúng tôi cài đặt gói slutd, các ACL khác nhau đã được thiết lập tự động. Chúng ta sẽ xem xét một số hậu quả quan trọng của những mặc định đó và khi làm như vậy, chúng ta sẽ có ý tưởng về cách hoạt động của ACL và cách chúng được định cấu hình.
Để có được ACL hiệu quả cho một truy vấn LDAP, chúng ta cần xem xét các mục nhập ACL của cơ sở dữ liệu đang được truy vấn cũng như các mục nhập của phiên bản cơ sở dữ liệu giao diện người dùng đặc biệt. Các ACL thuộc về sau hoạt động như mặc định trong trường hợp các ACL thuộc về trước không khớp. Cơ sở dữ liệu giao diện người dùng là cơ sở dữ liệu thứ hai được tham khảo và ACL được áp dụng là cơ sở dữ liệu đầu tiên phù hợp ("trận đầu tiên thắng") giữa 2 nguồn ACL này. Các lệnh sau sẽ cung cấp tương ứng, các ACL của cơ sở dữ liệu mdb ("dc = example, dc = com") và các ACL của cơ sở dữ liệu giao diện người dùng:
sudo ldapsearch -Q -LLL -Y NGOÀI H ldapi: /// -b \ cn = config '(olcDatabase = {1} mdb)' olcAccess
dn: olcDatabase = {1} mdb, cn = config
olcAccess: {0} to attrs = userPassword do tự viết bởi xác thực ẩn danh bởi * none olcAccess: {1} to attrs = shadowLastChange do tự viết bởi * read
olcAccess: {2} to * by * read
RootDN luôn có toàn quyền đối với cơ sở dữ liệu của nó và không cần phải đưa vào bất kỳ ACL nào.
sudo ldapsearch -Q -LLL -Y NGOÀI TRỜI -H ldapi: /// -b \ cn = config '(olcDatabase = {- 1} frontend)' olcAccess
dn: olcDatabase = {- 1} giao diện người dùng, cn = config
olcAccess: {0} to * by dn.exact = gidNumber = 0 + uidNumber = 0, cn = peercred, cn = external
, cn = auth quản lý bằng * break
olcAccess: {1} to dn.exact = "" bởi * read
olcAccess: {2} tới dn.base = "cn = Subschema" bởi * read
Hai ACL đầu tiên rất quan trọng:
olcAccess: {0} to attrs = userPassword do tự viết bởi xác thực ẩn danh bởi * none olcAccess: {1} to attrs = shadowLastChange do tự viết bởi * read
Điều này có thể được biểu diễn khác nhau để dễ tiêu hóa hơn:
tới attrs = userPassword
tự viết
bởi auth ẩn danh bởi * none
thành attrs = shadowLastChange bằng cách tự viết
bởi * đọc
Các ACL này thực thi những điều sau:
• Quyền truy cập 'auth' ẩn danh được cung cấp cho mật khẩu người dùng để người dùng có thể xác thực, hoặc ràng buộc. Có lẽ theo trực giác, 'bằng xác thực ẩn danh' là cần thiết ngay cả khi truy cập ẩn danh vào DIT là không mong muốn, nếu không đây sẽ là một vấn đề về gà và trứng: trước khi xác thực, tất cả người dùng đều ẩn danh.
• Các tự viết ACL cấp quyền ghi vào mật khẩu người dùng thuộc tính cho những người dùng đã xác thực là dn nơi thuộc tính tồn tại. Nói cách khác, người dùng có thể cập nhật mật khẩu người dùng thuộc tính của các mục nhập của riêng họ.
• Các mật khẩu người dùng Mặt khác, thuộc tính này không thể truy cập được bởi tất cả người dùng khác, ngoại trừ rootDN, người luôn có quyền truy cập và không cần phải đề cập rõ ràng.
• Để người dùng thay đổi mật khẩu của chính họ, sử dụng passwd hoặc các tiện ích khác, của riêng người dùng bóngLastChange thuộc tính cần phải được ghi. Tất cả những người dùng thư mục khác có thể đọc nội dung của thuộc tính này.
DIT này có thể được tìm kiếm ẩn danh vì 'to * by * read' trong ACL này, cấp cho mọi người quyền truy cập đọc vào mọi thứ khác (kể cả ẩn danh):
đến *
bởi * đọc
Nếu điều này là không mong muốn thì bạn cần thay đổi ACL. Để buộc xác thực trong một yêu cầu ràng buộc, bạn có thể thay thế (hoặc kết hợp với ACL đã sửa đổi) sử dụng chỉ thị 'olcRequire: authc'.
Như đã đề cập trước đó, không có tài khoản quản trị nào ("rootDN") được tạo cho cơ sở dữ liệu tátd-config. Tuy nhiên, có một danh tính SASL được cấp toàn quyền truy cập vào nó. Nó đại diện cho superuser của localhost (root / sudo). Nó đây:
dn.exact = gidNumber = 0 + uidNumber = 0, cn = peercred, cn = external, cn = auth
Lệnh sau sẽ hiển thị các ACL của cơ sở dữ liệu tátd-config:
sudo ldapsearch -Q -LLL -Y NGOÀI H ldapi: /// -b \ cn = config '(olcDatabase = {0} config)' olcAccess
dn: olcDatabase = {0} config, cn = config
olcAccess: {0} to * by dn.exact = gidNumber = 0 + uidNumber = 0, cn = peercred, cn = external, cn = auth management by * break
Vì đây là danh tính SASL nên chúng tôi cần sử dụng SASL cơ chế khi gọi tiện ích LDAP được đề cập và chúng tôi đã thấy nó rất nhiều lần trong hướng dẫn này. Đó là cơ chế BÊN NGOÀI. Xem lệnh trước để biết ví dụ. Lưu ý rằng:
1. Bạn phải sử dụng sudo trở thành danh tính gốc để ACL khớp.
2. Cơ chế BÊN NGOÀI hoạt động thông qua IPC (Ổ cắm miền UNIX). Điều này có nghĩa là bạn phải sử dụng ldapi
Định dạng URI.
Một cách ngắn gọn để lấy tất cả các ACL là như sau:
sudo ldapsearch -Q -LLL -Y NGOÀI H ldapi: /// -b \ cn = config '(olcAccess = *)' olcAccess olcSuffix
Có nhiều điều để nói về chủ đề kiểm soát truy cập. Xem trang người đàn ông cho Tátd.access4.
<Trước | Nội dung | Tiếp theo>