中文

检测 Puppet 程序中的缺失依赖与通知器

软件工程 2023-12-05 v1

摘要

Puppet 是一种流行的计算机系统配置管理工具。它提供的抽象使管理员能够以声明方式设置其计算机系统。它的使用存在两个潜在缺陷。首先,若每当一个抽象依赖于另一个抽象时未指定排序约束,抽象的非确定性应用可能导致竞态条件。其次,若服务未通过通知构造与其资源绑定,则每当资源被修改时系统可能在陈旧状态下运行。此类故障会降低计算基础设施的可用性与功能性。我们开发了一种通过分析 Puppet 程序及其系统调用跟踪来识别这些问题的方法。具体而言,我们提出了一个用于跟踪的形式化模型,使我们能够捕获 Puppet 抽象与文件系统的交互。通过分析这些交互,我们识别(1)彼此相关的抽象(例如,操作同一文件),以及(2)应作为通知器以便正确传播变更的抽象。然后我们将跟踪分析得到的关系与程序的依赖图(包含程序中声明的所有排序约束和通知的表示)进行比对。若检测到不匹配,我们的系统报告潜在故障。我们已在大量 Puppet 模块上评估了我们的方法,并在其中 30 个模块中发现了 57 个先前未知的问题。基准测试进一步表明,我们的方法可在数分钟内分析以千行和数百万次系统调用为量级的实际配置。

关键词

引用

@article{arxiv.1905.11070,
  title  = {Detecting Missing Dependencies and Notifiers in Puppet Programs},
  author = {Thodoris Sotiropoulos and Dimitris Mitropoulos and Diomidis Spinellis},
  journal= {arXiv preprint arXiv:1905.11070},
  year   = {2023}
}