OSTree <3 SELinux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

In case you didn't notice, I'm back doing SELinux stuff - it's fun to be back =)

Now, I've been working on a new general-purpose upgrade system for Linux-based operating systems, called OSTree.  There is a higher level project "Fedora Atomic Initiative" which I just announced a new release of here:
https://lists.fedoraproject.org/pipermail/devel/2014-March/196257.html

So why am I posting here?  Well, I designed OSTree from day 0 to support SELinux well, and I think it shows.  Let's just say the integration of traditional package systems (dpkg/rpm) and SELinux is...a bit ugly.

For example, whether and how we relabel existing contexts on disk when upgrading to a new policy.  Whether and how we restart running daemons after a new policy.

Say that an update changes policy and a daemon at the same time.  With the "partial live updates" model that traditional package systems create, you can have the *old* daemon running with the *new* policy, and the new policy now denies something only the old version needs.

This kind of problem is deeply evil and insidious because only live updates see it - if someone downstream tries to reproduce with the same package versions, they won't see it on a fresh boot.

So with OSTree, I solve this by simply not supporting "partial live updates".  Every upgrade is *fully atomic* you have to reboot for a new SELinux policy, a new daemon, etc.

Another example of a major change OSTree enables is that most SELinux file context labeling happens on the *build server side*.  This is significantly more efficient if one is replicating to many machines, and also more reliable.

Except that on the client end, we need to handle /etc specially:
https://git.gnome.org/browse/ostree/commit/?id=2313bdcb62eee1170b128737ca84664cf82b13b8

That's old code, but the basic idea is that on upgrades, we do a 3 way merge of /etc - and on the client end, OSTree will load the policy and ensure that the new /etc gets the property security contexts.

So that's some details about upgrades.

I could talk more here about how the OSTree model of shipping and testing complete *trees* melds well with the similarly centralized selinux-policy model, but hopefully that's obvious.

On the subject of testing - my goal is to get notification of a new AVC denial after a package build in Koji for one of my tracked trees down to minutes, if not faster.

This mail is already long, but I just wanted you all to know I'm committed to making SELinux work well, and if you have a chance to look at the OSTree-SELinux integration, I'm happy to hear any feedback.

_______________________________________________
Selinux mailing list
Selinux@xxxxxxxxxxxxx
To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.

[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux