<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
    <?rfc toc="yes"?>
    <?rfc tocompact="yes"?>
    <?rfc tocdepth="4"?>
    <?rfc tocindent="yes"?>
    <?rfc symrefs="yes"?>
    <?rfc sortrefs="yes"?>
    <?rfc comments="yes"?>
    <?rfc inline="yes"?>
    <?rfc compact="yes"?>
    <rfc category="std" docName="draft-rosenblum-cdni-protected-secrets-metadata-00" updates="8006,8008" ipr="trust200902">
        <front>
            <title abbrev="CDNI rotected Secrets Metadata">
                CDNI Protected Secrets Metadata
            </title>
            <author initials="B." surname="Rosenblum" fullname="Ben Rosenblum">
                <organization>Vecima</organization>
                <address>
                    <postal>
                        <street>
                            4375 River Green Pkwy #100
                        </street>
                        <city>
                            Duluth
                        </city>
                        <region>
                            GA
                        </region>
                        <code>
                            30096
                        </code>
                        <country>
                            US
                        </country>
                    </postal>
                    <email>ben@rosenblum.dev</email>
                </address>
            </author>
            <date/>
            <abstract>
                <t>
                    This is an early draft for a proposed mechanism to protect
                    secret values (such as keys or token salt values) that are
                    part of the Configuration Metadata.
                </t>
            </abstract>
        </front>
        <middle>

            <section title="Introduction" anchor="INTRODUCTION">
                <t>
                    Certain objects in both the FCI and MI interfaces
                    encapsulate sensitive values such as credentials and access
                    keys which should not necessarily be accessible to all
                    parties which can view the advertisement and configuration
                    payloads.
                </t>
                <t>
                    This subpart defines two mechanisms to enclose secret
                    values in the context of other FCI and MI objects which may
                    only be viewed by the intended recipients: embedded secrets
                    encrypted using a certificate supplied by counterparty, and
                    secrets stored in an external service (support defined in
                    this draft specifically for HashiCorp Vault) accessed via a
                    specified path and a key ID.
                </t>
                <t>
                    Either side can share secrets, and the functionality is the
                    same, so the FCI capabilities are wrappers around the MI
                    objects similar to how FCI footprints (used in
                    <xref target="RFC8008"/>
                    ) reutilize the MI.Footprint and registry defined in <xref target="RFC8006"/>
                        .
                </t>
                <t>
                    The public certificate for the dCDN is shared via
                    FCI.SecretCertificate and the certificate for the uCDN
                    is shared via MI.SecretCertificate.
                </t>
                <t>The workflow for embedded secrets on both sides:</t>
                <list style="numbers">
                    <t>
                        uCDN GET advertisement with FCI.SecretStore and
                        FCI.SecretCertificate
                    </t>
                    <t>
                        As the uCDN has not yet provided a certificate, any
                        embedded secret values in the advertisement are
                        omitted.
                    </t>
                    <t>
                        uCDN PUT configuration with MI.SecretStore and
                        MI.SecretValue with values encrypted using dCDN
                        certificate. Configuration also contains
                        MI.SecretStore and MI.SecretCertificate.
                    </t>
                    <t>
                        uCDN GET advertisement again; having provided an
                        MI.SecretCertificate, the advertisement now
                        contains populated MI.SecretValue objects where
                        necessary.
                    </t>
                </list>
                <t>
                    Detailed workflow examples, including modes which reference
                    external services or contain secret values in plaintext,
                    are available in Section
                    <xref target="WORKFLOW-EXAMPLES" format="counter"/>
                    .</t>
                    <t>
                        The MI.SecretValue objects are utilized in the FCI and
                        MI interfaces where secrets must be referenced, for
                        example, the access-key-secret used for the
                        MI.LoggingTransportS3API.
                    </t>
                    <t>
                        Certificates can be validated based on signature in
                        production environments, and self-signed certificates
                        can be accepted in testing/lab environments. With this
                        model, no out-of-band communication is required to
                        share secrets.
                    </t>
                </section>
                <section title="Metadata Objects" anchor="METADATA-OBJECTS">
                    <section title="MI.SecretStore" anchor="MI.SecretStore">
                        <t>
                            MI.SecretStore instructs the counterparty on how to
                            dereference the value of any MI.SecretValue objects
                            linked to the store.
                        </t>
                        <t>
                            For embedded stores, MI.SecretStore identifies the
                            certificate used for encrypting the values. For
                            external stores (Vault), MI.SecretStore specifies
                            the service endpoint that should be used in
                            conjunction with the MI.SecretValue key path to
                            obtain the secure data.
                            <list>
                            <t>
                                Property: secret-store-id
                                <list>
                                <t>
                                    Description: A unique identifier for this
                                    store configuration that is referenced from
                                    linked MI.SecretValue objects.
                                </t>
                                <t>Type: String.</t>
                                <t>Mandatory-to-Specify: Yes.</t>
                            </list>
                        </t>
                        <t>
                            Property: secret-store-type
                            <list>
                            <t>
                                Description: A type discriminator for the
                                config object, this property specifies whether
                                the linked MI.SecretValue objects contain
                                embedded secret objects or reference an
                                external store.
                            </t>
                            <t>
                                Type: String. One of MI.SecretStoreTypeEmbedded
                                or MI.SecretStoreTypeVault.
                            </t>
                            <t>Mandatory-to-Specify: Yes.</t>
                        </list>
                    </t>
                    <t>
                        Property: secret-store-config
                        <list>
                        <t>
                            Description: The appropriate configuration object
                            for the specified store type.
                        </t>
                        <t>
                            Type: Specified by the secret-store-type property.
                        </t>
                        <t>Mandatory-to-Specify: Yes.</t>
                    </list>
                </t>
                <t>
                    Property: secret-certificate-id
                    <list>
                    <t>
                        Description: The ID of the MI.SecretStoreCertificate
                        used to encrypt secret messages linked with this store
                        configuration. Used only in the case of
                        MI.SecretStoreTypeEmbedded.
                    </t>
                    <t>Type: String.</t>
                    <t>Mandatory-to-Specify: No.</t>
                </list>
            </t>
        </list>
        <t>The following shows an example usage of MI.SecretStore</t>
        <figure>
            <artwork>{
  "secret-store-id": "store-1",
  "secret-store-type": "MI.SecretStoreTypeEmbedded",
  "secret-store-config": {
       "format": "cms"
  }
}</artwork>
        </figure>
    </t>
