[Wimse] Re: What is an identity and section 3.2.1 of draft-ietf-wimse-arch (or must identity be the compositum of all attributes?)
Yogi Porla <yogi@deeplineage.io> Wed, 19 June 2024 14:09 UTC
Return-Path: <yogi@deeplineage.io>
X-Original-To: wimse@ietfa.amsl.com
Delivered-To: wimse@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 02503C14F6BC for <wimse@ietfa.amsl.com>; Wed, 19 Jun 2024 07:09:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level:
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Liwu2uru3wSr for <wimse@ietfa.amsl.com>; Wed, 19 Jun 2024 07:09:45 -0700 (PDT)
Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2137.outbound.protection.outlook.com [40.107.220.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BB03EC14F60D for <wimse@ietf.org>; Wed, 19 Jun 2024 07:09:45 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VMyi6DKREqCxbpPPl6OTZd5vvp+vSvGFVKqLv4IiTjWwPbIusr6msIDQtoaplUbYeSEGe760O6Oy4mcLYegI0mTSq3Ak8qzvXB1nAHjx581kY2W+V9oONVWZ6rOjg4XbTpLzHhkrbG8gIRJBAMu949iON5ikQRC19tK1gldGPCrAvJpy8AQiBWaN/x+kxPzwjbg9Hl0WJGUD7c7l9XOHfPFnX32UmlVM48dYNLjvGbVe/T1HspHG0GDQ5Bzcm/B49bHdoX1WJm5MC64FIbJxBNUN8xGZ7L8fyWoTmGLZpCuQq37ZO7/1wn7Gn3dj6Hpae1euyPP2FrrTCqmu9jU4NA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Pd0NAoqXUtofjWG0qdUYt4vAqRVgPTMR24gdsEWzJHA=; b=lP+MKB6JAgZa2J+Izy+3CU7iOurudHcbmfzYL6UUAdrw1rJNmTfpawL4jJEnbWvN6ysWNkdajMnIWRcEFFCjxfJLMpB30hBvo1iyNJgV2ajjgLcdcW1eBkUFmFjVS/23aODMnykiAE44KMe4VxHUsjiCZhvtrt0QUcE2/CI0fYpTg5ARHNrjSCKrbEHh8v30Lk3S0kGuVbwDkl8viqn2rzFkZocn5NVl717NLe6qgFJ3jbbUTG5yJEP0OLM9c+faZKZzcxPYt48rMUpd/hw4OaUk2zILA9CGpnxy/T/oZfx0Ko5HUEStcz5KMXQZfWV9+r8AwajtLsdu0hNmtF8fMg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=deeplineage.io; dmarc=pass action=none header.from=deeplineage.io; dkim=pass header.d=deeplineage.io; arc=none
Received: from SJ2P222MB0970.NAMP222.PROD.OUTLOOK.COM (2603:10b6:a03:56d::20) by SA1P222MB1140.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:3cd::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.19; Wed, 19 Jun 2024 14:09:41 +0000
Received: from SJ2P222MB0970.NAMP222.PROD.OUTLOOK.COM ([fe80::b24:684:72f2:3014]) by SJ2P222MB0970.NAMP222.PROD.OUTLOOK.COM ([fe80::b24:684:72f2:3014%4]) with mapi id 15.20.7698.017; Wed, 19 Jun 2024 14:09:40 +0000
From: Yogi Porla <yogi@deeplineage.io>
To: Justin Richer <jricher@mit.edu>, Watson Ladd <watsonbladd@gmail.com>
Thread-Topic: [Wimse] Re: What is an identity and section 3.2.1 of draft-ietf-wimse-arch (or must identity be the compositum of all attributes?)
Thread-Index: AQHawk1HzF3O+7sUbk6W4Yyyv58U4g==
Date: Wed, 19 Jun 2024 14:09:11 +0000
Message-ID: <SJ2P222MB09703F9119A2591D283ADB0EB3CF2@SJ2P222MB0970.NAMP222.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=deeplineage.io;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SJ2P222MB0970:EE_|SA1P222MB1140:EE_
x-ms-office365-filtering-correlation-id: 8d5ca47a-eeb0-4e45-fdbd-08dc90697638
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230037|376011|4022899006|1800799021|366013|38070700015;
x-microsoft-antispam-message-info: 1zQO69J1Qp1cOyB4QwNvvOQmWnNk5GiJDbuMLbn/XNWfUnF19cR/rjyWu+4JMCrmvvSwbxN8GR15fnQGbN7GhIlgE9MN9o8AVlkflwUX0mXlh+Oazwwn8q88k7KNsezcyIccmSslxCB5vRkN6CkZmiLDG/W/6T820xjJixjjpfQ0IWaIGdB/QCirDOE3A+68wpYTOuAu4++7KDgyKEZ+dMzl1q3Oi6CHnRwmixwqvbgxyjoVGvOoDIldquFtlfGc1gQDPdF+TXLUPePupIVTJvC0WomdXkXuVhkW5CNwV/noIpt3wo8kobcCkXpqJPveh1HzobRUmeuegmwz1G2CQ1ezbqgN897OtBFCjNVV9mH3Hhqij2ZG5dqKvicHlFj7A68zgzzhE0xLZ1ik+q1wI1+E4Xf4vSsn5zCynJVc1OIcw1H+iE+4RfXD0tBDtuk4DdmF4bM9Ht66DXgEyJmR4wrRzC00B6oMptWrbOYF6BqjDhgx06B//qOShiuk6MeKQim9Ojv5ekZxHx0vuYFYdGxRc9aLCVgntwJHWHhX808v7j6CVUgFRHdIlZd8xKJe7q5QiuPlCcCZ1iQu+Zsbl/rmomppydIt455admNlrmlQui7hEFv0pp7yeKsbvzpeyVxnaLho36IZVGubiXF7kK51IfHCskpID2E/rAXX3UnmVeIVPsAq3HO7PFa2N6jxaLgIuuyIvlB2kXN0ldqSZamIh/OYqQ1DaVCjnL3+tr4ZdF4wsOHuBuvQ6TMdCj0YfpFAnc/RcYIF4sbgOCspqQy138DERvnxZvu8qzNGNrE+GJy0eQg8Zb3fWa8LR03ipHB4/dCT+Jhu9o/ch3jJOlq/JYx4fZfBlvW87V9WRdAMqqPW+Dp0N62OMEna3Vq4W1bqzxToSXcdWDskVPCzL0RN+fDVoNp9bPnQuF7ihc7tXC0kpfIisj1QQSiyBKsDNARlHRP7wPkG1vuaovuk1/3XEo5SlNDquHikW4CCFzeN+G5BtwzZiyp3v3I9AthSFAeovrnV3zq+RKe9xhezIdZh6BaFHPOYuVB7IY0iMrW+QdZLPGQAx36LzY3JyZ6ehp7sNCkdxJL0oECWAUD3MLp3sCHOnlR6ZSp9QGc3fw/jWnEmOPGMX9ikw8NvRYpgH5t8ywZMVzjAIQ69Q5w+xDcEPxNSNoE9wMRYFR2qcRp1+44YaVBPoe4w/avave/dLQPq1vq/drIRthRe1YVVWYMxipfP4rkGXvNr+3RQHSd0VImP8dyB7LWWlk2OXedwZdOiH2gCxLIGHHW5Y/VTROiLjaKhkwKWJTuFfT2QRcCxdvPoDTuJ04ttAK/+sjd2
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2P222MB0970.NAMP222.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230037)(376011)(4022899006)(1800799021)(366013)(38070700015);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: Are30GdajcUUFO5A3F2zX/m0tC4vWLkfWWWaMGVXJBElyStIY8w8DB+H/g56V07A+fg0jPr737P6eEhxH6Deu2cRZ8EA3XdHByoobwIvVHkqbx5QwdLPT31BoxS6yMqY6bm1JJUDv/sLeiPC1IdlDCCQBT/VPRrW4i/ZKtQ5Kb3rZpfU6HrwM1vm9x7zq40tlljQfdAeEgnvsERHpjju1ccZCaR5tgIyNtazrMISzy18aKzfgNmUlUTTFlQgKiia9xt6NVUSOwQtV53JaoeYqyXg3KlpME3kjT0jhQIuYxiSuGBh/9Z0ICOetc3r89zYKUcO2wlpJ6Gjb58ksryxr1znh0S+MNjHyric5+vG8rLPDek54h8N9ooudhwlEKw8zxt5f0Zo+IOj6yHkBnBoL1sEUhG3sAwZW15QiEzl3uAcKvSl/gp79jyXL4UHL3tiLh5dQCvXZiwTKuwoHAXb5/YAeOChVcCSG5AUNNG6L26wQq1vDPQNo9aCbTqva7qv06Ad+90bdRlH3iC9EQRRHclfIJfVlzROj0vkwW0vuFUthRny3dvFm9iYcr7sbUb7Ay1+cOFgDEdjo53PQZNnxzWCg4YEoxVyTOpH/qIO71H47XY3hObwoE844AmpvPKYKDgGhCkMA1rUZDGnOCMMpsGuDMgdQ1uyzKlNO/CwFw5uVLQlY8keE2vkDVYnQPUWisoDSe2bCO37UKaKavgmZvr7/p+mhE7r3jNos9PURR1waIJuVM+d8thUbYA1AtrCOonv2OB8SGx2t/5LHX7qcFvlNsH8me92vYM+22R5XnCL0SFVYV3oMJJNvfoG2z3jiIbT0Dfn2QQK7VUJaHJhuP0l7Bw9Pgf+14u0k1XbpRWpe1+bNyYICenwOE7fDUBHREUo4CwZ0nh32u2sVSaOddUn6PB+szHg01P8JMhz72Yx3yptdWL1b3KKJJcuA7ciJKN7svw95bJqJ5v9mG7H60c6UwlswDxdmcVSnNnGmqhrpI7SMPzq4qQkBhvYgOFdFY4xhVvuZmU5HHqYSWygR3N7PGIfC6mzKTFYkjfI6BcOLdY2qbu3gbZbX7g1hWQ1A52fwGnSJkEo18Dl058jrzJOdxfinBwLLSsxJShixa2uzfRI7JUf3weo8ZXaEcgHpKKJSrmGhKIRJMg1YkSY2tpik9BqPSie4hR+w2IXVfjN8rHbz+fktr0IjbLn0Zchg8l61JbD8EhU62zi6khHGSWh5SLmLYS1IqJo3AgN9emWpcYXvuAvtFuGoWrWOeWWtg0jD6hYg7AfgGVV+ce9HVQRtAzSnl5YQwoYZg+6H497ev02DQxXucu3zIiG3FJfKlkVisqn2UOCYlG/IUIIpZSsjhXagdlrb4BT0vo7bey8FK3uIfWAsfxOAVV3C/xfobF9xr1yuAn30bylmSqu9LshsTsdhc7v+rHTTpuDgcRc7XESiL8Knp7q1zUpUwwngsHiQnGGHOuq3EYne9MgTvHLwpTWSTwkFjUxYtXtN/zwoHOFYuTSPo8b3c1cmgZZTab5F05UrqCBraanzBsd6EIwJiQ8NOvha6M6XMXTdOE7KCI3+WQlGa6fpn3c0NOVYH651I39BbX84K/LWVUMIRjGmWXi6EEZXzWYdLxOyWRM8aVkkl3i6h7qnnSc94w+
Content-Type: multipart/related; boundary="_004_SJ2P222MB09703F9119A2591D283ADB0EB3CF2SJ2P222MB0970NAMP_"; type="multipart/alternative"
MIME-Version: 1.0
X-OriginatorOrg: deeplineage.io
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SJ2P222MB0970.NAMP222.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: 8d5ca47a-eeb0-4e45-fdbd-08dc90697638
X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jun 2024 14:09:40.8579 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 7026d576-e17e-4a8e-aae7-ae6b57b04371
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: upd7bHHGxu1vCbQqwwQqtxYcAvk+x1+552Z1u70mQbY3/JrytqUxyUUyw2UKnCAwquVqoAVEFh09UMNUNn0wbw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1P222MB1140
Message-ID-Hash: OXXDLBYN4JC6GZOKNKLZBI5ET5AWAJG4
X-Message-ID-Hash: OXXDLBYN4JC6GZOKNKLZBI5ET5AWAJG4
X-MailFrom: yogi@deeplineage.io
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: "wimse@ietf.org" <wimse@ietf.org>
X-Mailman-Version: 3.3.9rc4
Precedence: list
Subject: [Wimse] Re: What is an identity and section 3.2.1 of draft-ietf-wimse-arch (or must identity be the compositum of all attributes?)
List-Id: WIMSE Workload Identity in Multi-Service Environment <wimse.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/wimse/kE2j7aricSaEAtcr_N1Gpkannic>
List-Archive: <https://mailarchive.ietf.org/arch/browse/wimse>
List-Help: <mailto:wimse-request@ietf.org?subject=help>
List-Owner: <mailto:wimse-owner@ietf.org>
List-Post: <mailto:wimse@ietf.org>
List-Subscribe: <mailto:wimse-join@ietf.org>
List-Unsubscribe: <mailto:wimse-leave@ietf.org>
Great thoughts Justin , we attempted this in Attested Claims project adding an extension to the SVID and calling it LSVID details here<https://docs.google.com/document/d/1nQYV4wf8wiogpxboIVbwtFZyZjLNRejyguHoGZIZLQM/edit?usp=sharing> As per the concepts to be expressed together , below highlighted is how we went about it, of course there are better methods, and I would love to get your insights . - an identifier for a workload that is readable by other workloads and systems – “SPIFFE id “ - the collection of attributes that uniquely identify a workload (the identifier being one of them), its "identity" - “Attestation Parameters or attributes” as part of claims , In SPIFFE identity world, these are the parameters that were used when attesting a workload. - the runtime context around a workload (request context being a big part of this) – We used Verifiable Attested Claims embedded as part of LSVID with Request Context (A->B->C) + Runtime Context ( Current runtime information at each request and any additional attributes such as SIEM info etc) - the set of computed access rights for a workload in a context – “ This is something that we have delegated to PDP given the complex dynamics of how these access rights could change based on Runtime and Request context” Depicted picture of the concept below. [A diagram of a service Description automatically generated] Thanks Yogi From: Justin Richer <jricher@mit.edu> Date: Tuesday, June 18, 2024 at 1:10 PM To: Watson Ladd <watsonbladd@gmail.com> Cc: wimse@ietf.org <wimse@ietf.org> Subject: [Wimse] Re: What is an identity and section 3.2.1 of draft-ietf-wimse-arch (or must identity be the compositum of all attributes?) Thanks, Watson. [ Chair hat off ] Ah, monads, I should have known they’d crop up here eventually. :) I agree that there’s a fundamental difference between "what something is" and "what something can do", and on top of that there’s also "what we call something". All the "something" in this case is a workload in its context. In many cases, it’s tempting or even convenient to wrap these up together. After all, if I know who you are, then I should know what you can do based on that. And if your identifier — the thing I call you — gives me some of that information in a structured format, then all the better, right? This is a large part of the thinking behind the SVID concept - the name has some internal semantics that guide me towards understanding what to do with the thing that has been given that name. And this pattern has been hugely useful, since it lets you carry information about authorization through a system using something that I guarantee will be there, the identifier. That’s what I’m reading from that section in the WIMSE Arch draft — here’s a larger identity question that gets encoded into an identifier and used for authorization decisions. But for me, WIMSE does represent an opportunity to tease this apart better than it has been in the past, while still allowing us to deliberately collapse things in cases where it makes sense. I should be able to figure out that Jessie is cow #2 without naming her "Jessie.cow[2]". But then the question becomes, how do I carry that information? And more importantly for us here, how do I do that in a way that’s interoperable on some level? And the question goes further, because I don’t believe that identifying the workload is where the security decisions stop. In fact, I think that’s just one input, and not even necessarily a required input, into an authorization decision. Much more important is the context of the request in which the workload is running. This goes beyond the identity of the workload itself and into the world that the identified workload finds itself in at runtime. I am not going to pretend to have clear answers, but I do think there’s merit in pursuing these questions to find them. But that said, I do believe that there are several concepts that are separable here, which can sometimes be expressed together using the same element: - an identifier for a workload that is readable by other workloads and systems - the collection of attributes that uniquely identify a workload (the identifier being one of them), its "identity" - the runtime context around a workload (request context being a big part of this) - the set of computed access rights for a workload in a context In my view, OAuth access tokens are just one input to the runtime context, but today they’re being used to express all of these things in different ways in different systems. I really do think that if we’re going to stop always conflating things, we need to work on fundamental differentiation. — Justin On Jun 17, 2024, at 7:59 PM, Watson Ladd <watsonbladd@gmail.com> wrote: Dear wimsyists, I must confess to never having read Leibnitz, but I think section 3.2.1 will force me to. I hope this long rambling email explains why and elucidates some of what confuses me in WISME, and hopefully others find out they are likewise confused. Section 3.2.1 implies the identity must include a bunch of information that's relevant to the problem of authorizing a request, that is conveyed by whatever ticket brings it alongside a request. There are two notions of identity at play here. The first is the concept that makes one thing not like the other. The other is the name by which we might call a thing not like the other. E.g a farmer might have cow 1, cow 2, cow 3, or Bessie, Jessie, and Daisy. Bessie does not convey any of the relevant information about that cow, but does identify it uniquely among the herd. To me this is also identity, and indeed is the identity that would be most convenient to convey. This is where Leibnitz comes in. Now given a request we might want to evaluate the fundamental question of "who get to do what to whom". And here I think the distinction between authorization and authentication has been elided a bit. Authentication only determines the who. Authorization is about answering the question of if the request is in fact authorized. A token could speak only to authentication, but it could also provide authorization information. The draft is pretty ambivalent about which: while there is a lean towards authentication it seems the token issuance is also supposed to be a gating function, and the token needing to carry more than a simple identifier means that it starts to blur the line. Lastly there's a huge gap for me around what sort of policies make sense. Many systems I've seen and worked with had a broad class of services provided by various elements, and the users of such services might be a very dynamic set. Others had a self-serve partitioning of a class of resources allocated to each service calling in. Other times we might have systemic policies, e.g. "Infosec says all services must do X, which we can determine at build time, and those that don't can't run". Expressing these policies in human understandable form argues for a simple identifier as a human readable policy depends on such identifier. I don't think a complex identifier works for that. In conclusion I think we need to make an explicit choice. Either the token carries a workload identifier (akin to a Service in K8S or something else?) or it carries a grab bag of attested environmental attributes over which policies run. And I think we need to figure out what policies should be expressable and which shouldn't be. Sincerely, Watson Ladd -- Astra mortemque praestare gradatim -- Wimse mailing list -- wimse@ietf.org To unsubscribe send an email to wimse-leave@ietf.org
- [Wimse] Re: What is an identity and section 3.2.1… Justin Richer
- [Wimse] What is an identity and section 3.2.1 of … Watson Ladd
- [Wimse] Re: What is an identity and section 3.2.1… Joseph Salowey
- [Wimse] Re: What is an identity and section 3.2.1… Yogi Porla
- [Wimse] Re: What is an identity and section 3.2.1… Pieter Kasselman
- [Wimse] Re: What is an identity and section 3.2.1… Mingliang Pei
- [Wimse] Re: What is an identity and section 3.2.1… Mingliang Pei