#high-level #policy #language #cascade #object #selinux #se-linux

bin+lib selinux-cascade

用于指定 SELinux 策略的高级语言

2 个版本

0.0.2 2022 年 6 月 23 日
0.0.1 2021 年 11 月 4 日

#2 in #cascade

MIT 协议

200KB
5K SLoC

简介

Cascade 是一个旨在构建用于定义 SELinux 策略的新高级语言的项目。

该语言的整体结构基本上是面向对象的,类型承载了它们的使用知识,以及一个类型定义的层次继承树,它反映了各种场景中的现实世界使用。语法主要受到 Rust 的启发,虽然也受到各种语言的启发,但重点在于简单、一致性和对不同背景开发者的熟悉度。

入门指南

要构建可执行文件,请运行

$ cargo build

要运行测试,请运行

$ cargo test

Cargo 将自动下载所有 Rust crate 依赖项。测试依赖于 secilc 包。

casc

Cascade 编译器名为 casc,成功构建后位于 target/debug/casc。输入文件作为参数提供。递归搜索目录以查找策略文件。如果没有找到有效的策略文件,casc 将以错误退出。

$ casc my_policy.cas

casc 将创建一个名为 out.cil 的文件,其中包含 CIL 策略。然后可以使用 secilc 将此 CIL 策略编译成最终的 SELinux 策略。

未来版本将添加更多 casc 参数和配置

audit2cascade

当前的 audit2cascade 二进制文件是一个简单的占位符。最终,这将成为一个类似 audit2allow 或 audit2why 的工具,根据审计日志中 AVC 否决消息的输出生成 Cascade 策略。它将利用 hll 策略中存在的语义信息,帮助开发者就处理否决做出明智的决策,而不仅仅是添加原始允许规则。

编写 Cascade 策略

有关编写 Cascade 策略的详细信息,请参阅 类型强制

贡献

感谢您对贡献的兴趣!您可以通过多种方式为此项目做出贡献。

报告错误和建议改进

如果您发现错误或对改进有建议,请随时在 问题跟踪器 中创建问题

贡献代码

我们欢迎您通过GitHub PR提交代码贡献。如果您计划添加主要功能,最好在开始大量工作之前在问题跟踪器中进行讨论,以便我们都能就其工作方式达成共识。对于较小的调整和错误修复不需要进行高级讨论。

项目状态

项目仍处于早期阶段,正在快速开发和改进。文档中列出的所有功能可能尚未完全实现。有关最新更改,请参阅 CHANGELOG.md,有关未来的工作计划和里程碑,请参阅 ROADMAP.md

依赖项

~8–18MB
~245K SLoC