Policy Description Language for Authorization using Logic-Based Programming
本文提出了一种基于 Datalog 的策略描述语言,通过引入动态应用程序进程状态来实现细粒度的访问控制,并通过在深度防御策略中成功组合与评估 SELinux 策略证明了其有效性。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你是这座规模宏大、高科技城堡的安全主管。你的目标是保护内部最珍贵的宝藏。在过去,保安(即“策略”)会站在每一扇门前,为每一个试图进入的人检查一份冗长的手写规则清单。
问题所在:“纸质墙”问题
本文的作者指出,现代计算机系统就像已经变得极其庞大且复杂的城堡,为每一扇门和每一个人编写唯一的规则是不可能的。
- 旧方式(类似于 SELinux): 想象一名保安拿着一叠 40,000 张单独的索引卡。每张卡片都写着:“人物 A 可以使用钥匙 C 打开门 B。”如果你想为一个群体修改规则,你必须重写成千上万张卡片。这既混乱、难以阅读,又容易出错。
- 目标: 作者希望停止编写 40,000 张单独的卡片,转而编写一本单一的、智能的“说明书”。
解决方案:“智能食谱书”(基于逻辑的编程)
作者提出了一种新的语言,它就像一本智能食谱书或一个用于安全规则的计算机程序。他们不再列出每一项权限,而是编写“食谱”(逻辑程序)来解释权限是如何运作的。
以下是他们的“食谱书”如何运作的,使用了简单的类比:
分组(“制服”类比):
与其说“鲍勃可以打开金库”、“爱丽丝可以打开金库”以及“查理可以打开金库”,不如写一条规则:“任何穿着经理制服的人都可以打开金库。”
在论文中,这被称为层级继承。如果你给鲍勃穿上“经理制服”,他就自动获得了经理的所有规则。你不需要为他编写新规则;系统知道他属于这个群体。子程序(“流水线”类比):
想象一个工厂,产品要经过三个步骤:准备、烹饪和包装。与其为每个工位的每个工人编写新规则,不如为“准备站”写一条规则,为“烹饪站”写一条规则。
作者称之为子程序化。你可以定义一个过程中的“步骤”(如一笔交易),并规定:“一旦‘准备’步骤完成,工人会自动进入‘烹饪’步骤。”这让你只需通过几行文本,就能描述复杂的、多步骤的安全流程。动态状态(“红绿灯”类比):
有时,规则取决于“此时此刻”正在发生什么。例如,“只有在‘火警’关闭时,你才能进入厨房。”
这种新语言可以处理这些变化的条件。它可以设定:“如果系统当前处于‘受污染’状态(就像红灯亮起),则无人可以进入。”这使得安全系统能够对计算机的当前状态做出反应,而不仅仅是静态的列表。
实验:测试新系统
作者不仅编写了这本食谱书;他们还将其与真实情况进行了对比测试。
- 测试: 他们将 SELinux(一种真实的、广泛使用的 Linux 安全系统)的庞大安全策略翻译成了他们的新“食谱书”语言。
- 结果(准确性): 他们向旧系统和新系统提出了相同的 1500 万个问题(例如:“用户 X 是否可以执行动作 Y?”)。两者的答案在 99% 的情况下是一致的。这证明了这种新语言与原本复杂但精确的旧系统一样准确。
- 结果(效率): 这正是奇迹发生的地方。原始的 SELinux 策略需要 6,524 行代码(以及 133 页的纸张)。而新语言仅用 335 行(95 页)就描述了完全相同的安全规则。我们将策略缩减了约 95%。
为什么这很重要
论文结论认为,虽然旧方式(逐一编写每条规则)在查看单条规则时很容易理解,但在观察整个系统时却会变成一场噩梦。
这种新语言就像是从编写一本包含 40,000 个独立单词的字典,转变为编写一本语法书。
- 优点: 它让整个系统变得更小、更易于管理,并且更容易观察“全局”。它允许安全系统变得更加灵活和具有适应性。
- 缺点: 如果你只看新系统中的某一条规则,它看起来可能会比简单的句子更抽象(就像数学公式一样)。但对于管理一个庞大且复杂的系统来说,“语法书”的方法显然更为优越。
简而言之,作者开发了一种工具,让安全专家能够使用智能、可重用的逻辑来描述复杂、多层的防御体系,而不是淹没在重复、独立的规则海洋中。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。