Re: [nfsv4] NFS4ERR_WRONGSEC inconsistency - LINK and RENAME

"Noveck, Dave" <Dave.Noveck@netapp.com> Sun, 13 April 2008 20:53 UTC

Return-Path: <nfsv4-bounces@ietf.org>
X-Original-To: nfsv4-archive@megatron.ietf.org
Delivered-To: ietfarch-nfsv4-archive@core3.amsl.com
Received: from core3.amsl.com (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 064803A6B41; Sun, 13 Apr 2008 13:53:59 -0700 (PDT)
X-Original-To: nfsv4@core3.amsl.com
Delivered-To: nfsv4@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7F1CF3A6B41 for <nfsv4@core3.amsl.com>; Sun, 13 Apr 2008 13:53:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.596
X-Spam-Level:
X-Spam-Status: No, score=-4.596 tagged_above=-999 required=5 tests=[AWL=2.003, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9geA4UmPKey1 for <nfsv4@core3.amsl.com>; Sun, 13 Apr 2008 13:53:49 -0700 (PDT)
Received: from mx2.netapp.com (mx2.netapp.com [216.240.18.37]) by core3.amsl.com (Postfix) with ESMTP id 4E4F13A699D for <nfsv4@ietf.org>; Sun, 13 Apr 2008 13:53:49 -0700 (PDT)
X-IronPort-AV: E=Sophos;i="4.25,651,1199692800"; d="scan'208";a="29059581"
Received: from smtp1.corp.netapp.com ([10.57.156.124]) by mx2-out.netapp.com with ESMTP; 13 Apr 2008 13:54:18 -0700
Received: from svlexrs02.hq.netapp.com (svlexrs02.corp.netapp.com [10.57.156.154]) by smtp1.corp.netapp.com (8.13.1/8.13.1/NTAP-1.6) with ESMTP id m3DKsIvu023080; Sun, 13 Apr 2008 13:54:18 -0700 (PDT)
Received: from exsvlrb01.hq.netapp.com ([10.56.8.62]) by svlexrs02.hq.netapp.com with Microsoft SMTPSVC(6.0.3790.1830); Sun, 13 Apr 2008 13:54:18 -0700
Received: from exnane01.hq.netapp.com ([10.97.0.61]) by exsvlrb01.hq.netapp.com with Microsoft SMTPSVC(6.0.3790.1830); Sun, 13 Apr 2008 13:54:17 -0700
X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0
Content-class: urn:content-classes:message
MIME-Version: 1.0
Date: Sun, 13 Apr 2008 16:54:14 -0400
Message-ID: <C98692FD98048C41885E0B0FACD9DFB806B0BAC9@exnane01.hq.netapp.com>
In-Reply-To: <26301.198.95.226.230.1208116510.squirrel@webmail.eisler.com>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [nfsv4] NFS4ERR_WRONGSEC inconsistency - LINK and RENAME
Thread-Index: AcidoFth5CakcwIeT+6hY9oNsnw9owAAfqUQ
From: "Noveck, Dave" <Dave.Noveck@netapp.com>
To: Mike Eisler <mre-ietf@eisler.com>, nfsv4@ietf.org
X-OriginalArrivalTime: 13 Apr 2008 20:54:17.0881 (UTC) FILETIME=[8A345090:01C89DA8]
Subject: Re: [nfsv4] NFS4ERR_WRONGSEC inconsistency - LINK and RENAME
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/pipermail/nfsv4>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: nfsv4-bounces@ietf.org
Errors-To: nfsv4-bounces@ietf.org

> > So I think you have two questions:
> >
> > 1) Can security policies be on name-pattern-defined classes of
objects?
> >
> > 2) Is the saved fh protected in the same way as current fh?
> >
> > So my take is:
> >
> > 1Y, 2Y: CREATE, LINK, RENAME
>
> I think it is:
>
> 1Y, 2Y: REMOVE
> 
> Why isn't REMOVE among the list? The target could have a policy.

My intention was that REMOVE was implicitly included in all the options,
just as LOOKUP is.

> Why is CREATE on the list? If the object doesn't 
> exist, it has no policy. If it does exist, then 
> NFS4ERR_EXIST is what must be returned.

Under 1Y, objects can implicitly have policies based on their names.
With the example of "*.secret" requiring kerberos, AUTH_SYS creation of
"big.secret" would return WRONGSEC.

> Why are LINK and RENAME on the list? The saved 
> fh is protected.

> LINK is linking one of the two filehandles; we've 
> already checked their policies. Note that if the 
> target name exists, we return NFS4ERR_EXIST. This 
> is the same as CREATE.

Here I was thinking of a name-based policy where the link matched the
link pattern.

> RENAME: security policies should not be protecting 
> the rename of the policied object. SECINFO is not 
> that smart.

