CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 532

532
Chương 13: Bảo mật

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 thi quyế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ập quyề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ằng
Administrative 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 thi nê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ảo mậ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ộc vào độ
phức tạp của chính sách bảo mật mà bạn cần diễn tả. Lớp

System.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, định nghĩ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ất nhiề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ính sá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ức

AppDomain.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ọi

SetAppDomainPolicy

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ác

assembly 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ính sá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ạp sau 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 assembly chia 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 ứng dụng.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.