[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?)

Pieter Kasselman <pieter.kasselman@microsoft.com> Tue, 02 July 2024 19:03 UTC

Return-Path: <pieter.kasselman@microsoft.com>
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 9A565C1519AF for <wimse@ietfa.amsl.com>; Tue, 2 Jul 2024 12:03:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.256
X-Spam-Level:
X-Spam-Status: No, score=-2.256 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.148, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=microsoft.com
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 nHSy1O6LuTCc for <wimse@ietfa.amsl.com>; Tue, 2 Jul 2024 12:03:46 -0700 (PDT)
Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2109.outbound.protection.outlook.com [40.107.22.109]) (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 EABCBC1519AC for <wimse@ietf.org>; Tue, 2 Jul 2024 12:03:43 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=amnpDTVh7bBpA+BaMRWjKSirAOwzgCPvX9bVHiijUWDYlqd5KXgJEfFD33ZjxOr6vXiAaj1+4Zb+hVpd5mfd8sP2jX5XyaQADmnnH+yhWSaVeNYHtp/RUQLrxboUFevv6a3nRx9a8RZcEH5rUjwVYMNUOZg4ZYN53Wfzza4uwIYnthy2W7w++677Jsi2FhjjUWXXa6V60Gn3Q9vQWu7TPrz8S7ChUY914fNnx1U74RYcWhj+FytsWSzoc/HMu6vugYMHbPh8j/qygbmA1LUd7Y+sEbP/Xopt0DZ5x87LA9LxfIo7coPR05SoNjOAhA9vHGfvFOXR78pZ1MZ56j5JKw==
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=7GwOb+/rMgFTHV27C7qE4lMTKlviWTyEb4EDUnhiwOE=; b=UTYmDaNnktaj54c51HFTb0cwtg9mjOr7evf6s7FHG52hnx7Zi1E17eDSONHX+m4UeuYPQMdnXiNd9U0lUA1y/Oz4xDz7+YgtRA3+H8xm1SosJT7XnIEvZeDSzKXdfw6LF7BRE5C3UNQS/ih4L9mNSbgj5HGwYlpn94Dj4bzCmMQBdKNms4X47dDMTr7pX9JKEYNBRIBylTSt4S7op2EnR5WEU2k82s6yPc8PLayD7ZfWSzPszoENxlBI2DjhRAGt/Wa5EH8u+PrtOfxXnpTIn4M2+DM7jB1wIblBUHw+2hV/0Edg/FSRG+V1ctHsUxGG+Zp9lGOhDWjkvroIQnGErw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7GwOb+/rMgFTHV27C7qE4lMTKlviWTyEb4EDUnhiwOE=; b=gxGxMV/WT1W2USLtB+JDk7GaVC7wy6oloDAsClcolOFz2hiLyc7v8ALCfqVfRSEKlmiZcGwT4nQk9WhiawWc50EcRzaPwmAwPpaEti2XSvQP1SI4r++OCGVY51GhJ3of+NKE3BxCU0QAXGmzA9/AbDPDWBAbpj5fMClJcFdknq8=
Received: from DBAPR83MB0437.EURPRD83.prod.outlook.com (2603:10a6:10:19e::6) by PA2PR83MB0684.EURPRD83.prod.outlook.com (2603:10a6:102:414::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.6; Tue, 2 Jul 2024 19:03:40 +0000
Received: from DBAPR83MB0437.EURPRD83.prod.outlook.com ([fe80::9ee1:305:cfd7:dded]) by DBAPR83MB0437.EURPRD83.prod.outlook.com ([fe80::9ee1:305:cfd7:dded%5]) with mapi id 15.20.7762.000; Tue, 2 Jul 2024 19:03:38 +0000
From: Pieter Kasselman <pieter.kasselman@microsoft.com>
To: Joseph Salowey <joe@salowey.net>, Justin Richer <jricher@mit.edu>
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: AQHawar0Ra/6NVYr/kuLVQoWOuHq8LHisNOAgAElFtA=
Date: Tue, 02 Jul 2024 19:03:38 +0000
Message-ID: <DBAPR83MB0437621D4793ECE42BDA2E2391DC2@DBAPR83MB0437.EURPRD83.prod.outlook.com>
References: <CACsn0ck4tzTV7xgYPbZ-_L1rR9RUiwmrPL4Dba_maNsuq+tdTw@mail.gmail.com> <0900E8B5-18FD-42D7-9D3F-B4E47C073061@mit.edu> <CAOgPGoBK=tJzXCO0rRETr509RcioufeOQULXxipM=hdwWR=1+Q@mail.gmail.com>
In-Reply-To: <CAOgPGoBK=tJzXCO0rRETr509RcioufeOQULXxipM=hdwWR=1+Q@mail.gmail.com>
Accept-Language: en-IE, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=8f7d612c-1942-462e-a4f3-09025d527d65;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2024-07-02T18:21:14Z;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47;
authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DBAPR83MB0437:EE_|PA2PR83MB0684:EE_
x-ms-office365-filtering-correlation-id: 2a2f6f6e-42a7-4203-87f2-08dc9ac9ae58
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|4022899009|376014|38070700018;
x-microsoft-antispam-message-info: 3+SosIAaLhMm3gBiRKNP043UaopmcYoKMQl/pbGNiaWxp2CM20WV9oTKqFQ7ev4NBmF9rSAjODJKMUSz6vF7ZCv1TsDJbLyL3yGKopfQWzQQDhiodu768afB1W1te5buNdrGT4SJZvpoEvbyf8rZGbJ1BEG1j0m7nW0uCcXVBvbYJ4PXLd++sJ92IPYBNGwDBsHn8WHh2w2b5knjgNENf2n9XCE48tmeqQb1MOBbw3Vlj/70OQkxhW3BTz0ivUhUORRB3zjpYEUNFiiA45ROyyDa2CDkXaxAED7rNYKu7nHs5LpMU7xgRwhQBH7Sl3gAQniDbqCJR0jnYc/itM9WBjWXTQU7Vf+/tWy+DLcigw8Na0hIykDDKWRMmToYpvq2gbU9gm/pTq1PfeDw7vOTsb07tsovBdqVLhtIiGNudeOfoGxHiBbqLWdvCSja+xpPdmfAvWGZFCPFN9wJrtn1hBJBLcs+n6lm29qVR5MTARqiOWRm0qdR1/Zxl9I11KTmXrxuHi/kRyznkTfPd2XispK+8apb3uulRrAL9doigCtfx4/OkimjjI3zMKeWKqjuqcdVZav/R23zwjPsE2eF1DKhL/6pj2GiY49nR4C3W+WUTE9o0tmm3HO7HMKIF1ijuh9oP3iRnfgx+y+VPsYL4CZ5qeE8Y8RDrEA6IJIYdV+3kEwhULgtj/VhqkyehMJhCRjHCz+5VQKSheqeyYSK2F0T7SlmGPSk9bObtHbE/ZlxT0nHUlPLew7aDXq9GxKvC3qwvCvjAlrzpJFk9C7M/xn7FUTvvd9ZRKcpIcWl6DO2IHVhf4Ub2faFC6xK26HOCVAGemZuwNVQvWt0tOp/chEaI0TmPCbBEk6erM7BBKJM/vSluDSefRZPvS1z5ENU+1dOAebHuaCPWOIm/6t/0F2zBtquZjU+ldQN0rLD7rup5hmOkzida71xDMorCRJDGtkqaKIx3P4Jmzp1ozWrCa9zJE9Uax2F2tTQsjd7znjHUhWhejCOlZwJa5ZZxa2fF+a3wJAhkwQKe0e9fqaQdsXFy+ID4A6lnE3XteGodi+6cfpJE8WCYNcGB+XnVlb+A/R3pKeOuLjaLt9zOa+rcnLqsRztkmbJH3S6O+NMNyzawyq2FHxIODpgR3fHC/wG1L4l5U1nRt4cQoNipCwjTIYi1IKnOcYoKXTseadABDlXW07g8huBQgs6eo+5Y0XCgaVhxtF2noKECbSLEsVNYyqsCvC9nv4csaVrcuCv8LgGMkZVXzTonT6/DBCCweiVJf7IrktrHGR4PMKll4fn7fERv2sVQPgtMsEoDC5I5xeQMBJhvppz8Ui+atfA5O68VZalNVTknByDRrP33JjiyoxmOYv1XWBTU0Y1hyqtxKg=
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR83MB0437.EURPRD83.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(4022899009)(376014)(38070700018);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: S1IuvYJBjWz82W4dnJdFNa4mO8c0fgsjXeXmFex0d5zHcxBKaN9h5XgizV9ImIBehYd7ufdtKAvVMYn+k7OBzkwDUQWL6kpa3r69M9x4kJIU+BOdmGENmMU69KnJ+NOtGFE1u8VmGf9C5GF5JzE2QLSwFIC8cI9XrKTUUYkx/dHTMs2+m4CrQvzBnaIz8LaKfPBBh7jJPdyyO056y6I2N/EZRdsLK0LhTFDEuTtsqpTnP83ptn9UARrVOmAsnB+gCdNV+QZl14eEhBKgP83hk6Auk8Lgb9J5Pno9kK9Ttom6iNgnFXAZUqcQWZ3KoTLcICeerQW3r5BgsJncI8fUrn1LAkEFJ95vH0uEyNpBjFiK/Reedr6+xfmQSR49U4NyOY9GHNbGVM/tYVvufVvzaItIoHbRYlKnhQ9ZdUvFMIiWpXj9Zy2NASpssNdKWK34jU+DHYLSS/4bi+FMYZ1Vrna+Tdu3Buc4iiYYIsvcNY48i+VcutjJNIT7hJMdZWh+C0oUovS4hatOBt0AGFGoiYI26lSlEl0RUFrC1fOmPsCPJf4pHhyZHCcZEcpkkih7q8C5WhZ9T2hdrBrfPPBR/uWfeVT6VKfbkrdiP462YD7xxxQtSq20/5d7OvPJ2FrRsh1xOUIwbIScXhLFm+SV5pI/t6PfrpUx4I3O5iajhSFu7icuTS39rSZoGSaTTl1sqG2xWD7sO5EXDbJEXKXHEXNRFdnbLtiThv5FZNrNAgjWhj/yHiPotk+kqaeuYU3IcQubpZFbxnXxnJQm4BXAKkdZk5CQcK9KFdK+xSSyZv0lhiZaUacOTDZ6laurgyUX/pgKYoN4Mx/ltL6ZQANnFJXp/BsQ3hhu85ToeQDRNmrlTTpEC0PYcDvYTL80xfZJ8+4xygrLaI5xx07FWSp39lfz/kYbbh0YnNF0HkZMa+Fe5jwR3195QpTH5agbv2a2GC/Rlalga7dZsbE7uC2hHKFjMSYOyzgQ0jmdNF0f/e0biLqZHncaXsDSa/UA87B/yKFJb75foy8/Z1f30EfS+9pBi3jszb5r730L8tqpCC+KPJ/+BC/DWTVN4NLTgVwwViSOFwxizuYN9fY/Bo1a84xjEo08HtY8FmRMgxiVVlDsejRiPwqHGQ1hPXE/DlfMv43w/xg4EyKL5ETkblt5Qn7QwNRtepUirMf9GruNpNG0uOWKB3PBQQtJrMF4KisYJqtVZSBth9ECh0sDI3mvPRQCxn33LqyUMEJLOmmL4Td4xUdGkXKDC7gKE1kUboYpnORNOG4Vm4x/nHl4mYb9pCQdxJSi2DEsJEkc+6MdOtx7h76+uZTp77QYe5LQPzkT23woAWrc7EeSDy0qUeXmUT3j/iRewpGgjKy2o4wXES9EzeYt1TUo0S8Y7hbnLSlcQuW4ZyYoIXCK2Xl62OP0ddxmUxED6bxO2pXXFFtpiCNlgNse2XgE3Lw2CGaQzbdYtomlD1Pn8ei/Hm6uSTS97sB3OQtv0U1Q8kWGwoaIcHc+FO1b7ayxmwDv3mb3qgUO
Content-Type: multipart/alternative; boundary="_000_DBAPR83MB0437621D4793ECE42BDA2E2391DC2DBAPR83MB0437EURP_"
MIME-Version: 1.0
X-OriginatorOrg: microsoft.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DBAPR83MB0437.EURPRD83.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2a2f6f6e-42a7-4203-87f2-08dc9ac9ae58
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jul 2024 19:03:38.3572 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: UPt4YkSAcWpQuJpEAd7qGlYoNeJn6gRNJsCw1RT4sFoYQvrDj83eq537NgRzIKuRqNKKjFRrT/avb5e7kpEWMS9oYoHHARlv0XswiW/BDkI=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA2PR83MB0684
Message-ID-Hash: S4EQDMWHD4POEZYQNHNVF5NUXXFHHNS6
X-Message-ID-Hash: S4EQDMWHD4POEZYQNHNVF5NUXXFHHNS6
X-MailFrom: pieter.kasselman@microsoft.com
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: Watson Ladd <watsonbladd@gmail.com>, "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/p7xTvWn5VU-sPHO1vjHTitpcOlQ>
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>

Working group chair hat off, identity enthusiast hat on...



Thanks for working on this PR Joe, this is a tricky subject ;)



Someone once told me that the first trap to avoid when working in identity is to try and define it... It is hugely overloaded and we often end up using it as shorthand for a set of other more burdensome activities we try to describe.



Another way to look at it is to focus on the outcome you expect from your use of "identity" and then define the building block to achieve the outcome. You never end up defining identity, but rather what you want to use identity for (the outcome), which in turn helps scoping down the building blocks.



So, when it comes to things like using identity to decide access, a useful way to think about the reason for having identity is that you want to ensure that the right entity (person/workload/device) has access to the right resource at the right time for the right reason. To build such a system you end up needing a couple of building blocks. These include:



1. Identifiers: Identifiers are the basic building blocks of any identity system. It is only possible to manage identities if there is a way to identify them uniquely within and across trust domains.

2. Attestation: Attestation includes the presentation of proof to establish the provenance of an entity. This assertion may include a cryptographic binding (use of a cryptographic key or shared secret), but may also include the collection of other information to assert the provenance of the entity.

3. Secrets Management: Some entities use long-lived secrets such as cryptographic keys (symmetric and asymmetric) as part of the attestation process. In the case of asymmetric cryptographic keys, the public key may be included as an attribute in a credential (see next point on credential formats).

4. Credential Formats: Identifiers are often shared with other system participants by encapsulating them in a credential with a specific format. The credential may include additional information or attributes to identify the entity and is often bound to this additional information using cryptographic techniques (e.g. digital signatures). Examples of credential formats include X.509 certificates, JSON Web Tokens, and Verifiable Credentials.

5. Provisioning: Identifiers, attestation metadata, secrets and credentials follow a lifecycle that includes the usual create, read, update, and delete operations that are recorded in a system of record (e.g. a directory).

6. Authentication: Proving that an identifier and a set of additional attributes is associated with an entity. This is done by presenting a credential which may include attributes that the recipient can verify, including proof of possession of a private key matching the public key included as an attribute in the credential.

7. Authorization: Answering the question of “does this entity have access to that resource, at this time, under these conditions?” based on the previous 6 building blocks. It answers the original question, but there are a few more components needed beyond just making the decision around access.

8. Federation: Maintaining trust boundaries within a system is a common part of controlling access to resources. As an entity cross trust boundaries they need to be able to establish trust relationships to both accept credentials from other domains as well as have their own credentials accepted.

9. Monitoring and Remediation: Once an entity is authenticated and authorization decisions are made, it is necessary to monitor their activity to detect anomalies that may indicate compromise. If a compromise is detected or suspected, it should trigger remediation to mitigate the impact of a compromise.

10. Policy and Configuration: Policy and configuration is required for each of the machine identity building blocks. Policy defines the specific rules that should be applied, ranging from credential format through to authentication method and authorization rules.

11. Compliance: Compliance for each building block needs to be proven against the policies for that building block. Compliance often takes the form of reports and the process is simplified through the use of structured data in both the policy and the event logging.

Looking at the PR, I wonder if, instead of defining a workload identity, what if you define a workload identity management system that ensures the right workload has access to the right resources at the right time? In that case you could define a workload identifier, credential format and some of the attributes included in the credential format (including a public key perhaps). Instead of having a “workload obtain its identity”, perhaps we might say that “a workload should be provisioned with a credential that includes an identifier and other attributes, along with any secrets it might need, as early as possible in its lifecycle”. Instead of “a workload presents its identity”, we can be more specific by saying “a workload presents its credential and authenticates itself using the private key bound to the credential to generate a signature and prove control of the key”. It’s way more burdensome and time consuming to say, but it could help avoiding overloading how the term “identity” gets over used (this may be a bit of an extreme example).

Cheers

Pieter


From: Joseph Salowey <joe@salowey.net>
Sent: Tuesday, July 2, 2024 1:52 AM
To: Justin Richer <jricher@mit.edu>
Cc: Watson Ladd <watsonbladd@gmail.com>; 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?)

I put together a PR (https://github.com/ietf-wg-wimse/draft-ietf-wimse-arch/pull/36/files) for the architecture draft to try to better describe identity in a new section.  Please comment and let me know if it helps. Other sections will probably need to be modified once we tighten down this section.

Cheers,

Joe

On Tue, Jun 18, 2024 at 10:11 AM Justin Richer <jricher@mit.edu<mailto:jricher@mit.edu>> wrote:
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<mailto: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<mailto:wimse@ietf.org>
To unsubscribe send an email to wimse-leave@ietf.org<mailto:wimse-leave@ietf.org>

--
Wimse mailing list -- wimse@ietf.org<mailto:wimse@ietf.org>
To unsubscribe send an email to wimse-leave@ietf.org<mailto:wimse-leave@ietf.org>