基于模型的安全权限运行时检查
1. 序列图的动态检查
在系统中,需要解决的一个问题是:系统中分配的所有权限是否能保证序列图中建模的进程得以完成。若一个对象要发送消息,它必须拥有该操作所需的所有权限。静态分配的权限通常不是问题,但动态委托分配的权限则需满足以下条件:
- 权限证书必须在使用前接收,包括使用证书中的权限以及将证书传递给其他对象。
- 证书的发出者必须能够创建该证书,即其必须静态拥有该权限,且该权限可用于委托。
- 证书在使用时必须有效,其有效性的丧失由证书中的时间戳定义。
- 定义为只能使用一次的证书,使用后即失效,其他对象不能再次使用。
以即时通讯服务的序列图为例,对象 Sender 调用 ForS 的 forward() 方法,需要 forward 权限。由于 Sender 没有该权限,它通过消息 create() 传递的证书进行委托:
{certificate = (SubS, null, ForS, forward, InstantMessenger, −1, −1)}
由于缺乏该权限,消息发送者 SubSender 无法创建此证书,必须通过发送 subscriptionConfirmation() 从 SubS 处获取。 SubS </
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