</section>
<section title="MI.SecretStoreTypeEmbedded" anchor="MI.SecretStoreTypeEmbedded">
    <t>
        MI.SecretStoreTypeEmbedded contains the configuration necessary to
        decrypt embedded secrets in MI.SecretValue.
    </t>
    <t>
        The only currently supported encrypted message format is Cryptographic
        Message Syntax as defined in
        <xref target="RFC5652"/>
        . Messages must be CMS type "EnvelopedData" and Base64 encoded.</t>
        <t>
            A cleartext format is also defined for testing purposes. In this
            case, the value of a MI.SecretValue object's secret-value property
            is the cleartext secret.
            <list>
            <t>
                Property: format
                <list>
                <t>
                    Description: The format of the embedded encrypted message.
                </t>
                <t>Type: String. One of "cms" or "cleartext".</t>
                <t>Mandatory-to-Specify: Yes.</t>
            </list>
        </t>
    </list>
    <t>
        The following shows an example usage of MI.SecretStoreTypEmbedded with
        a "cms" format.
    </t>
    <figure>
        <artwork>{
  "secret-store-id": "store-1",
  "secret-store-type": "MI.SecretStoreTypeEmbedded",
  "secret-store-config": {
      "format": "cms"
  }
}
</artwork>
    </figure>
