|
Security Enhanced Linux
What's New
Frequently Asked Questions
Background
Documents
License
Download
Participating
Mail List
Archives
Remaining Work
Contributors
Related Work
Press Releases
Information Assurance Research
NIARL In-house Research Areas
Mathematical Sciences Program
Sabbaticals
Computer & Information Sciences Research
Technology Transfer
Advanced Computing
Advanced Mathematics
Communications & Networking
Information Processing
Microelectronics
Other Technologies
Technology Fact Sheets
Publications
Related Links
|
SELinux Mailing List
[RFC] Common Intermediary Language
From: Caleb Case <ccase_at_tresys.com>
Date: Tue, 14 Jul 2009 13:21:59 -0400
An example of this is an administrator who wants to create an Apache policy that is based on the default Apache policy. The administrator wants to tweak the policy a little, but also wants to track changes from the distribution to the original Apache policy. Another example is an administrator that wants to take a permissive distribution policy and tighten it down. The administrator doesn't want to replace the entire policy, just remove a few permissions from it (maybe even removing permissions that aren't there already). This is just the problems from the administrator's point of view. Consider the problems from a 3rd party software provider, the distribution, and individual software users. For example, a distribution wants to ship a policy that works for a broad range of uses, but that compromises some security for flexibility. The administrator of a system only needs a limited set of that flexibility, but also wants to get policy updates from the distribution. The current language also makes it difficult to integrate well with High Level Languages (HLL). HLL needs a more featureful language to target, but adding these features to the kernel policy language would unnecessarily complicate the kernel security server. The current module language suffers from the order dependence of policy resulting in the base policy problem. All policy modules are dependent on it, it can't be easily upgraded, and some features end up baked into the base policy. The Common Intermediary Language (CIL) is designed to solve these problems and many others that come up during policy development. It provides a common target for higher-level/domain-specific languages. It is not intended as a language that most policy developers will write in. The CIL is the combination of two languages: a transformation language and a policy language. The transformation language provides a number of useful features. For example, it allows you to copy existing policy and rename it (as if it were a template). Another example: it allows distributions to ship _read-only_ policy while still allowing administrators to make changes to it. The transform language acts similar to a semantic diff. The supported operations are add, delete, move, and copy with the potential add new operations as required. It is an embedded language that exists inline with the policy language. The policy language is a mid-level language that incorporates aspects of the kernel policy language and provides some additional features over the current policy language:
The policy language is hierarchical in nature. Because of this policy can be written such that private types are protected from use by other modules (such as in an allow rule).
Policy can be grouped into blocks that take arguments. They are similar in concept to interfaces in Reference Policy.
Sets of types, roles, users, and other policy elements can be represented. They are similar to attributes in the kernel language.
Policy elements can be selected with a syntax similar to that of FCGlob or XPath.
Labeling is integrated into the policy language. This maintains the relationship between policy rules and associated labeling.
The CIL supports debugging symbols that allow tracing back generated CIL to its original source files.
The CIL is completely order independent.
The CIL's hierarchical nature lends itself to policy access control. Policy access control will be able to not only dictate which types, roles, etc. you can use, but which semantic chunks of policy you can edit and how you can edit them. Furthermore, modifications can be kept separate from the original policy source. -- This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with the words "unsubscribe selinux" without quotes as the message.Received on Tue 14 Jul 2009 - 13:22:17 EDT |
|
|
Date Posted: Nov 14, 2008 | Last Modified: Mar 19, 2010 | Last Reviewed: Mar 19, 2010 |