RENAME identifies an existing object by name.  If the caller would get
WRONGSEC doing a LOOKUP of that object, he certainly should get one
renaming it.

> > 1Y, 2N: CREATE, LINK, RENAME, RESTOREFH

> I think it should be:

> 1Y, 2N: REMOVE, LINK, RENAME, RESTOREFH

> for the same reasons as the previous 1Y, 2Y case.

OK.

> > 1N, 2Y: none of the above

> Dave noted this should have had RENAME. I'm not 
> seeing it. A RENAME amounts to adding a directory 
> entry and deleting a directory entry. If REMOVE 
> and CREATE are not on the list, why should RENAME 
> be on the list?

REMOVE was intended to be implicitly on the list as discussed above.

The difference between CREATE and RENAME is similar to that between
CREATE and OPEN.  RENAME works on an existing object which may have
previously acquired a policy.

> > So I think it is:

> > 1N, 2Y: none of the above

I think it would be RENAME and REMOVE.

> > 1N, 2N: LINK, RENAME, RESTOREFH

> I agree.

> So while eliminating RESTOREFH from the list of 
> operations that can return NFS4ERR_WRONGSEC is 
> going to create a lot editing work for me, I agree 
> that 1N, 2Y is the easiest case and the sanest way 
> to deal draft-21's current inconsistency.

I agree.

-----Original Message-----
From: Mike Eisler [mailto:mre-ietf@eisler.com] 
Sent: Sunday, April 13, 2008 3:55 PM
To: nfsv4@ietf.org
Subject: Re: [nfsv4] NFS4ERR_WRONGSEC inconsistency - LINK and RENAME

> From: Noveck, Dave
> Sent: Sunday, April 13, 2008 9:09 AM
> To: 'Trond Myklebust'; Mike Eisler
> Cc: nfsv4@ietf.org
> Subject: RE: [nfsv4] NFS4ERR_WRONGSEC inconsistency - LINK and RENAME


>> Also, just out of curiosity, why do we have RESTOREFH in the above 
>> two
>
>> lists? Aren't you pretty much guaranteed to get a WRONGSEC error on 
>> the filehandle before you get round to the SAVEFH?
>
> I think this may relate to the issue of LINK and RENAME.  If you 
> create an object and continue to use it in the COMPOUND, you could 
> conceive, since it is not atomic, that between two ops the server 
> changes his security policy for the object in question (if you can 
> ever get WRONGSEC subsequently, it has to change some time, so it 
> might be before the COMPOUND is done), but the protocol has decided, 
> in order to simplify client implementations, to avoid the possiblity 
> of getting WRONGSEC for the current fh.  At any time that for the 
> current fh, you are guaranteed not to get the error on a current fh 
> once vetted when established.  You could apply the same to the saved 
> fh, but you don't have to.  Not protecting the saved fh in this way 
> would only mean that you had to check the error at RESTOREFH and 
> anywhere that the saved fh was actually used (only LINK and RENAME, I 
> think)

Makes sense.

> So I think you have two questions:
>
> 1) Can security policies be on name-pattern-defined classes of
objects?
>
> 2) Is the saved fh protected in the same way as current fh?
>
> So my take is:
>
> 1Y, 2Y: CREATE, LINK, RENAME

I think it is:

1Y, 2Y: REMOVE

Why isn't REMOVE among the list? The target could have a policy.

Why is CREATE on the list? If the object doesn't exist, it has no
policy. If it does exist, then NFS4ERR_EXIST is what must be returned.

Why are LINK and RENAME on the list? The saved fh is protected.

LINK is linking one of the two filehandles; we've already checked their
policies. Note that if the target name exists, we return NFS4ERR_EXIST.
This is the same as CREATE.

RENAME: security policies should not be protecting the rename of the
policied object. SECINFO is not that smart.

> 1Y, 2N: CREATE, LINK, RENAME, RESTOREFH

I think it should be:

1Y, 2N: REMOVE, LINK, RENAME, RESTOREFH

for the same reasons as the previous 1Y, 2Y case.

> 1N, 2Y: none of the above

Dave noted this should have had RENAME. I'm not seeing it. A RENAME
amounts to adding a directory entry and deleting a directory entry. If
REMOVE and CREATE are not on the list, why should RENAME be on the list?

So I think it is:

1N, 2Y: none of the above

> 1N, 2N: LINK, RENAME, RESTOREFH

I agree.

So while eliminating RESTOREFH from the list of operations that can
return NFS4ERR_WRONGSEC is going to create a lot editing work for me, I
agree that 1N, 2Y is the easiest case and the sanest way to deal
draft-21's current inconsistency.



_______________________________________________
nfsv4 mailing list
nfsv4@ietf.org
https://www.ietf.org/mailman/listinfo/nfsv4
_______________________________________________
nfsv4 mailing list
nfsv4@ietf.org
https://www.ietf.org/mailman/listinfo/nfsv4