</t>
</section>
<section title="MI.SecretStoreTypeVault" anchor="MI.SecretStoreTypeVault">
    <t>
        MI.SecretStoreTypeVault contains the configuration necessary to
        reference secrets stored in an external instance of HashiCorp Vault KV
        store.
    </t>
    <t>
        MI.SecretValue objects referencing secrets stored in Vault use the
        secret-path property to identify the path and property key. See the
        MI.SecretValue documentation for details.
        <list>
        <t>
            Property: endpoint
            <list>
            <t>Description: The base URL of the Vault instance.</t>
            <t>Type: String.</t>
            <t>Mandatory-to-Specify: Yes.</t>
            </list>
        </t>
        <t>
            Property: namespace
            <list>
            <t>
                Description: The Vault namespace in which secret lookups should be
                performed.
            </t>
            <t>Type: String.</t>
            <t>Mandatory-to-Specify: Yes.</t>
            </list>
        </t>
        <t>
            Property: version
            <list>
            <t>Description: The Vault KV version.</t>
            <t>Type: Integer. Valid values: 1 or 2.</t>
            <t>Mandatory-to-Specify: Yes.</t>
            </list>
        </t>
        </list>
    </t>
<t>
        The following shows an example usage of MI.SecretStoreTypVault for
        Vault V1.
</t>
<figure>
    <artwork>{
  "secret-store-id": "store-2-vaultv1",
  "secret-store-type": "MI.SecretStoreTypeVault",
  "secret-store-config": {
      "endpoint": "https://vault.example.com/v1/secret",
      "version": 1,
      "namespace": "customer-1"
  }
}</artwork>
</figure>
<t>
        The following shows an example usage of MI.SecretStoreTypVault for
        Vault V2.
</t>
<figure>
    <artwork>{
  "secret-store-id": "store-2-vaultv2",
  "secret-store-type": "MI.SecretStoreTypeVault",
  "secret-store-config": {
      "endpoint": "https://vault.example.com/v1/secret",
      "version": 2,
      "namespace": "customer-1"
  }
}</artwork>
</figure>
</section>
<section title="MI.SecretValue" anchor="MI.SecretValue">
    <t>
        MI.SecretValue may be used in any FCI or MI object where sensitive data
        must be transmitted only to intended recipients.
        <list>
        <t>
            Property: secret-store-id
            <list>
            <t>
                Description: The linked MI.SecretStore which contains the
                configuration defining how to decrypt or access the referenced
                secret.
            </t>
            <t>Type: String.</t>
            <t>Mandatory-to-Specify: Yes.</t>
        </list>
    </t>
    <t>
        Property: secret-value
        <list>
        <t>
            Description: Used only for embedded secrets; the Base64 encoded
            value of a CMS message or the cleartext string, depending on the
            defined MI.SecretStore configuration.
        </t>
        <t>Type: String.</t>
        <t>Mandatory-to-Specify: No.</t>
    </list>
    </t>
    <t>
        Property: secret-path
        <list>
        <t>
            Description: Used only for HashiCorp Vault secrets; the path, not
            including namespace, to the secret, including the key of the particular
            property to access as the last path parameter.
        </t>
        <t>Type: String.</t>
        <t>Mandatory-to-Specify: No.</t>
    </list>
    </t>
</list>
<t>
        The following shows an example usage of MI.SecretValue with an
        embdedded CMS secret.
