Re: [nfsv4] New wording of Security Section for Flex Files

Thomas Haynes <> Tue, 01 August 2017 18:18 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 2556C13216D for <>; Tue, 1 Aug 2017 11:18:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.491
X-Spam-Status: No, score=-2.491 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, T_DKIM_INVALID=0.01] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=fail (1024-bit key) reason="fail (message has been altered)"
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id l3bEQLVfRbFA for <>; Tue, 1 Aug 2017 11:18:56 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id C7812131566 for <>; Tue, 1 Aug 2017 11:18:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector1-primarydata-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=g7eD0y3khPc3qj/UMSYDL8bTKyXKuZ/jgZZoV2Ne/0Y=; b=f13lLL04ZbRfysjMlVjKvEV9AF0b0RoiNkPL5dQlUXwMltAJS6/cBSROFIFlSa6l2kAf1oIB+rxmo9GcBL2AhTBWcL4vbqSIUy5piMDFzpZzwewOrtPzKszTR7UEBGu2SKfg3N6Y0kTycq6gakLcQZSgikjsCg2CxWeYO24fxYw=
Received: from ( []) (Using TLS) by with ESMTP id us-mta-65-nqw69tHxOfC23tYI8AKRqQ-1; Tue, 01 Aug 2017 14:18:52 -0400
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1304.22; Tue, 1 Aug 2017 18:18:50 +0000
Received: from ([]) by ([]) with mapi id 15.01.1304.023; Tue, 1 Aug 2017 18:18:49 +0000
From: Thomas Haynes <>
To: Benjamin Kaduk <>
CC: "" <>, Olga Kornievskaia <>
Thread-Topic: New wording of Security Section for Flex Files
Thread-Index: AQHTBOJTubmEu3G57EqvOqsgsMtAEKJoh0CAgAdUOYA=
Date: Tue, 01 Aug 2017 18:18:49 +0000
Message-ID: <>
References: <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
x-originating-ip: []
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BY2PR1101MB1095; 20:q/VR8kkKM69kMxtYxjO/imr6NBPHtWCcr1lJOX3zRIcE1/Qsso4PVjXpc2VbSCV6Ru4K7jM3W9zSSoa9A/HC1Z4L8tskw1vUmDM+TdT0C+39U2oDQDld8Z3Hq8y6Rj6uKXQgEENQjmqa3DjbdaYT/2xHu1EFJcr9jqBxP1L7sGQ=
x-ms-office365-filtering-correlation-id: 84f14029-3045-40b7-4fb5-08d4d909c20f
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(2017082002075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BY2PR1101MB1095;
x-ms-traffictypediagnostic: BY2PR1101MB1095:
x-exchange-antispam-report-test: UriScan:(158342451672863)(192374486261705)(788757137089);
x-microsoft-antispam-prvs: <>
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(6041248)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(20161123562025)(2016111802025)(6043046)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR1101MB1095; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR1101MB1095;
x-forefront-prvs: 0386B406AA
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(39840400002)(39450400003)(39410400002)(39400400002)(24454002)(377454003)(189002)(199003)(8676002)(229853002)(5660300001)(6506006)(3660700001)(2906002)(3280700002)(36756003)(54906002)(6512007)(8936002)(2171002)(97736004)(14454004)(53936002)(305945005)(25786009)(83716003)(2900100001)(50986999)(7736002)(4326008)(86362001)(478600001)(105586002)(6436002)(54356999)(99286003)(68736007)(66066001)(106356001)(76176999)(81156014)(6486002)(81166006)(82746002)(15650500001)(77096006)(110136004)(189998001)(6916009)(33656002)(6246003)(102836003)(38730400002)(3846002)(6116002)(2950100002)(53546010)(101416001)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR1101MB1095;; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en;
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-ID: <>
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Aug 2017 18:18:49.7923 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 03193ed6-8726-4bb3-a832-18ab0d28adb7
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR1101MB1095
X-MC-Unique: nqw69tHxOfC23tYI8AKRqQ-1
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
Archived-At: <>
Subject: Re: [nfsv4] New wording of Security Section for Flex Files
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: NFSv4 Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 01 Aug 2017 18:18:58 -0000

> On Jul 27, 2017, at 7:23 PM, Benjamin Kaduk <> wrote:
> On Tue, Jul 25, 2017 at 01:07:02AM +0000, Thomas Haynes wrote:
>> I hope the following addresses the issues brought up by Ben and Olga;
> I think it does, thanks.  A couple notes inline.
>> First paragraph of Section 15 is replaced by:
>>   The pNFS extension partitions the NFSv4.1+ file system protocol into
>>   two parts, the control path and the data path (storage protocol).
>>   The control path contains all the new operations described by this
>>   extension; all existing NFSv4 security mechanisms and features apply
>>   to the control path (see Sections 1.7.1 and 2.2.1 of [RFC5661]).  The
>>   combination of components in a pNFS system is required to preserve
>>   the security properties of NFSv4.1+ with respect to an entity
>>   accessing data via a client, including security countermeasures to
>>   defend against threats that NFSv4.1+ provides defenses for in
>>   environments where these threats are considered significant.
>> Replace Section 15.1 with:
>>   RPCSEC_GSS version 3 (RPCSEC_GSSv3) [RFC7861] could be used to
>>   authorize the client to the storage device on behalf of the metadata
>>   server.  This would require that each of the metadata server, storage
>>   device, and client would have to implement RPCSEC_GSSv3.  The second
>>   requirement does not match the intent of the loosely coupled model
>>   that the storage device need not be modified.  (Note that this does
>>   not preclude the use of RPCSEC_GSSv3 in a loosely coupled model.)
>>   Under this coupling model, the principal used to authenticate the
>>   metadata file is different than that used to authenticate the data
>>   file.  For the metadata server, the RPC credentials would be
>>   generated by the same source as the client.  For RPC credentials to
> "by the same source as" feels like a slightly awkward phrasing that leaves
> me wondering if I don't quite properly understand the intended sentiment.

I think anything here will be “slightly awkward”.

For the metadata server, the RPC credentials are generated and
verified as in the non-pNFS case.

A little better, but still reads a bit off.

> Isn't it basically required that the client has RPC credentials to talk
> to the metadata server in order to do anything?


>>   the data on the storage device, the metadata server would be
>>   responsible for their generation.  Such "credentials" SHOULD be
>>   limited to just the data file be accessed.  Using Kerberos V5 GSS-API
>>   [RFC4121], some possible approaches would be:
>>   o  a dedicated/throwaway client principal name akin to the synthetic
>>      uid/gid schemes.
>>   o  authorization data in the ticket.
>>   o  an out-of-band scheme between the client and metadata server.
> Now I feel like I should have spent more time to carefully word the listing
> in my original email :)
> Though I think this text is fine to convey the needed information, at least.
>>   [[AI15: Editorial Note: I have *SHOULD* and not *MUST* because there
>>   might be some limit on the number of outstanding credentials due to
>>   either the number of files or the number of client.  Feel free to
>>   correct me.  --TH]]
> I can think of schemes where there are no limits, but I am not prepared
> to guarantee that all schemes one might want to use would be free of limits.
> So the SHOULD seems fine to me.

