Application-level Access Management

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

 




Hello Everyone,

I am working on adding SELinux-based ACLs to the Apache QPid project. I have considered how I might accomplish this based on QPid's ACL model. However, I have a question. Can I store the security context of arbitrary objects in SELinux itself? In this case, an 'object' is a C++ object inside a qpid daemon: a queue, broker, etc. The security contexts of files, for example, are usually stored in the xattrs on the filesystem. Can I store the security context of a qpid queue in SELinux somewhere, or do I need to create a file to store those contexts? Is there a more secure way to store the contexts?

More detail about this endeavor is noted below. This was a recent thread on the qpid-dev mailing list.

Thanks,
-Josh

AclModule (which is pluggable). Can that not be implemented as a call to security_compute_av?

yea, I think we might have enough abstraction. We might need to add a map of IDs to the object list for SELinux. If that is needed I can volunteer to do

That's what I was thinking, as I took a look at

/qpid/cpp/src/qpid/broker/AclModule.h

...and its friends under qpid/acl. The data in AclModule.h looks like it's a good representation of the various Actions we'll have to model. We will need to model the security contexts pertaining to each item. For example, you can have a file type for an index.htm file, of httpd_sys_content_t. Contrast this to user_home_t. We might have a queue, FinancialDataQueue, that should not be able to be read by the webserver. FinancialDataQueue would have a type of fin_content_t. Since the contexts are not stored in the Qpid objects themselves, the ACL plugin will need to map each object to its context. If a user with type httpd_t attempts to read from FinancialDataQueue, then the authorize call would go something like this:

1. User Name = 'httpd'
2. Queue Name = 'FinancialDataQueue'
3. Lookup current context of user 'httpd' (that is a SELinux library call, to find the SELinux user called 'httpd') and find its type to be httpd_t 4. Lookup current context of queue FinancialDataQueue and find its type to be fin_content_t
5. Call security_compute_av with the contexts, and pass or fail as needed.

Number 4 is tricky. I am not yet sure if SELinux contexts can be stored for arbitrary named objects. On the filesystem the are usually stored in xattrs. Dan?

Thoughts?

--

-----
http://www.globalherald.net/jb01
GlobalHerald.NET, the Smarter Social Network! (tm)

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@xxxxxxxxxxxxxxx


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.

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

  Powered by Linux