Danh mục

Bảo mật phần 4

Số trang: 8      Loại file: pdf      Dung lượng: 183.46 KB      Lượt xem: 2      Lượt tải: 0    
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bạn cần kiểm soát (bằng mã lệnh) các quyền được cấp cho các assembly. Cấu hình (bằng mã lệnh) chính sách bảo mật của miền ứng dụng mà bạn đã nạp các assembly vào đó.
Nội dung trích xuất từ tài liệu:
Bảo mật phần 4 1.1 Xử lý bảo mật bộ thực thi bằng chính sách bảo mật của miền ứng dụng Bạn cần kiểm soát (bằng mã lệnh) các quyền được cấp cho các assembly. Cấu hình (bằng mã lệnh) chính sách bảo mật của miền ứng dụng mà bạn đã nạp các assembly vào đó.Chính sách bảo mật (security policy) bao gồm bốn mức chính sách: công ty (enterprise),máy (machine), người dùng (user), và miền ứng dụng (application domain). Bộ thực thiquyết định những quyền nào để cấp cho một assembly bằng cách xác định tập quyềnđược cấp bởi mỗi mức chính sách rồi tính phép giao (phép AND luận lý) của bốn tậpquyền. Các quyền nằm trong tập giao là grant-set cuối cùng của assembly. Ngay cả khi các mức chính sách công ty, máy, hay người dùng chỉ định code group LevelFinal (chỉ thị bộ thực thi không đánh giá các mức chính sách thấp hơn), bộ thực thi luôn sử dụng mức chính sách của miền ứng dụng để tính grant-set của một assembly.Chỉ các mức chinh sách công ty, máy, và người dùng là được cấu hình tĩnh bằngAdministrative Tools. Vì miền ứng dụng không tồn tại bên ngoài ngữ cảnh của bộ thực thinên không thể cấu hình tĩnh chính sách miền ứng dụng được. Để cấu hình chính sách bảomật của một miền ứng dụng, bạn phải tạo một mức chính sách (bằng mã lệnh) rồi gán nócho miền ứng dụng.Xây dựng một mức chính sách bằng mã lệnh có thể là một công việc lâu dài, tùy thuộcvào độ phức tạp của chính sách bảo mật mà bạn cần diễn tả. LớpSystem.Security.Policy.PolicyLevel mô tả một mức chính sách bảo mật. Bên trong mỗiđối tượng PolicyLevel, bạn phải tạo dựng một cấu trúc phân cấp các code group, địnhnghĩa các điều kiện thành viên, các tập quyền, và các đặc tính của mỗi code group. Có rấtnhiều kiểu được sử dụng để tạo dựng mức chính sách, và thảo luận về các kiểu này làvượt quá phạm vi quyển sách này. Lập trình bảo mật .NET, như đã đề cập trước đây,cung cấp thông tin chi tiết về mỗi lớp này và trình bày cách xây dựng một mức chínhsách bằng mã lệnh. Thông thường, bạn sẽ phát triển một công cụ trợ giúp việc tạo một mức chính sách và ghi định nghĩa mức chính sách ra file; sau đó, bạn có thể nạp định nghĩa này từ đĩa khi cần. Lớp PolicyLevel có hai phương thức nhằm đơn giản hóa quá trình này: ToXml đưa một đối tượng PolicyLevel về dạng dễ lưu trữ, và FromXml xây dựng lại một đối tượng PolicyLevel từ dạng đã được lưu trữ.Một khi đã có đối tượng PolicyLevel mô tả chính sách bảo mật như mong muốn, bạn cóthể gán nó cho một miền ứng dụng. Thu lấy tham chiếu System.AppDomain đến miềnứng dụng mà bạn muốn cấu hình, và truyền đối tượng PolicyLevel cho phương thứcAppDomain.SetAppDomainPolicy. Mã lệnh của bạn phải có phần tửControlDomainPolicy của SecurityPermission thì mới có thể gọi SetAppDomainPolicy.Bạn chỉ có thể gọi SetAppDomainPolicy một lần trên mỗi miền ứng dụng; nếu bạn gọiSetAppDomainPolicy lần thứ hai, nó sẽ ném ngoại lệSystem.Security.Policy.PolicyException.Bạn không phải gán đối tượng PolicyLevel cho một miền ứng dụng trước khi nạp cácassembly vào miền ứng dụng này. Các assembly được nạp trước khi bạn thiết lập chínhsách bảo mật miền ứng dụng có các grant-set chỉ dựa trên các mức chính sách: công ty,máy, và người dùng. Chính sách miền ứng dụng chỉ áp dụng cho các assembly được nạpsau khi nó được cấu hình. Thông thường, bạn sử dụng khả năng này để nạp các assemblychia sẻ đáng-tin-cậy vào miền ứng dụng mà không bị ràng buộc bởi chính sách miền ứngdụng.Ứng dụng dưới đây trình bày quá trình tạo một mức chính sách và gán nó cho một miềnứng dụng. Mức chính sách này cấp các quyền dựa trên publisher của một assembly—được thể hiện trong các khoản của chứng cứ System.Security.Policy.Publisher.using System;using System.Security;using System.Security.Policy;using System.Security.Cryptography.X509Certificates;public class AppDomainPolicyExample { public static void Main() { // Tạo một miền ứng dụng mới (để nạp các assembly vào đó). AppDomain domain = AppDomain.CreateDomain(modules); // Nạp các assembly vào miền ứng dụng mà bạn không muốn // bị ràng buộc bởi chính sách bảo mật miền ứng dụng. § // Cấu hình chính sách bảo mật cho đối tượng AppDomain. SetDomainPolicy(domain); // Nạp các assembly vào miền ứng dụng được bảo vệ. § }// Phương thức này cấu hình chính sách bảo mật của đối tượng// AppDomain được truyền cho nó. Chính sách bảo mật sẽ gán các// quyền khác nhau cho mỗi assembly dựa trên publisher của// assembly. Những assembly từ các publisher vô danh không được// cấp quyền nào cả.private static void SetDomainPolicy(AppDomain domain) { // Tạo một PolicyLevel mới cho miền ứng dụng. PolicyLevel policy = PolicyLevel.CreateAppDomainLevel(); // Tạo một FirstMatchCodeGroup mới dùng làm nút gốc của hệ // thống phân cấp code group. Cấu hình group này sao cho // nó trùng khớp với tất cả code. Điều này nghĩa là tất cả // các assembly đều khởi đầu với một grant-set rỗng cho // mức chính sách miền ứng dụng. policy.RootCodeGroup = new FirstMatchCodeGroup( new AllMembershipCondition(), new PolicyStatement(policy.GetNamedPermissionSet(Nothing)) ); // Tạo tập các code group để xác định các quyền nào sẽ được cấp // cho một assembly do một publisher tạo ra. Vì code group gốc // là một FirstMatchCodeGroup, nên quá trình phân giải chính sách // chỉ so trùng assembly trên các group con cho đến khi tìm thấy // trùng khớp đầu tiên. Mỗi code group được tạo với đặc tính // Exclusive để bảo đảm rằng assembly không lấy thêm quyền // nào từ các code group khác. // Tạo code group cấp tập quyền FullTrust cho các // assembly được phát hành bởi Microsoft. X509Certificate microsoftCert = X509Certificate.CreateFromCertFile(microsoft.cer); policy.RootCodeGroup.AddChild(new UnionCodeGroup( new P ...

Tài liệu được xem nhiều: