跳到主要内容

BLP

简介​

Bell–LaPadula (BLP) 模型(1973年)通过安全级别强制实施 机密性:主体拥有许可级别(clearances),对象拥有分类级别(classifications)。两条规则:禁止向上读(无法读取更高级别的数据),禁止向下写(无法写入更低级别的数据)。

模型​

[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:

  • 禁止向上读:主体不能读取具有更高安全级别的对象
  • 禁止向下写:主体不能写入具有更低安全级别的对象

示例​

请求示例​

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 将安全级别表示为整数,数值越高表示安全性越强:

  • 级别 1:公开/未分类
  • 级别 2:机密
  • 级别 3:秘密
  • 级别 4:绝密

使用场景​

常见的 BLP 模型应用场景:

  • 军事和政府系统
  • 金融机构
  • 医疗系统
  • 需要严格信息流控制的环境

实现说明​

  • 强制实施强制访问控制 (MAC)
  • 系统管理员分配安全级别
  • 访问决策取决于安全级别,而非用户身份
  • 防止通过读/写操作泄露信息

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.