</t>
<figure>
    <artwork>{
  "secret-store-id": "store-1-cms",
  "secret-value": "MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFM
AACAQEwDQYJKoZIhvcNAQEBBQAEggEApJeXzsUS1jbAyNtQiJ9um9IMIHW5B2g+gHnXdNSTy
d33OEfTR6yLSZihBlFbHpY3qSzK1CX7RF5Oz3SqLDW+r3i1D/aHbVXwQbviWHEvHterql8l9
VDm2FCNaDx5vihdbtvng3+/vdJNNMMhmovwZL5uhPsK81DkKwZCvznMMWt8YdNSFGT62f73a
sh7Eg/mS54IUyYOJHYrXEkRLSjvl0j+JqcIR8hCOCA78+5bS4MgfdsS9xxSwQTrPru6EdTiv
MDKE/jlKg7li8lWdirWqtv0za5gLmH5T+zslXIoklwERAE50Jj8FxZD98EikKH8DAa+JeFsB
m6Z1+yVFsWucTBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBws1riXA6m336zRbsiKtrVg
CA267133v2zD/wjFQHXrKSJfd/2YJaxPskgdmQaVlgWCw=="
}</artwork>
</figure>
</t>
    <t>
        The following shows an example usage of MI.SecretValue with a reference
        to a secert stored in Vault.
    </t>
    <figure>
        <artwork>{
  "secret-store-id": "store-2-vaultv1",
  "secret-path": "bar/baz/importantsecret",
  "secret-key": "keyA"
}</artwork>
</figure>
</section>
<section title="MI.SecretCertificate" anchor="MI.SecretCertificate">
    <t>
        MI.SecretCertificate is used to share an
        <xref target="X.509"/>
        certificate to be used for encrypting embedded secret messages.</t>
        <t>
            In lab and testing environments, this certificate may be
            self-signed depending on participant agreement.
        </t>
        <t>
            In production environments, this should be a certificate signed by
            an appropriate CA and validated by the counterparty.
            <list>
            <t>
                Property: certificate-id
                <list>
                <t>
                    Description: A unique ID for this certificate that can be
                    referenced from a corresponding MI.SecretStore
                    configuration defined by the counterparty.
                </t>
                <t>Type: String.</t>
                <t>Mandatory-to-Specify: Yes.</t>
            </list>
        </t>
        <t>
            Property: certificate-value
            <list>
            <t>Description: The Base64 encoded certificate.</t>
            <t>Type: String.</t>
            <t>Mandatory-to-Specify: Yes.</t>
        </list>
    </t>
