[RFC] Security Enhanced NFS (SENFS) Requirements - draft 05
James Morris
jmorris at namei.org
Wed Jun 20 19:34:10 EDT 2007
On Wed, 20 Jun 2007, J. Bruce Fields wrote:
> On Wed, Jun 20, 2007 at 04:49:45PM -0400, James Morris wrote:
> > SENFS should support authentication on a per-domain granularity so that
> > different domains running on a client can use different cryptographic
> > keys and facilities.
>
> Sorry, I'm not totally sure I understand what a "domain" is. I assume
> every rpc call will need to be associated with a domain? (Just one, or
> is it every more than one?) If you need a different credential for each
> domain, what kind of access control do you need for those credentials?
A domain in SELinux refers to a process running in a specific security
context (i.e. with a specific security label). Processes running in the
same domain are considered equivalent by SELinux from a security point of
view.
An example of the above is that a process labeled as "unclassified" might
not have access to the same keying material as a process labeled as
"secret", and the system needs to differentiate on that basis.
Generally, the SELinux credentials need to be used as factors in
authentication when providing NFS access.
Each RPC call would be associated with an individual process on the
client, although SELinux would only make use of the SELinux labels, which
are applied at domain granularity.
Per-domain access control needs to cover all security-relevant aspects of
the interaction, and would be configured in SELinux security policy.
> > 3.9. Domains of Interpretation
> >
> > In SELinux, a Domain of Interpretation (DOI) represents an
> > administrative security boundary, where all systems within the DOI have
> > semantically coherent labeling. That is, a security label must always
> > mean exactly the same thing anywhere within the DOI. An SELinux DOI
> > may be further demarcated for any other administrative purpose.
>
> Does the current SELinux have any notion of a DOI?
DOI is an attribute negotiated and used by the IPsec labeled networking in
SELinux.
> Would it be possible to ignore this problem in a first implementation,
> and just assume the client and server are always in the same DOI?
We want to build DOI support in from the start, rather than try and add it
later. Identifying and checking DOIs is not difficult, although things
like translation can be (and this aspect will not be mandatory).
> > 3.14. Namespace Access
> >
> > The server should provide a means to authorize selective access to the
> > exported filesystem namespace based upon client credentials and
> > according to security policy.
>
> Could you give an example? Why is this necessary, and how does it go
> beyond the ordinary access control used for files in the exported
> filesystems?
Good point -- in general, SELinux access control would simply handle this
correctly.
There are cases, though, where multi-level security folk might want to
either hide part of the namespace completely, or even present a different
view, based on the client domain. e.g. domains labeled as 'unclassified'
objects only see:
server:/export
|-- rfcs
|-- usenet
while domains labeled as 'secret' only see:
server:/export
|-- memos
In the MLS world, this kind of thing is a common requirement (where it's
sometimes referred to as multilevel directories, or more generally,
polyinstantiation).
> > 3.15. External Remote Filesystems
> >
> > Under NFSv4, filesystems located externally to the server may be
> > exported in the same namespace as locally exported filesystems.
>
> You're thinking of referrals here, or something else?
Yes.
> > SENFS will not support this initially in Full Mode, although for Guest
> > Mode, the server may convey locally generated security labels to the
> > client.
>
> I don't understand.
If my understanding of multi-server name spaces & referrals is correct,
then the NFS server may be exporting a filesystem from another machine as
if it was its own.
In this case, we won't initially try and solve the potential SELinux
issues here (e.g. conveying SELinux state between multiple parties, and
across multiple security boundaries), and instead just allow the server to
assign labels to the filesystem itself. This would likely be some default
label for the entire referred fs.
- James
--
James Morris
<jmorris at namei.org>
More information about the NFSv4
mailing list