Mô hình hóa hệ thống quyền


82

Bạn sẽ mô hình hóa một hệ thống xử lý các quyền để thực hiện một số hành động bên trong một ứng dụng như thế nào?

Câu trả lời:


156

Các mô hình bảo mật là một lĩnh vực nghiên cứu rộng lớn (và mở). Có một loạt các mô hình có sẵn để lựa chọn, từ đơn giản:

  • Ma trận điều khiển truy cập của Lampson liệt kê mọi đối tượng miền và mọi nguyên tắc trong hệ thống với các hành động mà đối tượng chính được phép thực hiện trên đối tượng đó. Nó rất dài dòng và nếu thực sự được thực hiện theo kiểu này, rất cần bộ nhớ.

  • Danh sách kiểm soát truy cập là sự đơn giản hóa ma trận của Lampson: coi nó giống như một cách triển khai ma trận thưa thớt liệt kê các đối tượng và nguyên tắc và các hành động được phép, và không mã hóa tất cả các mục "null" từ ma trận của Lampson. Danh sách kiểm soát truy cập có thể bao gồm 'nhóm' để thuận tiện và danh sách có thể được lưu trữ thông qua đối tượng hoặc thông qua chính (đôi khi, thông qua chương trình, như trong AppArmor hoặc TOMOYO hoặc LIDS ).

  • Hệ thống khả năng dựa trên ý tưởng có một tham chiếu hoặc con trỏ đến các đối tượng; một quy trình có quyền truy cập vào tập hợp các khả năng ban đầu và chỉ có thể nhận được nhiều khả năng hơn bằng cách nhận chúng từ các đối tượng khác trên hệ thống. Điều này nghe có vẻ khá xa vời, nhưng hãy nghĩ về bộ mô tả tệp Unix: chúng là một tham chiếu không thể chấp nhận được đối với một tệp đang mở cụ thể và bộ mô tả tệp có thể được chuyển cho các quy trình khác hoặc không. Nếu bạn cung cấp bộ mô tả cho một quy trình khác, nó sẽ có quyền truy cập vào tệp đó. Toàn bộ hệ điều hành đã được viết xung quanh ý tưởng này. (Nổi tiếng nhất có lẽ là KeyKOS và EROS, nhưng tôi chắc chắn rằng đây là một điểm gây tranh cãi. :)

... phức tạp hơn, có nhãn bảo mật được gán cho các đối tượng và nguyên tắc:

  • Các vòng bảo mật , chẳng hạn như được triển khai trong các CPU Multic và x86, trong số các loại khác, và cung cấp các bẫy hoặc cổng bảo mật để cho phép các quy trình chuyển đổi giữa các vòng; mỗi chiếc nhẫn có một bộ đặc quyền và đối tượng khác nhau.

  • Denning's Lattice là một mô hình mà các nguyên tắc được phép tương tác với các nhãn bảo mật nào theo kiểu phân cấp rất rõ ràng.

  • Bell-LaPadula tương tự như Denning's Lattice, và cung cấp các quy tắc để ngăn chặn việc rò rỉ dữ liệu tối mật đến các cấp độ chưa được phân loại và các phần mở rộng thông thường cung cấp khả năng phân chia và phân loại sâu hơn để cung cấp hỗ trợ tốt hơn theo kiểu quân đội.

  • Các Biba mẫu cũng tương tự như Bell-LaPadula, nhưng 'bật Trưởng ban' - Chuông-LaPadula là tập trung vào bảo mật, nhưng không làm gì cho vẹn, và Biba là tập trung vào tính toàn vẹn, nhưng không làm gì cho bảo mật. (Bell-LaPadula ngăn không cho ai đó đọc Danh sách tất cả gián điệp, nhưng vui vẻ cho phép bất kỳ ai viết bất cứ thứ gì vào đó. Biba vui vẻ cho phép bất kỳ ai đọc Danh sách tất cả gián điệp, nhưng gần như cấm mọi người viết vào đó.)

  • Thực thi kiểu (và anh chị em của nó, Thực thi kiểu miền) cung cấp các nhãn trên nguyên tắc và đối tượng, đồng thời chỉ định các bảng đối tượng-động từ-chủ đề (lớp) được phép. Đây là SELinux và SMACK quen thuộc.

.. và sau đó có một số kết hợp thời gian trôi qua:

  • Bức tường Trung Quốc được phát triển trong môi trường kinh doanh để tách biệt các nhân viên trong một tổ chức cung cấp dịch vụ cho các đối thủ cạnh tranh trong một thị trường nhất định: ví dụ: khi Johnson đã bắt đầu làm việc với tài khoản Exxon-Mobil, anh ta không được phép truy cập vào tài khoản BP. Nếu Johnson bắt đầu làm việc với BP ​​trước, anh ta sẽ bị từ chối quyền truy cập vào dữ liệu của Exxon-Mobil.

  • LOMAChình mờ cao là hai cách tiếp cận động: LOMAC sửa đổi các đặc quyền của các quy trình khi chúng truy cập các mức dữ liệu dần dần và cấm ghi xuống các mức thấp hơn (các quy trình chuyển sang "bảo mật hàng đầu") và hình mờ cao sửa đổi các nhãn trên dữ liệu khi các cấp cao hơn của quy trình truy cập nó (dữ liệu di chuyển theo hướng "bảo mật hàng đầu").

  • Các mô hình Clark-Wilson rất cởi mở; chúng bao gồm các bất biến và các quy tắc để đảm bảo rằng mọi chuyển đổi trạng thái không vi phạm các bất biến. (Điều này có thể đơn giản như kế toán bút toán kép hoặc phức tạp như HIPPA .) Hãy nghĩ đến các giao dịch và ràng buộc cơ sở dữ liệu.

"Bảo mật máy tính: nghệ thuật và khoa học" của Matt Bishop chắc chắn đáng đọc nếu bạn muốn tìm hiểu sâu hơn về các mô hình đã xuất bản.


7
Câu trả lời xuất sắc. Đọc thú vị. Tôi đang tự hỏi hệ thống quá đơn giản nhưng không hiếm gặp này phù hợp với vị trí nào trong danh sách của bạn: "Theo mặc định, khách có cấp 0, người dùng đã đăng ký có cấp 5, quản trị viên hệ thống có cấp 9. Mọi hành động đều có cấp liên quan với nó, và chỉ người nào đó ở cấp độ đó hoặc cao hơn mới có thể thực hiện được. "
Suy nghĩ kỳ lạ vào

1
@Oddthinking, mô hình đơn giản đó có thể có nhiều :) nhưng 'kết hợp' đơn giản nhất là mô hình Ring. Như được triển khai trong x86, nó có bốn cấp, như trong ví dụ của bạn và mỗi cấp thêm các thao tác chỉ có thể được thực hiện bởi cấp mã đó hoặc cao hơn. (Bạn đặt tên cho chúng là một vấn đề trực giao.) Tôi có thể dễ dàng hình dung các triển khai ACL, Capability, Lattice, BLP và TE của ví dụ này. Tôi sẽ không ngạc nhiên nếu những người khác cũng có thể thực hiện mô hình này; nhưng giản dị là một đức tính tốt. :)
sarnold

@Frank, cảm ơn! Chính tả của tôi là quá ác, cảm ơn vì những điều đã nắm bắt được.
sarnold


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.