</list>
<t>The following shows an example usage of MI.SecretCertificate.</t>
<figure>
    <artwork>{
  "certificate-id": "store-1",
  "certificate-value": "MIIDZTCCAk2gAwIBAgIUFJokJzAxDgUGsBd8uhSblpMwSLAw
DQYJKoZIhvcNAQELBQAwQjELMAkGA1UEBhMCVVMxEDAOBgNVBAgMB0dlb3JnaWExITAfBgNV
BAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMzAxMjMyMDM2MDNaFw0yMzAyMjIy
MDM2MDNaMEIxCzAJBgNVBAYTAlVTMRAwDgYDVQQIDAdHZW9yZ2lhMSEwHwYDVQQKDBhJbnRl
cm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCT
11o9yebJmjiq7mXbLtnr5THpTnyahNpKECI+N8YZSl5+cS9hGa06zKQV3MNxbjJ15smmeWbg
ynYGwqhs5ZXGUjzd8S1/M1A08z1VFhEJiODQ00f3BOocpIn25RQzFz/BOLREW7sLkrhuz/WV
BR3bzp6T1gu3nKcRSNuNxO1p9490gS1LhsZYQKfNvncuxBCP0GTNbUOXd6xkQ+EX5cEKoODU
YWzOMdMAMlEEFb4jUjxYbbJoygwTMHpG2yGAQ2IXpB2/wrrawivxDHlMHGpML+Ie8o6YBR4P
DiOJmlCg9uIsirf65R1zhfcCxmNQ7z/IggC0WNQjZwymeZT9cFDdAgMBAAGjUzBRMB0GA1Ud
DgQWBBQb5eJeYLEpErJetb1eid5BgsS3uTAfBgNVHSMEGDAWgBQb5eJeYLEpErJetb1eid5B
gsS3uTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBURnrjVbHVwfV/u/xj
zK8p4dTke0xb0oKt0J5YeH95sRa66m3tQJYf0jbMNQ8InfXK0IzGM/uUOJX3daeOMQxMbJva
UDZV64kuU6IgkEQuLwkOP5k0Rc9+SuRMlvWOB2exiyQkd2iHJtURuEtvB39LIr4pPDsicBAY
xsm5ybIWCmqNMPkVl8Qks3lAXeF+xvH11tmciTJSYP0Ud2psbV3lduD76UT2bzDGkr690Kqr
oNS57WbQrHxEhtMbdq0cPfzqFlxyhckqNYrcw2v1igQDhplQ2eUc4ye0Mvimj1Me2mWjPvil
hvS3vDGhrmcx9mlishlI/RFy6yDI1gtkF7eS"
}
</artwork>
</figure>
</t>
</section>
</section>
<section title="Capabilities Objects" anchor="CAPABILITIES-OBJECTS">
    <t>
        These objects are simple capability wrappers around the Section
        <xref target="METADATA-OBJECTS" format="counter"/>
        defined MI objects.</t>
        <section title="FCI.SecretStore" anchor="FCI.SecretStore">
            <t>
                FCI.SecretStore instructs the uCDN on how to dereference the
                value of any MI.SecretValue objects linked to the store from
                other FCI objects via an embedded MI.SecretValue object. For
                further details, see Section
                <xref target="MI.SecretStore" format="counter"/>
                MI.SecretStore.
                <t>The following shows an example usage of FCI.SecretStore.</t>
                <figure>
                <artwork>{
  "capabilities": [
    {
      "capability-type": "FCI.SecretStore",
      "capability-value": {
        "secret-store-id": "store-1",
        "secret-store-type": "MI.SecretStoreTypeEmbedded",
        "secret-store-config": {
          "format": "cms"
        }
      }
    }
  ]
}
</artwork>
            </figure>
        </t>
    </section>
    <section title="FCI.SecretCertificate" anchor="FCI.SecretCertificate">
        <t>
            FCI.SecretCertificate is used to share an
            <xref target="X.509"/>
            certificate to be used for encrypting embedded secret messages via an embedded MI.SecretCertificate object. For further details, see Section  <xref target="MI.SecretCertificate" format="counter"/>
            MI.SecretCertificate.
        <figure>
            <artwork>{
  "capabilities": [
    {
      "capability-type": "FCI.SecretCertificate",
      "capability-value": {
        "certificate-id": "store-1",
        "certificate-value": "MIIDZTCCAk2gAwIBAgIUFJokJzAxDgUGsBd8uhSblp
MwSLAwDQYJKoZIhvcNAQELBQAwQjELMAkGA1UEBhMCVVMxEDAOBgNVBAgMB0dlb3JnaWExIT
AfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMzAxMjMyMDM2MDNaFw0yMz
AyMjIyMDM2MDNaMEIxCzAJBgNVBAYTAlVTMRAwDgYDVQQIDAdHZW9yZ2lhMSEwHwYDVQQKDB
hJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAo
IBAQCT11o9yebJmjiq7mXbLtnr5THpTnyahNpKECI+N8YZSl5+cS9hGa06zKQV3MNxbjJ15s
mmeWbgynYGwqhs5ZXGUjzd8S1/M1A08z1VFhEJiODQ00f3BOocpIn25RQzFz/BOLREW7sLkr
huz/WVBR3bzp6T1gu3nKcRSNuNxO1p9490gS1LhsZYQKfNvncuxBCP0GTNbUOXd6xkQ+EX5c
EKoODUYWzOMdMAMlEEFb4jUjxYbbJoygwTMHpG2yGAQ2IXpB2/wrrawivxDHlMHGpML+Ie8o
6YBR4PDiOJmlCg9uIsirf65R1zhfcCxmNQ7z/IggC0WNQjZwymeZT9cFDdAgMBAAGjUzBRMB
0GA1UdDgQWBBQb5eJeYLEpErJetb1eid5BgsS3uTAfBgNVHSMEGDAWgBQb5eJeYLEpErJetb
1eid5BgsS3uTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBURnrjVbHVwf
V/u/xjzK8p4dTke0xb0oKt0J5YeH95sRa66m3tQJYf0jbMNQ8InfXK0IzGM/uUOJX3daeOMQ
xMbJvaUDZV64kuU6IgkEQuLwkOP5k0Rc9+SuRMlvWOB2exiyQkd2iHJtURuEtvB39LIr4pPD
sicBAYxsm5ybIWCmqNMPkVl8Qks3lAXeF+xvH11tmciTJSYP0Ud2psbV3lduD76UT2bzDGkr
690KqroNS57WbQrHxEhtMbdq0cPfzqFlxyhckqNYrcw2v1igQDhplQ2eUc4ye0Mvimj1Me2m
WjPvilhvS3vDGhrmcx9mlishlI/RFy6yDI1gtkF7eS"
      }
    }
  ]
}
</artwork>
        </figure>
    </t>
    <t>