Thanks, I’ll remove the AI15.

> Semi-relatedly, I forget exactly how much trust/coupling there is supposed
> to be between the data and metadata servers/operators in this scheme.

The trust is that for the exported part of the name space, the metadata server
has full super user rights.

Note that if the storage device is used for other purposes, the metadata
server should not have super user rights.

> In particular, if the metadata server is sufficiently trusted that it can
> have a copy of the data server's kerberos credentials (the nfs/ keytab),
> then there is quite a lot of flexibility, since the metadata server can
> literally construct an arbitrary ticket and encrypt it to "itself" (i.e.,
> the data server's keytab).  But I don't know whether it's appropriate
> to mention this example in the document or not.

This could be an out-of-band solution. 

I really want to balance providing enough context of how the system
can be secured against being too specific. I.e., have the hand waving
be plausible.

>>   Depending on the implementation details, fencing would then be
>>   controlled either by expiring the credential or by modifying the
> Kerberos doesn't have a revocation (expiry prior to the original expiry)
> story at all.  But since we are talking about RPCSEC_GSS, this text
> is fine, since other GSS mechanisms might allow it :)

I think the lack of upper case use of RFC 2119 words covers it here.

> -Ben
>>   synthetic uid or gid on the data file.  I.e., if the credentials are
>>   at a finer granularity than the synthetic ids, it might be possible
>>   to also fence just one client from the file.
>> Replace 15.1.2 with:
>>   With tight coupling, the principal used to access the metadata file
>>   is exactly the same as used to access the data file.  The storage
>>   device can use the control protocol to validate any RPC credentials.
>>   As a result there are no security issues related to using RPCSEC_GSS
>>   with a tightly coupled system.  For example, if Kerberos V5 GSS-API
>>   [RFC4121] is used as the security mechanism, then the storage device
>>   could use a control protocol to validate the RPC credentials to the
>>   metadata server.