On Sun, 26 Mar 2006, Elad Efrat wrote:I've followed the kauth design process at Apple, and the NetBSD discussions along these topics with interest, having gone through much the same process in the integrating of mandatory access control and ACLs into FreeBSD a few years ago. I thought I'd share a few thoughts, which you're welcome to ignore. :-) The problem of categorizing checks is actually quite difficult -- in the TrustedBSD MAC Framework in FreeBSD, we end up avoiding the issue by not categorizing access control checks at all, but loosely naming them based on the "object" of the operation. LSM takes a very similar approach. The Darwin kauth framework has been influenced by the MAC Framework design, but takes a more explicit approach to categorization. I've always liked the notion that we categorize operations, and checks more specifically, by the object type. This is made tricky when you have checks that involve multiple objects without an explicit subject, however. For example, the check to deliver an mbuf to a socket in FreeBSD is a subject-free operation. In the end, all this comes down to is the ease of grasp of the framework for the developer, and the ease with which they can express the policy they want to implement. The object-oriented view of the world is useful, though, and thinking about it as objects and methods is a useful way to think about things. kauth(9) is an interesting framework, and clearly benefits from a lot of the prior work, be it FLASK, LSM, the MAC Framework, etc. It's a carefully selected subset intended to support Apple's critical audiences -- workstation firewall vendors, anti-virus vendors, the need to introduce ACLs, etc. It doesn't meet the full set of needs we have in FreeBSD -- for example, it does not provide clear object life cycles and labeling facilities required for mandatory access control. One of the design choices in kauth(9) is to provide relatively few methods for the security module to implement -- this is helpful in some ways, and makes it easier to implement variant logic using switch(), etc, but makes other things trickier. In FreeBSD, we originally went a bit more in this direction, but then moved away because we were concerned about proiding stronger type safety for policy implementors -- we ran into a lot of bugs where the void arguments for generic check functions were being miscast, especially as the APIs evolved. When we switched from a smaller number of indexed checks to a larger number of function prototypes with explicit type checking, these went away. Robert N M Watson
| Martin Bligh | Re: Unified tracing buffer |
| Ingo Molnar | [announce] "kill the Big Kernel Lock (BKL)" tree |
| Con Kolivas | [PATCH] [RFC] sched: accurate user accounting |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Krzysztof Oledzki | Error: an inet prefix is expected rather than "0/0". |
| Wenji Wu | A Linux TCP SACK Question |
| Ramachandra K | [PATCH 11/13] QLogic VNIC: Driver utility file - implements various utility macros |
| Jay Cliburn | Re: atl1 64-bit => 32-bit DMA borkage (reproducible, bisected) |
git: | |
| Andrew Morton | Untracked working tree files |
| Pierre Habouzit | Re: libgit2 - a true git library |
| Nicolas Vilz 'niv' | git + ssh + key authentication feature-request |
| Martin Langhoff | Re: pack operation is thrashing my server |
| Steve B | SSH brute force attacks no longer being caught by PF rule |
| GVG GVG | ssh_exchange_identification: Connection closed by remote host |
| rancor | How to copy/pipe console buffert to file? |
| Richard Stallman | Real men don't attack straw men |
| Question on swap as ramdisk partition | 40 minutes ago | Linux kernel |
| Netfilter kernel module | 11 hours ago | Linux kernel |
| serial driver xmit problem | 13 hours ago | Linux kernel |
| Why Windows is better than Linux | 13 hours ago | Linux general |
| How can I see my kernel messages in vt12? | 20 hours ago | Linux kernel |
| Grub | 1 day ago | Linux general |
| vmalloc_fault handling in x86_64 | 1 day ago | Linux kernel |
| epoll_wait()ing on epoll FD | 1 day ago | Linux kernel |
| Framebuffer in x86_64 causes problems to multiseat | 1 day ago | Linux kernel |
| Difference between 2.4 and 2.6 regarding thread creation | 2 days ago | Linux general |