</t>
</section>
</section>
<section title="Workflow Examples" anchor="WORKFLOW-EXAMPLES">
    <t>
        The facilities in this document can be used for simple and
        bidirectional exchange of secret values between uCDN and dCDN
        participants in an Open Caching System. The embedded model provides for
        secret exchange without reference to out-of-band services, and the
        Vault support allows external reference to secrets stored in HashiCorp
        Vault.
    </t>
    <t>
        Participants utilizing a secrets distribution method or service not
        supported here may define a Private Feature MI object with the
        necessary configuration for that method or service and then utilize
        that MI object within MI.SecretStore and FCI.SecretStore.
    </t>
    <t>
        Provided below are workflow examples for uCDN -&gt; dCDN and dCDN -&gt;
        uCDN exchange of secret values.
    </t>
    <t>
        Consideration is needed when addressing key rollover, expiration, and
        revocation in the embedded model. The recommended workflow for key
        rollover is as follows:
    </t>
    <t>
        When the secrets recipient provides an updated configuration that no
        longer contains an MI.SecretCertificate with an ID referenced in
        MI.SecretStore used by MI.SecretValue objects, those MI.SecretValue
        objects should be reduced to an object with no contained secret-value
        property as they would be in the initial state before any certificate
        had been provided.
        <list style="numbers">
        <t>
            When the secrets recipient provides an updated configuration that
            no longer contains an MI.SecretCertificate with an ID referenced in
            MI.SecretStore used by MI.SecretValue objects, those MI.SecretValue
            objects should be reduced to an object with no contained
            secret-value property as they would be in the initial state before
            any certificate had been provided.
        </t>
        <t>
            If the secrets recipient then provides a new MI.SecretCertificate
            object, the secrets sender should update their MI.SecretStore to
            reference the new certificate-id and then update any referencing
            MI.SecretValue objects to include an updated secret-value property
            that contains the newly encrypted values.
        </t>
    </list>
</t>
<section title="Workflow: uCDN -&gt; dCDN Embedded" anchor="Workflow:-uCDN--&gt;-dCDN-Embedded">
    <t>
        <list style="numbers">
        <t>
            uCDN advertises FCI.SecretStore with a store-type of
            MI.SecretStoreTypeEmbedded; other FCI objects may contain
            MI.SecretValue objects that reference the store-id. MI.SecretValue
            objects do not presently contain a secret-value property.
        </t>
        <t>dCDN pushes MI configuration with an MI.SecretCertificate.</t>
        <t>
            uCDN updates the advertised FCI.SecretStore with a certificate-id
            property that references the dCDN MI.SecretCertificate; any
            MI.SecretValue objects in other FCI objects now contain a
            secret-value property with the CMS encrypted secret.
        </t>
    </list>
