<?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.7.7 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-salowey-wimse-arch-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="WIMSE Architecture">Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-salowey-wimse-arch-00"/>
    <author initials="J." surname="Salowey" fullname="Joseph Salowey">
      <organization>Venafi</organization>
      <address>
        <email>joe@salowey.net</email>
      </address>
    </author>
    <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yaroslavros@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization/>
      <address>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>
    <date year="2024" month="March" day="04"/>
    <area>General</area>
    <workgroup>wimse</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 41?>

<t>The increasing prevalence of cloud computing and micro service architectures has led to the rise of complex software functions being built and deployed as workloads, where a workload is defined as a running instance of software executing for a specific purpose.</t>
      <t>Workloads need to be provisioned with a unique identity when they are started. This information and their security context needs to be passed along the call chain. This architecture document discusses the motivation for designing and standardizing protocols and payloads for conveying identity and security context information.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Workload Identity in Multi System Environments Working Group mailing list (wimse@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/wimse/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/jsalowey/wimse-arch"/>.</t>
    </note>
  </front>
  <middle>
    <?line 47?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The increasing prevalence of cloud computing and micro service architectures has led to the rise of complex software functions being built and deployed as workloads, where a workload is defined as a running instance of software executing for a specific purpose.</t>
      <t>Workloads need to be provisioned with a unique identity when they are started. Often, also other information needs to be provided, such as trust anchors. We use the term "identity" in a generic way to express that the information may vary with deployments since workloads run applications and some of these applications may require X.509 cerificates (along with the private key), or JSON Web Tokens (JWTs) acting as bearer tokens at the application layer, or both.</t>
      <t><xref target="arch-fig"/> shows the software layering at a host running workloads. As the workloads get started, they get their identity provisioned with the help of an agent. The agent is responsible for interacting with a server that ensures workloads in set of hosts are managed conviently and identity provisioned to workloads are associated with the expected authorization privileges. The server manages the lifecycle of the workloads with the help of the agent. The agent may also need to request attestation information about the hardware, lower layer software/firmware, and characteristics of the workload before the server identity information can be obtained.</t>
      <t>How the workload obtains identity information and interacts with the agent is subject to different implementations, as described in this document. A few variants (such as environmet variables or domain sockets) have been used in deployments today.</t>
      <figure anchor="arch-fig">
        <name>Host Software Layinger in a Workload Identity Architecture.</name>
        <artwork><![CDATA[
   +---------------+
   |    Server     |
   |               |
   +---------------+
           ^|
           ||
           ||
           || Identity
           || Information                   ..
           ||                               ||
           ||                               || Workload
           ||                               ||    to
           ||                               || Workload
           ||                               || Communication
  +--------||-------------------------------vv-----------+
  |        |v                        +-----------------+ |
  |  +---------------+              +-----------------+| |
  |  | Agent         |              | Workload        || |
  |  |               |              |                 || |
  |  |              <...............>                 || |
  |  |            ^  |  Identity    | ^               |+ |
  |  +------------'--+  Information +-'---------------+  |
  |               '                   '                  |
  |               ' & Identity        ' Identity         |
  |   Attestation ' Information       ' Information      |
  |               v                   v                  |
  |------------------------------------------------------|
  | Host Operating System and Hardware                   |
  +------------------------------------------------------+
]]></artwork>
      </figure>
      <t>Once the workload is started and has obtained unique identity information, it can offer its services. Once a service is invoked on a workload it may require interaction with other workloads. An example of such interaction is shown in <xref target="I-D.ietf-oauth-transaction-tokens"/> where an externally-facing endpoint is invoked using conventional authorization mechanism, such as an OAuth 2.0 access token. The interaction with other workload may require the security context to be passed along the call chain.</t>
      <t>In the rest of the document we describe terminology and use cases, discuss details of the architecture, and discuss threats.</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?>

<t>This document uses the following terms:</t>
      <ul spacing="normal">
        <li>
          <t>Workload</t>
        </li>
      </ul>
      <t>A workload is a running instance of software executing for a specific purpose that interacts with other parts of a larger system. A workload may exist for a very short durations of time (nanoseconds) and run for a specific purpose such as to provide a response to an API request. Other kinds of workloads may execute for a very long duration such as months or years - examples include database services and machine learning training jobs.</t>
      <ul spacing="normal">
        <li>
          <t>Security Context</t>
        </li>
      </ul>
      <t>A security context contains information needed for a workload to pefrom its function. This information is often used for authorization, accounting and auditing purposes and often contains information about the request being made. Some examples inlcude user information, software and hardware information or information about what processing has already happened for the request. Different pieces of context information may originate from different authorities.</t>
      <ul spacing="normal">
        <li>
          <t>Identity Proxy</t>
        </li>
      </ul>
      <t>Identity proxy is an intermediary that can inspect, replace or augment workload identity and security context information. Identity proxy can be a capability of a transparent network service, such as a security gateway, or it can be implemented in service performing explicit connection processing, such as a reverse proxy or a CDN service.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <section anchor="initial-workload-identity">
        <name>Initial Workload Identity</name>
        <t>Typically a workload obtains its identity early in its lifecycle. This identity is sometimes referred to as the "bottom turtle" on which further identity is built. Some common mechanisms for obtaining this initial identity include:</t>
        <ul spacing="normal">
          <li>
            <t>File System projection - in this mechanisms the identity is provisioned to the workload as an entity in the filesystem.</t>
          </li>
          <li>
            <t>Local API - the identity is provided through an api such as a local domain socket (SPIFFE) or local network API calls (Cloud Provider Metadata Server).</t>
          </li>
          <li>
            <t>Environment Variables - identity may also be injected into workloads using operating system environment variables.</t>
          </li>
        </ul>
      </section>
      <section anchor="attestation">
        <name>Attestation</name>
      </section>
      <section anchor="identity-credentials">
        <name>Identity Credentials</name>
        <t>The identity is provisioned to the workload as a set of credentials. There are two main types of workload credentials: bearer tokens and X.509 certificates.</t>
        <t>Bearer tokens are tokens presented to another party as proof of identity.  They are typically signed to prevent forgery, however since these credentials are not bound to other information its possible that they could be stolen and reused elsewhere. To reduce some of these risks, bearer tokens may have short lifespans and may be rotated often.</t>
        <t>X.509 certificate credentials consist of two parts, a public key certificate that is a signed data structure that contains a public key and identity information and a private key which. The certificate is sent during authentication, however the private key is kept secret and only used in cryptographic computation to to prove that the presenter has access to the private that corresponds to the public key in the certificate.</t>
      </section>
      <section anchor="basic-service-authentication">
        <name>Basic Service Authentication</name>
        <t>One of the most basic use cases for workload identity is for authenticating one workload to another such as in the case where one service is making a request of another service within a larger application. Even in this simple case the identity of the workload is often a composite of many attributes such as:</t>
        <ul spacing="normal">
          <li>
            <t>Service Name</t>
          </li>
          <li>
            <t>Instance Name</t>
          </li>
          <li>
            <t>Role</t>
          </li>
          <li>
            <t>Environment</t>
          </li>
          <li>
            <t>Trust Domain</t>
          </li>
          <li>
            <t>Software Attestation</t>
          </li>
          <li>
            <t>Hardware Attestation</t>
          </li>
        </ul>
        <t>These attributes are used for various purposes:</t>
        <ul spacing="normal">
          <li>
            <t>ensuring the request is made to the correct service or service instance</t>
          </li>
          <li>
            <t>authorizing access to APIs and resources</t>
          </li>
          <li>
            <t>providing an audit train of requests within a system</t>
          </li>
          <li>
            <t>providing context for other decisions made within a service</t>
          </li>
        </ul>
        <t>There are several methods defined to perform this authentication.  Some of the most common include:</t>
        <ul spacing="normal">
          <li>
            <t>TLS authentication of the server using X.509 certificates and bearer token, encoded as JWTs, on top of HTTP or other protocol request.</t>
          </li>
          <li>
            <t>Mutual TLS authentication using X.509 certificate for both client and server.</t>
          </li>
          <li>
            <t>TLS authentication of the server and HTTP request signing using a secret key.</t>
          </li>
        </ul>
      </section>
      <section anchor="security-context-establishment-and-propagation">
        <name>Security Context Establishment and Propagation</name>
        <t>In a typical system of workloads additional information is needed in order for the workload to perform its function. For example, it is common for a workload to require information about a user or other entity that originated the request. Other types of information may include information about the hardware or software that the workload is running or information about what processing and validation has already been done to the request.  This type of information is part of the security context that the workload uses during authorization, accounting and auditing.  This context is propagated and possibly augmented from workload to workload using tokens. Workload identity comes into play to ensure that the information in the context can only be used by an authorized workload and that the context information originated from an authorized workload.</t>
      </section>
      <section anchor="delegation-and-impersonation">
        <name>Delegation and Impersonation</name>
        <t>TBD.</t>
      </section>
      <section anchor="asynchronous-and-batch-requests">
        <name>Asynchronous and Batch Requests</name>
        <t>TBD.</t>
      </section>
      <section anchor="cross-boundary-workload-identity">
        <name>Cross-boundary Workload Identity</name>
        <t>As workloads often need to communicate across administrative boundaries, extra care needs to be taken when it comes to identity communication to ensure scalability and privacy.</t>
        <section anchor="egress-identity-generalization">
          <name>Egress Identity Generalization</name>
          <t>A workload communicating with a service, or another workload provided by external organization may need to provide more generic identity information. Detailed identity of internal workload originating the communication is relevant inside the administrative domain but could be excessive for the outside world and expose internal topology information that can be sensitive.</t>
          <t>A security gateway at the edge of administrative domain can be used to validate identity information of the workload, perform context specific authorization of the transaction and replace workload specific identity with a generalized one for given administrative domain.</t>
        </section>
        <section anchor="inbound-gateway-identity-validation">
          <name>Inbound Gateway Identity Validation</name>
          <t>Inbound security gateway is a common design pattern for service protection. This functionality is often found in CDN services, API gateways, load balancers, Web Application Firewalls (WAFs) and other security solutions. Workload identity verification should be performed as a part of these security services. After validation of workload identity, the gateway may either leave it unmodified or replace it with its own identity to be validated by the destination.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="traffic-interception">
        <name>Traffic Interception</name>
        <t>Workloads communicating with applications may face different threats to traffic interception in different deployments. In many deployments security controls are deployed for internal communications at lower layers to reduce the risk of traffic observation and modification for network communications. When a security layer, such as TLS, is deployed in these environments. TLS may be terminated in various places, including the workload itself, and in various middleware devices, such as load balancers, gateways, proxies, and firewalls. Therefore, protection is provided only between each adjacent pair of TLS endpoints. There are no guarantees of confidentiality, integrity and correct identity passthrough in those middleware devices and services.</t>
      </section>
      <section anchor="information-disclosure">
        <name>Information Disclosure</name>
        <t>Observation and interception of network traffic is not the only means of disclosure in these systems. Other vectors of information leakage is through disclosure in log files and other observability and troubleshooting mechanisms. For example, an application may log the contents of HTTP headers containing JWT bearer tokens. The information in these logs may be made available to other systems with less stringent access controls, which may result in this token falling into an attackers hands who then uses it to compromise a system. This creates privacy risks and potential surface for reconnaissance attacks. If observed tokens can be reused, this also may allow attackers to impersonate workloads.</t>
      </section>
      <section anchor="workload-compromise">
        <name>Workload Compromise</name>
        <t>Even the most well-designed and implemented workloads may contain security flaws that allow an attacker to gain limited or full compromise. For example, a server side request forgery may result in the ability for an attacker to force the workload to make requests of other parts of a system even though the rest of the workload functionality may be unaffected. An attacker with this advantage may be able to utilize privileges of the compromised workload to attack other parts of the system. Therefore it is important that communicating workloads apply the principle of least privilege through security controls such as authorization.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-oauth-transaction-tokens">
          <front>
            <title>Transaction Tokens</title>
            <author fullname="Atul Tulshibagwale" initials="A." surname="Tulshibagwale">
              <organization>SGNL</organization>
            </author>
            <author fullname="George Fletcher" initials="G." surname="Fletcher">
              <organization>Capital One</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Microsoft</organization>
            </author>
            <date day="29" month="November" year="2023"/>
            <abstract>
              <t>   Transaction Tokens (Txn-Tokens) enable workloads in a trusted domain
   to ensure that user identity and authorization context of an external
   programmatic request, such as an API invocation, are preserved and
   available to all workloads that are invoked as part of processing
   such a request.  Txn-Tokens also enable workloads within the trusted
   domain to optionally immutably assert to downstream workloads that
   they were invoked in the call chain of the request.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-00"/>
        </reference>
      </references>
    </references>
    <?line 221?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Todo: Add your name here.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1b/3IbN5L+n0+BU6ouTiLy7FS2bqPKJqtI9lop2/JZSny5
rc0WOAOSsIYDZjAjimslz3LPsk+2X3cDGMyQtrN1dffXsVw2OQOgG/3z6wY8
nU4nrW0rc6KOXrvmpnK6VBelqfFwp2yttHreVa1VVzvfmrV6XN/axtVrDFAP
Xl88v3r8iTptipVtTdF2jTma6Pm8Mbe0HL0dvSxdUes1iJWNXrRTryu3Nbvp
1q69mWoMnT58OCl0a5au2Z2A/sJNfDdfW++tq693G0y9eHz9ZDKxm+ZEtU3n
288fPvzy4ecT3Rh9ov5katPoarLFXpaN6zYnihef3JgdnpWYXremqU07PScW
JhPf6rr8KxipsfbO+Ilf66b968+da40/UbWbbOyJ+nPrimPlXdM2ZuHxbbem
L3+ZTHTXrlxzMlHTicLH1pj03Uxdydb4mWz5O+fNZjV44Zqlru3fdIvNnagf
TK0Xll+YtbbViXrjzB+DjGZgeUDjx5l65bxb65uVy6j8qBvnK307ejmk9F++
0JVpclK7MA9//3FJj2aFWw8IPp2pa1+s3MLUdplRfKrr2vjxuwHBnNCKh8/a
NBzk7nh3+NSuWWPKrTmBhqH8/tdkOp0qPfdtowsMvV4ZcFVA597WS7WByWFH
dWGUW6iicl2pwP+ma+ktFKzWtmic8qa5tRikM6v0YMmrypSqdarFuo31sgwW
qMwdtL5otzAvtejqgvbj1dzQuvPOVi2vXppN5XZYAittgxvBSrYrg2k6PVLW
Y+jC1jJSq6ara1oJAoYZCveJnLkzhWwAgsBgvzGFXdhCbbpmA2OaTSbRZb2q
jWxgbiAMd2vJX/Bka9sVpna1/bmDxKJjg7Ga9rpTRAi0m9aU0O8KDCa5u5r3
hmG2geSKrqGphYMD3bVM0EeK2nvaEpxoySKEeVWqWGlbh0VzgStEgY4jSGl9
0WGq50lrB10LXdpwabxd1lF/7Ka6Ke3fRN8ODukqz+82eidCoGng79bsWKhx
tzx/zH+2zZlY19qWZWUmk48oRjSu7FjZ/29r/zu2drloTX0Mm/FOObxuBoY3
sC6iUZoSUbcrVrQZjvsQBkJI42fqtVEdxEjyRGxfq6NI+0gy2JKSAvay1Tta
0txBhZ5sTrc8KSe8xphb3exkNyJrslWvoHwILUmc5Kn0ZlPZQoui2MzcmgWL
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
YuHuzT8Ac4ZO6204AAA=

-->

</rfc>
