<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-gilman-wimse-use-cases-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="WIMSE Use Cases">Workload Identity Use Cases</title>
    <seriesInfo name="Internet-Draft" value="draft-gilman-wimse-use-cases-00"/>
    <author fullname="Evan Gilman" role="editor">
      <organization>SPIRL</organization>
      <address>
        <email>evan@spirl.com</email>
      </address>
    </author>
    <author fullname="Justin Richer">
      <organization>Bespoke Engineering</organization>
      <address>
        <email>ietf@justin.richer.org</email>
      </address>
    </author>
    <author fullname="Pieter Kasselman">
      <organization>Microsoft</organization>
      <address>
        <email>pieter.kasselman@microsoft.com</email>
      </address>
    </author>
    <author fullname="Joseph Salowey">
      <organization>Venafi</organization>
      <address>
        <email>joe@salowey.net</email>
      </address>
    </author>
    <date year="2023" month="August" day="28"/>
    <keyword>identity</keyword>
    <keyword>security</keyword>
    <keyword>cloud computing</keyword>
    <abstract>
      <?line 44?>

<t>Workload identity systems like SPIFFE provide a unique set of security challenges, constraints, and possibilities that affect the larger systems they are a part of. This document seeks to collect use cases within that space, with a specific look at both the OAuth and SPIFFE technologies.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/bspk/draft-gilman-wimse-use-cases"/>.</t>
    </note>
  </front>
  <middle>
    <?line 48?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The OAuth and SPIFFE communities have historically been fairly disjoint. The former is a set of identity standards shepherded by the IETF and is (mostly) human-centric, while the latter is a set of identity standards shepherded by the CNCF and is (mostly) workload-centric. Recently, members of both communities have begun to discuss a set of common challenges that they are facing, which they believe could be evidence of a gap in the broader ecosystem of identity standards.</t>
      <t>This document captures those challenges as a set of use cases as a first step towards exploring that gap, should it in fact exist.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <t>This section captures the underserved use cases identified. Once finished, we will see what patterns emerge (e.g. policy enforcement, operational, etc) and prioritize them. This is still a work in progress (WIP) and we invite members of the community to contribute additional use cases.</t>
      <section anchor="constrained-credential-security">
        <name>Constrained Credential Security</name>
        <t>As a security engineer, I’d like to mitigate the unconstrained re-use of a credential by those who are able to observe it in use (e.g. a proxy, a log message, or a workload processing the request)</t>
        <ol spacing="normal" type="1"><li>As a security engineer, I’d like to prevent token replay in the event that one of my internal services is compromised.</li>
          <li>If a workload credential is compromised, I can’t re-use it.</li>
          <li>Workload authentication using asymmetric credentials
    1. Support mTLS and alternaive forms of asymmetric authentication
    1. More robust than PVT_KEY_JWT authentication</li>
        </ol>
      </section>
      <section anchor="cross-workload-access">
        <name>Cross-workload Access</name>
        <t>As a [SPIFFE,OAuth] workload owner, I’d like to access other workloads that are using [SPIFFE,OAuth] in a simple and consistent way, regardless of their location, platform, or domain.</t>
        <ol spacing="normal" type="1"><li>As a SPIFFE user, I’d like to access OAuth protected resources without having to provide any additional secrets (as a SPIFFE user with more than 10k workloads, I’d like to access OAuth protected resources without having to manage 10k OAuth Clients).</li>
          <li>Access workloads from different service providers (access across different trust domains workloads to workload from different companies).</li>
          <li>Access workloads running in different cloud services (Multi-cloud deployments).</li>
        </ol>
      </section>
      <section anchor="chain-of-custody-for-requests">
        <name>Chain of Custody for Requests</name>
        <t>As a security engineer, I’d like a verifiable chain of custody for each request transiting my system, starting with the request initiator, which may be a human or a workload.</t>
        <ol spacing="normal" type="1"><li>As a security engineer, I’d like to authorize data access RPCs iff the data owner issued the original request (a requests made by the data owner transit many backend services prior to reaching the data access layer).</li>
          <li>Authenticating and authorizing a service that is operating on behalf of a logged in user.</li>
          <li>Authenticating and authorizing a service that is operating on behalf of a user as a schedule job.</li>
          <li>As a security engineer, I’d like to authorize payment RPCs iff the request has transited our fraud detection service.</li>
          <li>As a security engineer, I’d like to authorize an RPC iff the request entered our infrastructure via a specific front end system.</li>
        </ol>
      </section>
      <section anchor="local-authentication-and-authorization-decisions">
        <name>Local Authentication and Authorization Decisions</name>
        <t>As a security engineer, I’d like to be able to make local authentication and authorization decisions in order to meet my performance and availability requirements.</t>
        <ol spacing="normal" type="1"><li>As a developer, I’d like security-related hot path delays to not exceed &lt;&lt;10ms.</li>
          <li>As a developer, I’d like things to continue working through (potentially asymmetric) network disruption.</li>
          <li>Lookup of info/keys related to an entity's identity needs to work when the entity is disconnected from the rest of the system (particularly “upstream” entities that trust comes from).</li>
          <li>Account onboarding is not strictly time-sensitive (can use networks), but local account use is (day-to-day authentication needs to stay local).</li>
        </ol>
      </section>
      <section anchor="audit-logs">
        <name>Audit Logs</name>
        <t>As a security engineer, I’d like a place to record information about an entity for the purposes of remediation, reconciliation, audit and forensics.</t>
        <ol spacing="normal" type="1"><li>If a workload is compromised, I can remediate that specific workload without impacting others.</li>
          <li>If an account is onboarded based on info from another entity, we need to write that down into the account and carry it through the network, especially if the account is used to onboard onto an entity further down the call stack.</li>
          <li>Reconcile logs when a disconnected entity is re-connected to the overall network fabric.</li>
        </ol>
      </section>
      <section anchor="consistent-entity-identification">
        <name>Consistent Entity Identification</name>
        <t>I need to be able to identify different entities uniquely and deterministically within the system.</t>
        <ol spacing="normal" type="1"><li>Each network entity needs to be identified uniquely (and http urls don’t quite give us all the aspects we need)</li>
          <li>As a SPIFFE user, I’d like a standard way to learn the bundle endpoint parameters of a remote trust domain</li>
        </ol>
      </section>
      <section anchor="authorization">
        <name>Authorization</name>
        <t>As a security engineer, I’d like a place to record information about an entity for use in authorization decisions.</t>
        <ol spacing="normal" type="1"><li>As a security engineer, I’d like to authorize an RPC iff the origin and integrity of the software calling it can be verified (e.g. matches a specific hash value, signature and trusted software bill of materials (SBOM))</li>
          <li>Authentication based on credential service provider (CSP), infrastructure or workload identity documents.</li>
          <li>Ability to carry rights/policies/privileges with a verifiable artifact to a disconnected entity for that entity to verify without having to reconnect.</li>
          <li>Transporting capabilities to transfer the permission to execute an operation from caller to service.</li>
          <li>Record should be append-only as it goes through the call chain. Participation (adding to the record) is not mandatory for every node in the chain.</li>
        </ol>
      </section>
      <section anchor="general-requirements">
        <name>General requirements</name>
        <t>In addition to the above use cases, the authors have determined the following general requirements:</t>
        <t>Observability should be a requirement. The credential should have a meaningful identifier that can be logged etc.</t>
        <t>Accountability: Workloads need to be able to make a localized decision but still be accountable to the overarching policy and framework that provisioned them.</t>
        <t>The system owner/operator should be able to effect changes in the system (the control plane) based on signals from the application plane.</t>
        <t>Definition of information encapsulated in the document (e.g. capability transmission).</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 157?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
qKh2foRRLl5ewMp5JpT7F2mM4oufHwAA

-->

</rfc>