</t>
</section>
<section title="Workflow: dCDN -&gt; uCDN Embedded" anchor="Workflow:-dCDN--&gt;-uCDN-Embedded">
    <t>
        <list style="numbers">
        <t>uCDN advertises an FCI.SecretCertificate.</t>
        <t>
            dCDN pushes MI configuration containing MI.SecretStore with a
            store-type of MI.SecretStoreTypeEmbedded and a certificate-id
            referencing the FCI.SecretCertificate advertised by the uCDN. Other
            MI objects may contain MI.SecretValue objects with a secret-value
            property containing the CMS encrypted secret.
        </t>
    </list>
</t>
</section>
<section title="Workflow: Embedded Cleartext (uCDN and dCDN)" anchor="Workflow:-Embedded-Cleartext-(uCDN-and-dCDN)">
    <t>
        <list style="numbers">
        <t>
            An MI.SecretStoreTypeEmbedded has a defined format of "cleartext".
        </t>
        <t>
            Any MI.SecretValue objects that reference the cleartext store
            contain a secret-value property with the unencrypted secret.
        </t>
    </list>
</t>
</section>
<section title="Workflow: uCDN -&gt; dCDN Vault" anchor="Workflow:-uCDN--&gt;-dCDN-Vault">
    <t>
        <list style="numbers">
        <t>
            uCDN advertises an FCI.SecretStore with appropriate configuration
            for accessing an instance of HashiCorp Vault accessible to the
            dCDN. Other FCI objects may contain MI.SecretValue objects that
            reference the FCI.SecretStore and a secret-path property specifying
            which secret to retrieve.
        </t>
    </list>
</t>
</section>
<section title="Workflow: dCDN -&gt; uCDN Vault" anchor="Workflow:-dCDN--&gt;-uCDN-Vault">
    <t>
        <list style="numbers">
        <t>
            dCDN pushes MI configuration including an MI.SecretStore with
            appropriate configuration for accessing an instance of HashiCorp
            Vault accessible to the uCDN. Other MI objects may contain
            MI.SecretValue objects that reference the MI.SecretStore and a
            secret-path property specifying which secret to retrieve.
        </t>
    </list>
</t>
</section>
</section>
<section anchor="Security" title="Security Considerations">
    <t>
        The FCI and MI objects defined in the present document are
        transferred via the interfaces defined in CDNI
        <xref target="RFC8006"/>
        . <xref target="RFC8006"/>
        describes how to secure these interfaces, protecting the integrity,    confidentiality and ensuring the authenticity of the dCDN and uCDN.
        The security provide by
        <xref target="RFC8006"/>
        should therefore address the above
        security concerns.
    </t>
</section>
<section anchor="IANA" title="IANA Considerations">
    <section anchor="IANA.cdni.payload.types" title="CDNI Payload Types">
        <t>
            TBD.
        </t>
    </section>
</section>
<section anchor="Acknowledgements" title="Acknowledgements">
    <t>
        The authors would like to express their gratitude to the following
        members of the
        Streaming Video Technology Alliance
        <xref target="SVTA"/>
        Open Caching Working Group for their guidance, contribution, and review,
        <list>
            <t>Glenn Goldstein</t>
            <t>Alfonso Siloniz</t>
        </list>
    </t>
</section>
</middle>
<back>
    <references title="Normative References">
        <?rfc include="reference.RFC.8008"?>
        <?rfc include="reference.RFC.8006"?>
        <?rfc include="reference.RFC.5652"?>
        <reference anchor="X.509" target="http://www.itu.int/rec/T-REC-X.509">
            <front>
                <title>X.509</title>
                <author surname="{ITU}" fullname=" {ITU}"/>
                <date year="2011" month="February"/>
                <keyword>Certificates ITU PKI X509</keyword>
            </front>
        </reference>
    </references>
    <references title="Informative References">
        <reference anchor="SVTA" target="https://www.svta.org">
            <front>
                <title>Streaming Video Technology Alliance Home Page</title>
                <author/>
                <date/>
            </front>
        </reference>
    </references>
</back>
</rfc>
