Re: [secdir] Secdir review of draft-ietf-i2rs-architecture-07

Joel Halpern <joel.halpern@ericsson.com> Mon, 22 December 2014 19:13 UTC

Return-Path: <joel.halpern@ericsson.com>
X-Original-To: secdir@ietfa.amsl.com
Delivered-To: secdir@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E2A471A6EE7; Mon, 22 Dec 2014 11:13:00 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FKYDcdyDWAjZ; Mon, 22 Dec 2014 11:12:54 -0800 (PST)
Received: from usevmg20.ericsson.net (usevmg20.ericsson.net [198.24.6.45]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6EF531A6F2B; Mon, 22 Dec 2014 11:12:54 -0800 (PST)
X-AuditID: c618062d-f79376d000000ceb-1b-54981c328734
Received: from EUSAAHC005.ericsson.se (Unknown_Domain [147.117.188.87]) by usevmg20.ericsson.net (Symantec Mail Security) with SMTP id D4.3C.03307.23C18945; Mon, 22 Dec 2014 14:27:14 +0100 (CET)
Received: from EUSAAMB101.ericsson.se ([147.117.188.118]) by EUSAAHC005.ericsson.se ([147.117.188.87]) with mapi id 14.03.0195.001; Mon, 22 Dec 2014 14:12:52 -0500
From: Joel Halpern <joel.halpern@ericsson.com>
To: Charlie Kaufman <charliekaufman@outlook.com>, "secdir@ietf.org" <secdir@ietf.org>
Thread-Topic: Secdir review of draft-ietf-i2rs-architecture-07
Thread-Index: AdAdsDdxSkc3V7/1QeiWXeAzuAUWTwAanowA
Date: Mon, 22 Dec 2014 19:12:51 +0000
Message-ID: <6BCE198E4EAEFC4CAB45D75826EFB076032E0198@eusaamb101.ericsson.se>
References: <COL401-EAS1272642F299281F38232C0DDF560@phx.gbl>
In-Reply-To: <COL401-EAS1272642F299281F38232C0DDF560@phx.gbl>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [147.117.188.9]
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrALMWRmVeSWpSXmKPExsUyuXRPuK6RzIwQgylL5S2m/T7BYvHp719m ixl/JjJbfFj4kMWBxWPJkp9MHptfv2D2+HL5M1sAcxSXTUpqTmZZapG+XQJXxrEdE1kKlgVW TNmv38C4xKmLkZNDQsBE4uS7o0wQtpjEhXvr2boYuTiEBI4wShze/JAVwlnOKLFs1j5GkCo2 AT2Jte8fg3WICIRLPHvWzQ5SxCzQwygx4eVsdpCEsICtxJwPT6CK7CSuT93GDGEbSZx5uIYV xGYRUJU4+X0/WJxXwFfiwpXDYAuEBGwkbuzpYgGxOYHmHPpxBizOCHTe91NrwGYyC4hL3Hoy H+psAYkle84zQ9iiEi8f/2OFsBUl9vVPZ4eo15O4MXUKG4StLbFs4WuovYISJ2c+YZnAKDYL ydhZSFpmIWmZhaRlASPLKkaO0uLUstx0I4NNjMAoOibBpruDcc9Ly0OMAhyMSjy8GySmhwix JpYVV+YeYpTmYFES551VOy9YSCA9sSQ1OzW1ILUovqg0J7X4ECMTB6dUA+O6PzGLlsSzbt6q tujjpqvPRL/4//TR4xCcMKG60UnIPH6/Gm924sSTwlc/Gy0vmSL4Wf4tv375qwvtJTw2q9ct YUg97Vn1qveqnjBzqG7dTKuDDw1/R569t2z/05X3qqYeZbrycefJjrqT7qLxixz3WwUlTPUx 6MxPD+/f4x306eMilitTM6cosRRnJBpqMRcVJwIADl7bhoMCAAA=
Archived-At: http://mailarchive.ietf.org/arch/msg/secdir/qLUKwQGkwIBJ0U8poXZqP5-7B-g
Cc: "draft-ietf-i2rs-architecture.all@tools.ietf.org" <draft-ietf-i2rs-architecture.all@tools.ietf.org>, "iesg@ietf.org" <iesg@ietf.org>
Subject: Re: [secdir] Secdir review of draft-ietf-i2rs-architecture-07
X-BeenThere: secdir@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Security Area Directorate <secdir.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/secdir>, <mailto:secdir-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/secdir/>
List-Post: <mailto:secdir@ietf.org>
List-Help: <mailto:secdir-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/secdir>, <mailto:secdir-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 22 Dec 2014 19:13:01 -0000

Commenting on only two aspects of your note, as the rest require some thought, and probably some comments from the WG.

With regard to the question of whether the I2RS Agent should be validating the credentials of the original reuqestor identity, the WG discussed this, and decided explicitly not to do that.  The relationship between the original requestor and the I2RS client was concluded to be the business of the client, and the agent is to accept the client's word for the validity of the operation.  A driver for this is that there may well be administrative domain boundaries such that the I2RS Agent does not even have access to the authorization information for the original requestor.

With regard to the question of whetehr a new protocol is needed, the premise for the archtiecture is to spell out the behavioral requirements, and then the WG will separately examine protocols to meet the need.  The working group has done a first pass at that, and the tentative conclusion is that RestConf with YANG should be able to meet the needs.  However, the details are still beign worked out. The archtiecture tries not to take a stance on this matter, since it is up to the working group.

Yours,
Joel 

> -----Original Message-----
> From: Charlie Kaufman [mailto:charliekaufman@outlook.com] 
> Sent: Monday, December 22, 2014 3:05 AM
> To: secdir@ietf.org
> Cc: draft-ietf-i2rs-architecture.all@tools.ietf.org; iesg@ietf.org
> Subject: Secdir review of draft-ietf-i2rs-architecture-07
> 
> I have reviewed this document as part of the security 
> directorate's ongoing effort to review all IETF documents 
> being processed by the IESG.  These comments were written 
> primarily for the benefit of the security area directors.  
> Document editors and WG chairs should treat these comments 
> just like any other last call comments.
> 
> As an "architecture" document, this document does not specify 
> the details that would allow one to review whether the 
> security mechanisms were adequate. The Security 
> Considerations section correctly notes that there is a need 
> to transport this protocol over something that provides 
> mutual authentication, confidentiality, and integrity to the 
> data. It also notes that there needs to be some authorization 
> mechanism that configures which authenticated clients are 
> allowed to make what requests. There is no discussion of 
> where this authorization comes from, and in particular 
> whether the authorization data can be viewed or manipulated 
> using this protocol, though my sense reading the document is 
> that authorization data would be configured and manipulated 
> by some other mechanism (as would the manipulation of client 
> and server credentials). So I think we need to wait for the 
> successor document with more meat to judge.
> 
> That said, I would ask the designers some leading questions 
> of the form "Have you considered.". Some relate to security 
> and some don't. I'm not the best person to judge the answers, 
> but I'm hoping the questions will kick off some discussion 
> within the working group. It's likely that some of these 
> issues have already been adequately discussed, in which case 
> feel free to ignore them.
> 
> This document goes out of its way *not* to specify any 
> security mechanisms in order to provide flexibility to 
> implementers. That makes sense for a requirements document, 
> but I'm not sure it makes sense for an architecture document. 
> You are clearly going to need some security mechanisms, and 
> for clients and agents to interoperate, they need to be 
> standardized. My guess is that you will end up using SSL with 
> either client certificates or with some lesser client to 
> agent authentication mechanism inside an SSL connection with 
> only a server certificate. The mechanism you choose will 
> determine the formats of the identity information you get and 
> use to do lookups in your authorization tables. But section 
> 7.1 says the protocol may need to run over TCP, SCTP, DCCP, 
> and possibly other link types. Do you envision different 
> security mechanisms for the different protocols?
> 
> In the third paragraph of section 4 (and in some other 
> places), you talk about the I2RS Client acting as a broker 
> forwarding requests for some other entity, and forwarding 
> some opaque identifier of that requesting entity to the I2RS 
> Agent for logging. This presumes that the I2RS is configured 
> with (or has access to) the authorization information that 
> says which requestors are permitted to do which operations. A 
> useful extension to the protocol would be to be able to 
> forward a requestor-identity string that the Agent not only 
> logs but also checks for proper authorization before 
> performing the requested operation. The Agent would need to 
> verify that both the Client and the client asserted identity 
> of the requestor be authorized to perform the operation. This 
> relatively simple change to the Agent and the protocol might 
> permit a considerably simpler client (if this 
> brokered-request behavior is actually common).
> 
> Section 1.1 says I2RS is described as an asynchronous 
> programmatic interface. Asynchronous usually means that you 
> can launch operations and then check back later whether they 
> successfully completed. If you want to execute a second 
> operation only if a first succeeds (or to guarantee the order 
> in which they execute), you need to at some point wait for 
> operations to complete. There is also substantial overhead in 
> supporting asynchronous operation in that all transactions 
> need labels so that they can be queried?
> Have you done that? A conceptually simpler strategy is to say 
> that since a client can make multiple parallel connections to 
> an agent that in cases where a client wants asynchronous 
> operation he opens multiple connections and launches one 
> asynchronous operation on each. The cost is that is has lower 
> performance in cases where there are large numbers of 
> parallel operations tying up lots of connection state.
> 
> Section 6.2: The restriction that this protocol injects only 
> ephemeral state seems surprising, especially given that the 
> circumstances under which the ephemeral state is lost are 
> defined in terms of a network device reboot.
> Some network devices may not have a clear notion of a reboot, 
> or might do it so rarely as to render such functionality 
> useless. I was confused by the discussion of agent reboots 
> vs. device reboots. The first paragraph seems to say that 
> ephemeral state is lost when the device reboots, but 6.2.1 
> seems to imply that state is lost when the agent reboots. The 
> sentence "Just as routing state will usually be removed 
> shortly after the failure is detected." seems to imply that 
> ephemeral state might be lost when a client reboots. Have you 
> considered what happens to state when a client disappears but 
> the agent and server stay around forever. There is an option 
> later in the document for some sort of timeout, but I would 
> think there would be some sort of mechanism to guarantee that 
> all ephemeral state disappears eventually unless the 
> requestor is still around implicitly renewing it.
> 
> Also in 6.2.1, it appears that one piece of state is 
> explicitly not ephemeral... the agent keeps a non-ephemeral 
> list of clients to notify when ephemeral state is lost. If 
> the client is not accessible, for how long does the agent 
> continue to try to contact it? Forever?
> 
> The protocol requires that agents be able to open connections 
> to clients (in addition to clients being able to open 
> connections to agents). This will introduce lots of 
> challenges. It means the client needs an open port to accept 
> connections, likely an SSL certificate, and will be in 
> trouble if it is behind a NAT or is mobile and does not have 
> a stable IP address. Other parts of the spec mention that two 
> entities might have the same client identity. In such cases, 
> it will be tricky for the agent to connect to "the right 
> instance". It might be better to only allow clients to 
> initiate connections to agents, possibly with some sort of 
> unauthenticated notification from agent to client that 
> initiating such a connection would be a good idea (to reduce 
> the overhead of the polling that would otherwise be necessary).
> 
> My first question when I started reading this document was 
> why do we need a new protocol. Wouldn't SNMP or NETCONF do 
> this just fine? And there are probably lots of others. 
> Section 3.1 says "There have been many efforts over the years 
> to improve the access to the information available to the 
> routing and forwarding system." It would be good to 
> understand why those efforts failed before inventing some new 
> syntax (when it is unlikely the syntax is what killed 
> previous efforts). Then section 7.1 says the protocol will be 
> "based on" NETCONF and RESTCONF. What does "based on" mean in 
> this context?
> 
> Section 7.8 talks about "collisions", but it wasn't clear (at 
> least to me) whether these were collisions in the time sense 
> where two requests are made simultaneously by different 
> clients vs. whether it is a case where once client tries to 
> override the setting of another client. I also wonder whether 
> there are cases where two changes would interact in some way 
> other than one of them winning, as when two clients each want 
> to increment the bandwidth of some virtual like over which 
> they are both tunneling traffic (and where the correct result 
> is to add the two increments).
> 
> The last paragraph of 7.9 says "the protocol will include an 
> explicit reply to modification or write operations even when 
> they fully succeed". How does this relate to the asynchronous 
> nature of the protocol?
> 
> Good luck with this!
> 
> 	--Charlie
>