BLP
概述
Bell–LaPadula(BLP) 模型(1973 年)通过安全级别强制保证 机密性:subject 具有许可级别(clearance),object 具有密级(classification)。其规则为两条:no read up(不能读更高级别的数据)、no write down(不能写更低级别的数据)。
模型
[request_definition]
r = sub, sub_level, obj, obj_level, act
[policy_definition]
p = sub, obj, act
[role_definition]
g = _, _
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = (r.act == "read" && r.sub_level >= r.obj_level) || (r.act == "write" && r.sub_level <= r.obj_level)
策略
你通常 不需要 p 规则;BLP 规则由 matcher 基于请求中的级别实现:
- No Read Up:Subject 不能读取安全级别更高的对象
- No Write Down:Subject 不能写入安全级别更低的对象
示例
请求示例
alice, 3, data1, 1, read # alice (level 3) reads data1 (level 1) - ALLOWED
bob, 2, data2, 2, read # bob (level 2) reads data2 (level 2) - ALLOWED
charlie, 1, data1, 1, read # charlie (level 1) reads data1 (level 1) - ALLOWED
bob, 2, data3, 3, read # bob (level 2) reads data3 (level 3) - DENIED (No Read Up)
charlie, 1, data2, 2, read # charlie (level 1) reads data2 (level 2) - DENIED (No Read Up)
alice, 3, data3, 3, write # alice (level 3) writes data3 (level 3) - ALLOWED
bob, 2, data3, 3, write # bob (level 2) writes data3 (level 3) - ALLOWED
charlie, 1, data2, 2, write # charlie (level 1) writes data2 (level 2) - ALLOWED
alice, 3, data1, 1, write # alice (level 3) writes data1 (level 1) - DENIED (No Write Down)
bob, 2, data1, 1, write # bob (level 2) writes data1 (level 1) - DENIED (No Write Down)
安全级别
BLP 用整数表示安全级别,数值越高表示安全级别越高:
- Level 1:公开/非保密(Public/Unclassified)
- Level 2:机密(Confidential)
- Level 3:秘密(Secret)
- Level 4:绝密(Top Secret)
使用场景
BLP 模型的常见应用:
- 军事与政府系统
- 金融机构
- 医疗系统
- 需要严格信息流控制的环境
实现要点
- 强制执行强制访问控制(MAC)
- 系统管理员分配安全级别
- 访问决策取决于安全级别,而非用户身份
- 通过读/写操作防止信息泄露