计算被允许的Permission Set
在.NET Framework的第4版中, common language runtime(CLR)已经不再为计算机提供security policy了. Microsoft推荐使用Windows Software Restriction Policies作为CLR security policy的替代品. 这个话题中的信息适用于.NET Framework version 3.5和更早的版本, 它并不适用于4.0版或更靠后的版本. 要查看关于这个和其他的一些修改变化, 请参考Security Changes in the .NET Framework 4.
Common language runtime会为应用程序域和程序集计算被允许的permission set, 计算方式是为得到相关的policy level去遍历code group的层次结构. 对于应用程序域, 相关的policy level包括enterprise, machine, 和user. 对于程序集, 相关的policy level有enterprise, machine, user, 和application domain.
runtime使用下面的处理过程来计算被允许的permission set:
1. 对于每一个relevant plicy level, 运行时都会使用由evidence提供的identity信息来确定代码属于哪些groups. 如果代码是一个group的成员, 那么我们就说这个group是一个match.
搜索match的过程是从所有code group等级结构的顶部开始的. 运行时会搜索等级结构中的层次, 如果一个match在某个parentgroup被找到, 那么搜索还会包括子groups.
2. 当所有等级结构中的match都被找到并确定下来之后, 与每个match的code group相关联的permission就会被绑定到一个额外添加的manner(a union)上, 这就是该policy level所允许的permission集的结果.
如果Exclusive 或 LevelFinal 属性被应用到code group上, 运行时会有区别地计算被允许的permission set. 更多细节, 请参考Code Group Attributes.
3. 然后运行时重复进行等级结构中的搜索, 并与每一个policy level的permission set交互来为application domain或者是assembly计算被允许的permission set. 结果permission set会仅包括被所有policy level所允许的permissions.
下面的图展现了code group的等级结构, 其中Microsoft® Money 是四个code groups中的一个成员:
- All code
- Microsoft (the Publisher)
- Local Internet (the Zone)
- Microsoft Money (the Name)
对于一个给定的policy level(machine, user, 或application domain), 被允许的permission set是与这些code groups其中的任何一个相关联的命名了的permission set的附加的绑定(the union)
译自:
Computing the Allowed Permission Set
http://msdn.microsoft.com/en-us/library/kb207s5y(VS.100).aspx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律