<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"[
  <!ENTITY xml-names SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml4/reference.W3C.REC-xml-names-20091208.xml">
  <!ENTITY RFC0020 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0020.xml">
  <!ENTITY RFC3688 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml">
  <!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
  <!ENTITY RFC8141 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8141.xml">
  <!ENTITY RFC2782 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2782.xml">
  <!ENTITY RFC7797 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7797.xml">
  <!ENTITY RFC3339 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml">
  <!ENTITY RFC3444 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3444.xml">
  <!ENTITY RFC3553 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3553.xml">
  <!ENTITY RFC3986 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
  <!ENTITY RFC4287 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4287.xml">
  <!ENTITY RFC4642 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4642.xml">
  <!ENTITY RFC7525 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7525.xml">
  <!ENTITY RFC7970 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7970.xml">
  <!ENTITY RFC5023 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5023.xml">
  <!ENTITY RFC5005 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5005.xml">
  <!ENTITY RFC8126 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
  <!ENTITY RFC5234 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml">
  <!ENTITY RFC5280 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
  <!ENTITY RFC5785 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5785.xml">
  <!ENTITY RFC6546 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6546.xml">
  <!ENTITY RFC7589 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7589.xml">
  
  <!ENTITY RFC3275 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3275.xml">
    <!ENTITY RFC7516 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7516.xml">
    <!ENTITY RFC7515 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
    <!ENTITY RFC7486 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7486.xml">
    <!ENTITY RFC7804 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7804.xml">
    <!ENTITY RFC7616 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7616.xml">
    <!ENTITY RFC7617 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7617.xml">
      <!ENTITY RFC6749 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
]>
<?xml-stylesheet type="text/css" href="rfc7749.css"?>
<rfc ipr="trust200902" category="std" docName="draft-ietf-mile-rolie-10">
  <?rfc compact="yes"?>
  <?rfc subcompact="no"?>
  <?rfc toc="yes"?>
  <?rfc symrefs="yes"?>

  <front>
    <title abbrev="ROLIE">Resource-Oriented Lightweight Information
      Exchange</title>
    <author initials="J.P." surname="Field" fullname="John P. Field">
      <organization abbrev="Pivotal">Pivotal Software,
        Inc.</organization>
      <address>
        <postal>
          <street>625 Avenue of the Americas</street>
          <city>New York</city>
          <region>New York</region>
          <country>USA</country>
        </postal>
        <phone>(646)792-5770</phone>
        <email>jfield@pivotal.io</email>
      </address>
    </author>
    <author initials="S.A." surname="Banghart"
      fullname="Stephen A. Banghart">
      <organization abbrev="NIST">National Institute of Standards and
        Technology</organization>
      <address>
        <postal>
          <street>100 Bureau Drive</street>
          <city>Gaithersburg</city>
          <region>Maryland</region>
          <country>USA</country>
        </postal>
        <phone>(301)975-4288</phone>
        <email>stephen.banghart@nist.gov</email>
      </address>
    </author>
    <author fullname="David Waltermire" initials="D.W."
      surname="Waltermire">
      <organization abbrev="NIST">National Institute of Standards and
        Technology</organization>

      <address>
        <postal>
          <street>100 Bureau Drive</street>
          <city>Gaithersburg</city>
          <region>Maryland</region>
          <code>20877</code>
          <country>USA</country>
        </postal>
        <phone/>
        <email>david.waltermire@nist.gov</email>
      </address>
    </author>
    <date year="2017"/>
    <area>Security</area>
    <workgroup>MILE Working Group</workgroup>
    <abstract>
      <t>This document defines a resource-oriented approach for security
        automation information publication, discovery, and sharing. Using
        this approach, producers may publish, share, and exchange
        representations of software descriptors, security incidents,
        attack indicators, software vulnerabilities, configuration
        checklists, and other security automation information as
        web-addressable resources. Furthermore, consumers and other
        stakeholders may access and search this security information as
        needed, establishing a rapid and on-demand information exchange
        network for restricted internal use or public access
        repositories. This specification extends the Atom Publishing
        Protocol and Atom Syndication Format to transport and share
        security automation resource representations.</t>
    </abstract>
    <note title="Contributing to this document">
      <!--RFC EDITOR - Please remove this note before publishing -->
      <t>The source for this draft is being maintained on GitHub.
        Suggested changes should be submitted as pull requests at <eref
        target="https://github.com/CISecurity/ROLIE"/>. Instructions are
        on that page as well. Editorial changes can be managed in GitHub,
        but any substantial issues need to be discussed on the MILE
        mailing list.</t>
    </note>
  </front>
  <middle>
    <section title="Introduction" anchor="starting-intro">
      <t>This document defines a resource-oriented approach to security
        automation information sharing that follows the Representational
        State Transfer (REST) architectural style <xref target="REST"/>.
        In this approach, computer security resources are maintained in
        web-accessible repositories structured as <xref target="RFC4287"
        >Atom Syndication Format</xref> Feeds. Within a given Feed, which
        may be requested by the consumer, representations of specific
        types of security automation information are organized,
        categorized, and described. Furthermore, all collections
        available to a given user are discoverable, allowing the consumer
        to search all available content they are authorized to view, and
        to locate and request the desired information resources. Through
        use of granular authentication and access controls, only
        authorized consumers may be permitted the ability to read or
        write to a given Feed. </t>
      <t>The goal of this approach is to increase the communication and
        sharing of security information between providers and consumers
        that can be used to automate security processes (e.g., incident
        reports, vulnerability assessments, configuration checklists, and
        other security automation information). Such sharing allows human
        operators and computer systems to leverage this standardized
        communication system to gather information that supports the
        automation of security processes.</t>

      <t>To support new types of security automation information being
        used as time goes on, this specification defines a number of
        extension points that can be used either privately or globally.
        These global extensions are IANA registered by ROLIE extension
        specifications, and provide enhanced interoperability for new use
        cases and domains. Sections <xref target="atompub"
        format="counter"/> and <xref target="atom-synd" format="counter"
        /> of this document define the core requirements of all
        implementations of this specification, and is resource
        representation agnostic. An overview of the extension system is
        provided in <xref target="content-model"/>. Implementers seeking
        to provide support for specific security automation information
        types should refer to the specification for that domain described
        by the IANA registry found in section <xref
        target="iana-information-type" format="counter"/>.</t>
    </section>
    <section title="Terminology" anchor="ext-terminology">
      <t>The key words "MUST," "MUST NOT," "REQUIRED," "SHALL," "SHALL
        NOT," "SHOULD," "SHOULD NOT," "RECOMMENDED," "MAY," and
        "OPTIONAL" in this document are to be interpreted as described in
        <xref target="RFC2119"/>.</t>
      <t>The previous key words are used in this document to define the
        conformance requirements for implementations of this
        specification. This document does not give any recommendations
        for the use of ROLIE, it only provides conformance requirements
        for implementations of this specification.</t>
      <t>Definitions for some of the common computer security-related
        terminology used in this document can be found in Section 2 of
        <xref target="RFC7970"/>.</t>
      <t>The following terms are unique to this specification:<list
        style="hanging">
        <t hangText="Information Type">A class of security automation
          information having one or more associated data models. Often
          such security automation information is used in the automation
          of a security process. See section <xref
          target="content-model-category-info-type" format="counter"/>
          for more information.</t>
        </list></t>
    </section>
    <section title="XML-related Conventions">
      <section title="XML Namespaces" anchor="xml-namespaces">
        <t>This specification uses XML Namespaces <xref
          target="W3C.REC-xml-names-20091208"/> to uniquely identify XML
          element names. It uses the following namespace prefix mappings
          for the indicated namespace URI:<list>
          <t>"app" is used for the "http://www.w3.org/2007/app" namespace
            defined in <xref target="RFC5023"/>.</t>
          <t>"atom" is used for the "http://www.w3.org/2005/Atom"
            namespace defined in <xref target="RFC4287"/>.</t>
          <t>"rolie" is used for the "urn:ietf:params:xml:ns:rolie:1.0"
            namespace defined in section <xref target="iana-xml"
            format="counter"/> of this specification.</t>
          </list></t>
      </section>
      <section title="RELAX NG Compact Schema" anchor="rnc-schema-intro">
        <t>Some sections of this specification are illustrated with
          fragments of a non-normative RELAX NG Compact schema <xref
          target="relax-NG"/>. The text of this specification provides
          the definition of conformance. Schema for the
          "http://www.w3.org/2007/app" and "http://www.w3.org/2005/Atom"
          namespaces appear in <xref target="RFC5023">RFC5023 appendix
          B</xref> and <xref target="RFC4287">RFC4287 appendix B</xref>
          respectively.</t>
        <t>A complete informative RELAX NG Compact Schema for the new
          elements introduced by ROLIE is provided in <xref
          target="appendix-schema"/>.</t>
      </section>
    </section>
    <section title="Background and Motivation" anchor="back-motive">
      <t>In order to automate security process, tools need access to
        sufficient sources of structured, security information that can
        be used to drive security processes. Thus, security information
        sharing is one of the core components of automating security
        processes. Vulnerabilities, configurations, software
        identification, security incidents, and patch data are just a few
        of the classes of information that are shared today to enable
        effective security on a wide scale. However, as the scale of
        defense broadens as networks become larger and more complex, and
        the volume of information to process makes humans-in-the-loop
        difficult to scale, the need for automation and
        machine-to-machine communication becomes increasingly
        critical.</t>
      <t>ROLIE seeks to address this need by providing four major
        information sharing benefits:<list style="hanging">
        <t
          hangText="Extensible information type categories and format agnosticism:"
          > ROLIE is not bound to any given data format or category of
          information. Instead, information categories are extensible,
          and entries declare the format of the referenced data. In cases
          where several formats or serializations are available, ROLIE
          can use link relations to communicate how a consumer can access
          these formats. For example, clients may request that a given
          resource representation be returned as XML, JSON, or in some
          other format or serialization. This approach allows the
          provider to support multiple, compatible formats allowing the
          consumer to select the most suitable version.</t>
        <t hangText="Open and distributed information sharing:"> Using
          the Atom Publishing Protocol, ROLIE feeds can easily aggregate
          feeds and accept information POSTed to them from other sources.
          Webs of communicating ROLIE servers form ad-hoc sharing
          communities, increasing data availability and the ability to
          correlate linked data across sources for participating
          consumers. ROLIE servers needn't be distributed however, as
          large ROLIE repositories can function as a central or federated
          collections.</t>
        <t hangText="Stateless communication model:"> ROLIE, as a RESTful
          system, is stateless. That is, the server doesn't keep track of
          client sessions, but rather uses link relations for state
          transitions. In practice, this means that any consumer can find
          and share information at any organizational level and at any
          time without needing to execute a long series of requests.</t>
        <t hangText="Information discovery and navigation:">ROLIE
          provides a number of mechanisms to allow clients to
          programmatically discover and navigate collections of
          information in order to dynamically discover new or revised
          content. Extensible information types and other categories
          provide one way of determining content that is desirable. Link
          elements, each with a target URI and an established
          relationship type, provide a means for ROLIE providers to link
          other information that is relevant to the current entry or
          feed.</t>
        </list></t>
      <t>These benefits result in an information sharing protocol that is
        lightweight, interactive, open, and most importantly, machine
        readable.</t>
      <t>The requirements in this specification are broken into two major
        sections, extensions to the Atom Publishing Protocol (AtomPub)
        <xref target="RFC5023"/>, and extensions to the Atom Syndication
        Format <xref target="RFC4287"/>. All normative requirements in
        AtomPub and Atom Syndication are inherited from their respective
        specifications, and apply here unless the requirement is
        explicitly overridden in this document. In this way, this
        document may upgrade the requirement (e.g., make a SHOULD a
        MUST), but will never downgrade a given requirement (e.g., make a
        MUST a SHOULD).</t>
    </section>
    <section title="ROLIE Requirements for the Atom Publishing Protocol"
      anchor="atompub">
      <t>This section describes a number of restrictions of and
        extensions to the <xref target="RFC5023">Atom Publishing Protocol
        (AtomPub)</xref> that define the use of that protocol in the
        context of a ROLIE-based solution. The normative requirements in
        this section are generally oriented towards client and server
        implementations. An understanding of the Atom Publishing Protocol
        specification <xref target="RFC5023"/> is helpful to understand
        the requirements in this section.</t>
      <section title="AtomPub Service Documents" anchor="atompub-service">
        <t>As described in <xref target="RFC5023">RFC5023 section
          8</xref>, a Service Document is an XML-based document format
          that allows a client to dynamically discover the Collections
          provided by a publisher. A Service Document consists of one or
          more app:workspace elements that may each contain a number of
          app:collection elements.</t>
        <t>The general structure of a service document is as follows
          (from <xref target="RFC5023">RFC5023 section 4.2</xref>):</t>
        <figure>
          <artwork><![CDATA[
     Service
        o- Workspace
        |    |
        |    o- Collection
        |    |     |
        |    |     o- IRI, categories, media types
        |    |
        |    o- ...
        |
        o- Workspace
        |     |
        |     o- Collection
        |     |     |
        |     |     o- IRI, categories, media types
        |     |
        |     o- ...
        |
        o- ...
            ]]></artwork>
        </figure>
        <section title="Use of the &quot;app:workspace&quot; Element"
          anchor="atompub-service-workspace">
          <t>In AtomPub, a Workspace, represented by the "app:workspace"
            element, describes a group of one or more Collections.
            Building on the AtomPub concept of a Workspace, in ROLIE a
            Workspace represents an aggregation of Collections pertaining
            to security automation information resources. This
            specification does not restrict the number of Workspaces that
            may be in a Service Document or the specific Collections to
            be provided within a given Workspace.</t>
          <t>A ROLIE implementation can host Collections containing both
            public and private information entries. It is RECOMMENDED
            that implementations segregate public and private Collections
            into different app:workspace elements. By doing this,
            Workspaces that contain private information can be ignored by
            clients or can be omitted from the Service Document provided
            to a client that lacks the appropriate privilege to access
            the set of Collections associated with the Workspace.</t>
        </section>
        <section title="Use of the &quot;app:collection&quot; Element"
          anchor="atompub-service-collection">
          <t>In AtomPub, a Collection in a Service Document, represented
            by the "app:collection" element, provides metadata that can
            be used to point to a specific Atom Feed that contains
            information Entries that may be of interest to a client. The
            association between a Collection and a Feed is provided by
            the "href" attribute of the app:collection element. Building
            on the AtomPub concept of a Collection, in ROLIE a Collection
            represents a pointer to a group of security automation
            information resources pertaining to a given type of security
            automation information. Collections are represented as Atom
            Feeds as per RFC 5023. Atom Feed specific requirements are
            defined in section <xref target="atom-synd-feed"
            format="counter"/>.</t>
          <t>ROLIE defines specialized data requirements for Collections,
            Feeds, and Entries containing security automation related
            data. The difference between a ROLIE and a non-ROLIE
            Collection defined in a Service Document can be determined as
            follows:<list style="hanging">
            <t hangText="ROLIE Collection:">For an app:collection to be
              considered a ROLIE Collection, the app:collection MUST
              contain an app:categories element that contains only one
              atom:category element with the "scheme" attribute value of
              "urn:ietf:params:rolie:category:information-type". This
              category MUST have an appropriate "term" attribute value as
              defined in section <xref
              target="content-model-category-general" format="counter"/>.
              This ensures that a given Collection corresponds to a
              specific type of security automation information.</t>
            <t hangText="Non-ROLIE Collection:">For an app:collection to
              be considered a non-ROLIE Collection, the app:collection
              MUST NOT contain an atom:category element with a "scheme"
              attribute value of
              "urn:ietf:params:rolie:category:information-type".</t>
            </list></t>
          <t>By distinguishing between ROLIE and non-ROLIE Collections in
            this way, implementations supporting ROLIE can host
            Collections pertaining to security automation information
            alongside Collections of other non-ROLIE information within
            the same AtomPub instance.</t>
          <t>The following are additional requirements on the use of the
            app:collection element for a ROLIE Collection:<list
            style="symbols">
            <t>The child atom:category elements contained in the
              app:categories element MUST be the same set of
              atom:category elements used in the Atom Feed resource
              referenced by the app:collection "href" attribute value.
              This ensures that the category metadata associated with the
              Collection and the associated Feed is discoverable in both
              of these resources.</t>
            <t>The app:categories element in an app:collection MAY
              include additional atom:category elements using a scheme
              other than
              "urn:ietf:params:rolie:category:information-type". This
              allows other category metadata to be included.</t>
            </list></t>
        </section>
        <section title="Service Discovery" anchor="atompub-discover">
          <t>This specification requires that an implementation MUST
            publish an Atom Service Document that describes the set of
            security information Collections provided by the service. The
            Service Document MUST be retrievable using the standardized
            URI template
            "https://{host:port}/.well-known/rolie/servicedocument",
            where {host:port} is the authority portion of the URI.
            Dereferencing this URI MAY result in a redirect based on an
            appropriate HTTP 3xx status code to direct the client to the
            actual Service Document. This allows clients to have a
            well-known location to find a ROLIE service document, while
            giving implementations flexibility over how the service is
            deployed.</t>
          <t>This document registers the "rolie/servicedocument"
            well-known URI as per <xref target="RFC5785"/> in <xref
            target="iana-well-known"/>.</t>
          <t>A mechanism to determine which host and port to use is not
            specified in this document. Use of a mechanism such as DNS
            SRV Records <xref target="RFC2782"/> can provide a secure and
            reliable discovery mechanism for determining a specific host
            and port to use for retrieving a Service Document for a given
            DNS domain.</t>
        </section>
      </section>
      <section title="AtomPub Category Documents"
        anchor="atompub-discover-category">
        <t>As described in <xref target="RFC5023">RFC5023 section
          7</xref>, a Category Document is an XML-based document format
          that allows a client to dynamically discover the Categories
          used within AtomPub Service Documents, and Atom Syndication
          Feed and Entry documents provided by a publisher. A Category
          Document consists of one app:categories element that contains a
          number of inline atom:category elements, or a URI referencing a
          Category Document.</t>
        <t>A ROLIE implementation MUST publish a Category Document that
          describes the set of atom:category elements and associated
          terms currently used by the service.</t>
        <t>The Category Document MUST be retrievable using the
          standardized URI template
          "https://{host:port}/.well-known/rolie/categorydocument", where
          {host:port} is the authority portion of the URI. Dereferencing
          this URI MAY result in a redirect based on an appropriate HTTP
          3xx status code to direct the client to the actual Category
          Document. This allows clients to have a well-known location to
          find a ROLIE category document, while giving implementations
          flexibility over how the service is deployed.</t>
        <t>This document registers the "rolie/categorydocument"
          well-known URI as per <xref target="RFC5785"/> in <xref
          target="iana-well-known"/>.</t>
      </section>
      <section title="Transport Layer Security" anchor="atompub-tls">
        <t>ROLIE is intended to be handled with TLS. The following
          requirements have been in part derived from <xref
          target="RFC7589"/>.</t>
        <t>TLS version 1.2 MUST be supported. TLS 1.2 SHOULD be
          implemented according to all recommendations and best practices
          present in <xref target="RFC7525"/>.</t>
        <t>It is RECOMMENDED that the most recent published version of
          TLS is supported. If this version is TLS 1.3 <xref
          target="I-D.ietf-tls-tls13"/>, it is recommended that 0-RTT
          (Zero Round Trip Time Resumption) is not used, as there is a
          replay attack that is possible with that option.</t>
        <t>The server MUST support certificate-based client
          authentication. An implementation MUST support the set of TLS
          cipher suites that are REQUIRED by the latest published version
          of the TLS specification. An implementation MUST also support
          the TLS cipher suites that provide support for mutual
          authentication of clients and servers.</t>
        <t>During the TLS negotiation, the client MUST carefully examine
          the certificate presented by the server to determine if it
          meets the client’s expectations. Particularly, the client MUST
          check its understanding of the server hostname against the
          server’s identity as presented in the server Certificate
          message, in order to prevent man-in-the-middle attacks.
          Matching is performed according to the rules laid out in the
          Security Considerations section of <xref target="RFC4642"/>. If
          the match fails, the client MUST either ask for explicit user
          confirmation or terminate the connection and indicate the
          server’s identity is suspect. If the client has external
          information as to the expected identity of the server, the
          hostname check MAY be omitted.</t>
        <t>Clients MUST verify the binding between the identity of the
          servers to which they connect and the public keys presented by
          those servers. Client implementations SHOULD support a
          certificate validation approach based on section 6 of <xref
          target="RFC5280"/>.</t>
        <t>The server MUST be capable of verifying the identity of the
          client with certificate-based authentication according to local
          policy to ensure that the incoming client request is legitimate
          before any configuration or state data is sent to or received
          from the client.</t>
      </section>
      <section title="User Authentication and Authorization"
        anchor="atompub-auth-authz">
        <t>Implementations MUST support user authentication. However, a
          given implementation MAY allow user authentication to be
          disabled on a feed by feed basis.</t>
        <t>Servers participating in an information sharing consortium and
          supporting interactive user logins by members of the consortium
          SHOULD support client authentication via a federated identity
          scheme.</t>
        <t>This document does not mandate the use of any specific user
          authorization mechanisms. However, service implementers SHOULD
          provide appropriate authorization checking for all resource
          accesses, including individual Atom Entries, Atom Feeds, and
          Atom Service Documents.</t>
      </section>
      <section title="/ (forward slash) Resource URL"
        anchor="atompub-rid">
        <!-- Should this be moved to the CSIRT document? -->
        <t>The "/" resource MAY be supported for compatibility with
          existing deployments that are using <xref target="RFC6546">
          Transport of Real-time Inter-network Defense (RID) Messages
          over HTTP/TLS</xref>.</t>
        <t>The following additional requirements apply for
          implementations supporting handling of the "/" resource::<list
          style="symbols">
          <t>Consistent with RFC6546 errata, a client requesting a GET on
            the "/" resource SHOULD receive an HTTP status code 405
            Method Not Allowed.</t>
          <t>An implementation MAY provide full support for <xref
            target="RFC6546"/> such that a POST to the "/" resource
            containing a recognized RID message is handled correctly as a
            RID request. Alternatively, a client requesting a POST to "/"
            MAY receive an HTTP status code 307 Temporary Redirect. In
            this case, the location header in the HTTP response will
            provide the URL of the appropriate RID endpoint, and the
            client may repeat the POST method at the indicated
            location.</t>
          </list></t>
        <t>If the "/" resource is unsupported, then a request for this
          resource MUST provide a 404 HTTP status code.</t>
      </section>
      <section title="HTTP methods" anchor="atompub-http-methods">
        <t>Servers MAY accept request methods beyond those specified in
          this document.</t>
        <t>Clients MUST be capable of recognizing and processing any
          standard HTTP status code, as defined in <xref target="RFC5023"
          /> Section 5.</t>
      </section>
    </section>
    <section title="ROLIE Requirements for the Atom Syndication Format"
      anchor="atom-synd">
      <t>This section describes a number of restrictions of and
        extensions to the <xref target="RFC4287">Atom Syndication
        Format</xref> that define the use of that format in the context
        of a ROLIE-based solution. The normative requirements in this
        section are generally oriented towards any content to be
        published to a ROLIE server. An understanding of the Atom
        Syndication Format specification <xref target="RFC4287"/> is
        helpful to understand the requirements in this section.</t>
      <section title="Use of the &quot;atom:feed&quot; element"
        anchor="atom-synd-feed">
        <t>As described in <xref target="RFC4287">RFC4287 section
          4.1.1</xref>, an Atom Feed is an XML-based document format that
          describes a list of related information items. The list of Atom
          Feeds provided by a ROLIE service are listed in the service's
          Service Document through one or more app:collection elements.
          Each Feed document, represented using the atom:feed element,
          contains a listing of zero or more Entries.</t>
        <t>When applied to the problem domain of security automation
          information sharing, an Atom Feed may be used to represent any
          meaningful collection of security automation information
          resources. Each Entry in an atom:feed represents an individual
          resource (e.g., a specific checklist, a software vulnerability
          record). Additional Feeds can be used to represent other
          collections of security automation resources.</t>
        <t>As discussed in section <xref
          target="atompub-service-collection" format="counter"/>, ROLIE
          defines specialized data requirements for Feeds containing
          security automation related data. The difference between a
          ROLIE and a non-ROLIE Feed can be determined as follows:<list
          style="hanging">
          <t hangText="ROLIE Feed:">For an atom:feed to be considered a
            ROLIE Feed, the atom:feed MUST contain only one child
            atom:category element with the "scheme" attribute value of
            "urn:ietf:params:rolie:category:information-type". This
            category MUST have an appropriate "term" attribute value as
            defined in section <xref
            target="content-model-category-general" format="counter"/>.
            This ensures that a given Feed corresponds to a specific type
            of security automation information.</t>
          <t hangText="Non-ROLIE Feed:">For an atom:feed to be considered
            a non-ROLIE Feed, the atom:feed MUST NOT contain an
            atom:category element with a "scheme" attribute value of
            "urn:ietf:params:rolie:category:information-type".</t>
          </list></t>
        <t>By distinguishing between ROLIE and non-ROLIE Feeds in this
          way, implementations supporting ROLIE can host Feeds pertaining
          to security automation information alongside Feeds of other
          non-ROLIE information within the same AtomPub instance. This is
          parallel to the handling of collections ealier in this
          specification in section <xref
          target="atompub-service-collection" format="counter"/>.</t>
        <t>The following Atom Feed definition represents a stricter
          definition of the atom:feed element defined in RFC 4287 when
          used as a ROLIE Feed. Any element not specified here inherits
          its definition and requirements from <xref target="RFC4287"
          />.</t>
        <figure height="" suppress-title="false" width="" alt="" title=""
          align="left">
          <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
   atomFeed =
      element atom:feed {
         atomCommonAttributes,
         (atomAuthor*
          & atomCategory+
          & atomContributor*
          & atomGenerator?
          & atomIcon?
          & atomId
          & atomLink+
          & atomLogo?
          & atomRights?
          & atomSubtitle?
          & atomTitle
          & atomUpdated
          & extensionElement*),
         atomEntry*
      }]]></artwork>
        </figure>

        <t>The following subsections contain requirements for a ROLIE
          Feed.</t>

        <section title="Use of the &quot;atom:category&quot; Element"
          anchor="atom-synd-feed-category">
          <t>An atom:feed can contain zero or more atom:category
            elements. In Atom the naming scheme and the semantic meaning
            of the terms used to identify an Atom category are
            application-defined.</t>
          <t>The following are additional requirements on the use of the
            atom:category element when used in a ROLIE Feed:<list
            style="symbols">
            <t>All member Entries in the Feed MUST represent security
              automation information records of the provided information
              type category.</t>
            <t>An atom:feed MAY include additional atom:category elements
              using a scheme other than
              "urn:ietf:params:rolie:category:information-type". This
              allows other category metadata to be included.</t>
            </list></t>
        </section>
        <section title="Use of the &quot;atom:link&quot; Element"
          anchor="atom-synd-feed-link">
          <t>Link relations defined by the atom:link element are used to
            represent state transitions using a stateless approach. In
            Atom a type of link relationship can be defined using the
            "rel" attribute.</t>
          <t>A ROLIE atom:feed MUST contain one or more atom:link
            elements with rel="service" and href attribute whose value is
            a IRI that points to an Atom Service Document associated with
            the atom:feed. If a client accesses a Feed without first
            accessing the service's service document, a link with the
            "service" relationship provides a means to discover
            additional security automation information. The "service"
            link relationship is defined in the <eref
            target="https://www.iana.org/assignments/link-relations/link-relations.xhtml"
            >IANA Link Relations Registry</eref>.</t>
          <t>An atom:feed can contain an arbitrary number of Entries. In
            some cases, a complete Feed may consist of a large number of
            Entries. Additionally, as new and updated Entries are ordered
            at the beginning of a Feed, a client may only be interested
            in retrieving the first N entries in a Feed to process only
            the Entries that have changed since the last retrieval of the
            Feed. As a practical matter, a large set of Entries will
            likely need to be divided into more manageable portions, or
            pages. Based on <xref target="RFC5005">RFC5005 section
            3</xref>, link elements SHOULD be included in all Feeds to
            support paging using the following link relation types:<list
            style="symbols">
            <t>"first" - Indicates that the href attribute value of the
              link identifies a resource IRI for the furthest preceding
              page of the Feed.</t>
            <t>"last" - Indicates that the href attribute value of the
              link identifies a resource IRI for the furthest following
              page of the Feed.</t>
            <t>"previous" - Indicates that the href attribute value of
              the link identifies a resource IRI for the immediately
              preceding page of the Feed.</t>
            <t>"next" - Indicates that the href attribute value of the
              link identifies a resource IRI for the immediately
              following page of the Feed.</t>
            </list> </t>
          <t>For example:</t>
          <figure height="" suppress-title="false" width="" alt=""
            title="Example Paged Feed" align="left">
            <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  <?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
      <id>b7f65304-b63b-4246-88e2-c104049c5fd7</id>
      <title>Paged Feed</title>
      <link rel="self" href="http://example.org/feedA?page=5"/>
      <link rel="first" href="http://example.org/feedA?page=1"/>
      <link rel="prev" href="http://example.org/feedA?page=4"/>
      <link rel="next" href="http://example.org/feedA?page=6"/>
      <link rel="last" href="http://example.org/feedA?page=10"/>
      <updated>2012-05-04T18:13:51.0Z</updated> 
      
      <!-- remainder of feed elements -->
  </feed>   ]]></artwork>
          </figure>
          <t>A reference to a historical Feed may need to be stable,
            and/or a Feed may need to be divided into a series of defined
            epochs. Implementations SHOULD support the mechanisms
            described in <xref target="RFC5005">RFC5005 section 4</xref>
            to provide link-based state transitions for maintaining
            archiving of Feeds.</t>
          <t>An atom:feed MAY include additional link relationships not
            specified in this document. If a client encounters an unknown
            link relationship type, the client MUST ignore the
            unrecognized link and continue processing as if the
            unrecognized link element did not appear. The definition of
            new Link relations that provide additional state transition
            extensions is discussed in section <xref
            target="content-model-link" format="counter"/>.</t>
        </section>
        <section title="Use of the &quot;atom:updated&quot; Element"
          anchor="atom-synd-feed-updated">
          <t>The atom:updated element identifies the date and time that
            an Entry was last updated.</t>
          <t>The atom:updated element MUST be populated with the current
            time at the instant the Feed representation was last updated
            by adding, updating, or deleting an Entry; or changing any
            metadata for the Feed.</t>
        </section>
      </section>
      <section title="Use of the  &quot;atom:entry&quot; Element"
        anchor="atom-synd-entry">
        <t>Each Entry in an Atom Feed, represented by the atom:entry
          element, describes a single referenced information record,
          along with descriptive information about its format, media
          type, and other publication metadata. The following atom:entry
          schema definition represents a stricter representation of the
          atom:entry element defined in <xref target="RFC4287"/> for use
          in a ROLIE-based Atom Feed as defined in section <xref
          target="atom-synd-feed-category" format="counter"/>.</t>
        <figure height="" suppress-title="false" width="" alt="" title=""
          align="left">
          <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  atomEntry =
    element atom:entry {
      atomCommonAttributes,
      (atomAuthor*
      & atomCategory*
      & atomContent
      & atomContributor*
      & atomId
      & atomLink*
      & atomPublished?
      & atomRights?
      & atomSource?
      & atomSummary?
      & atomTitle
      & atomUpdated
      & rolieFormat
      & rolieProperty*
      & extensionElement*)
  }   ]]></artwork>
        </figure>
        <t>The following subsections contain requirements for Entries in
          a ROLIE Feed.</t>
        <section title="Use of the &quot;atom:content&quot; Element"
          anchor="atom-synd-entry-content">
          <t>An atom:content element associates its containing Entry with
            a content resource identified by the src attribute. </t>
          <t>There MUST be exactly one atom:content element in the Entry.
            The content element MUST adhere to this definition, which is
            a stricter representation of the atom:content element defined
            in <xref target="RFC4287"/>:</t>
          <figure height="" suppress-title="false" width="" alt=""
            title="" align="left">
            <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  atomContent =
    element atom:content {
      atomCommonAttributes,
      attribute type { atomMediaType },
      attribute src { atomUri },
      empty
  }   ]]></artwork>
          </figure>
          <t>The type attribute MUST identify the serialization type of
            the content, for example, application/xml or
            application/json. A prefixed media type MAY be used to
            reflect a specific model used with a given serialization
            approach (e.g., application/rdf+xml). The src attribute MUST
            be an IRI that can be dereferenced to retrieve the related
            content data.</t>
        </section>
        <section title="Use of the &quot;atom:link&quot; Element"
          anchor="atom-synd-entry-link">
          <t>Link relations can be included in an atom:entry to represent
            state transitions for the Entry.</t>
          <t>If there is a need to provide the same information in
            different data models and/or serialization formats, separate
            Entry instances can be included in the same or a different
            Feed. Such an alternate content representation can be
            indicated using an atom:link having a rel attribute with the
            value "alternate".</t>
          <t>An atom:feed MAY include additional link relationships not
            specified in this document. If a client encounters an unknown
            link relationship type, the client MUST ignore the
            unrecognized link and continue processing as if the
            unrecognized link element did not appear. The definition of
            new Link relations that provide additional state transition
            extensions is discussed in section <xref
            target="content-model-link" format="counter"/>.</t>
        </section>
        <section title="Use of the &quot;rolie:format&quot; Element"
          anchor="atom-synd-entry-rolie-format">
          <t>As mentioned earlier, a key goal of this specification is to
            allow a consumer to review a set of published security
            automation information resources, and then identify and
            retrieve any resources of interest. The format of the data is
            a key criteria to consider when deciding what information to
            retrieve. For a given type of security automation
            information, it is expected that a number of different
            formats may be used to represent this information. To support
            this use case, both the serialization format and the specific
            data model expressed in that format must be known by the
            consumer.</t>
          <t>The rolie:format element is used to describe the data model
            used to express the information referenced in the
            atom:content element of an atom:entry. It also allows a
            schema to be identified that can be used when parsing the
            content to verify or better understand the structure of the
            content.</t>
          <t>There MUST be exactly one rolie:format element in an
            atom:entry. The element MUST adhere to this definition:</t>
          <figure height="" suppress-title="false" width="" alt=""
            title="" align="left">
            <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  rolieFormat =
    element rolie:format {
      appCommonAttributes,
      attribute ns { atomURI },
      attribute version { text } ?,
      attribute schema-location { atomURI } ?,
      attribute schema-type { atomMediaType } ?,
      empty
  }   ]]></artwork>
          </figure>
          <t>The rolie:format element MUST provide a "ns" attribute that
            identifies the data model of the resource referenced by the
            atom:content element. For example, the namespace used may be
            an XML namespace URI, or an identifier that represents a
            serialized JSON model. The URI used for the "ns" attribute
            value MUST be an absolute or opaque URI. The resource
            identified by the URI need not be resolvable.</t>
          <t>The rolie:format element MAY provide a "version" attribute
            that identifies the version of the format used for the
            related atom:content. </t>
          <t>The rolie:format element MAY provide a "schema-location"
            attribute that is a URI that identifies a schema resource
            that can be used to validate the related atom:content.</t>
          <t>The rolie:format element MAY provide a "schema-type"
            attribute, which is a mime type identifying the format of the
            schema resource identified by the "schema-location"
            attribute.</t>
          <t>The following nominal example shows how these attributes
            describe the format of the content:</t>
          <figure height="" suppress-title="false" width="" alt=""
            title="" align="left">
            <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
<rolie:format ns="urn:ietf:params:xml:ns:iodef-2.0"
  version="2.0"
  schema-location=
    "https://www.iana.org/assignments/xml-registry/schema/iodef-2.0.xsd"
  schema-type-"text/xml"/>]]></artwork>
          </figure>
          <t>The previous element provides an indication that the content
            of the given entry is using the IODEF v2 format.</t>
        </section>
        <section title="Use of the rolie:property Element"
          anchor="atom-synd-entry-rolie-property">
          <t>An atom:category element provides a way to associate a
            name/value pair of categorical information using the scheme
            and term attributes to represent the name, and the label
            attribute to represent the value. When used in this way an
            atom:category allows a specific label to be selected from a
            finite set of possible label values that can be used to
            further classify a given atom:entry or atom:feed. Within
            ROLIE, there may be a need to associate additional metadata
            with an atom:entry. In such a case, use of an atom:category
            is not practical to represent name/value data for which the
            allowed values are unbounded. Instead, ROLIE has introduced a
            new rolie:property element that can represent non-categorical
            metadata as name/value pairs. Examples include
            content-specific identifiers, naming data, and other
            properties that allow for unbounded values.</t>
          <t>There MAY be zero or more rolie:property elements in an
            atom:entry.</t>
          <t>The element MUST adhere to this definition:</t>
          <figure height="" suppress-title="false" width="" alt=""
            title="" align="left">
            <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  rolieProperty =
    element rolie:property {
      app:appCommonAttributes,
      attribute name { atom:atomURI },
      attribute value { text }
      empty
  }   ]]></artwork>
          </figure>
          <t>The name attribute provides a URI that identifies the
            namespace and name of the property as a URI.</t>
          <t>The value attribute is text that provides a value for the
            property identified by the name attribute.</t>
          <t>For example, the nominal element &lt;rolie:property
            name="urn:ietf:params:rolie:property:csirt-iodef-id"
            value="12345"/> would expose an IODEF ID value contained in a
            given entry's content. The name used in the example also
            demonstrates the use of a registered ROLIE property
            extension, which is described in <xref
            target="content-model-property"/>.</t>
          <t>Implementations MAY use locally defined and namespaced
            elements in an Entry in order to provide additional
            information. Clients that do not recognize a property with an
            unregistered name attribute MAY ignore the
            rolie:property.</t>
        </section>
        <section title="Requirements for a Standalone Entry"
          anchor="atom-synd-entry-standalone">
          <t>If an Entry is ever shared as a standalone resource,
            separate from its containing Feed, then the following
            additional requirements apply:<list style="symbols">
            <t>The Entry MUST have an atom:link element with
              rel="collection" and href="[IRI of the containing
              Collection]". This allows the Feed or Feeds for which the
              Entry is a member to be discovered, along with the related
              information the Feed may contain. In the case of the Entry
              have multiple containing Feeds, the Entry MUST have one
              atom:link for each related Feed.</t>
            <t>The Entry MUST declare the information type of the content
              resource referenced by the Entry (see <xref
              target="content-model-category-info-type"/>).</t>
            </list></t>
        </section>
      </section>
    </section>
    <section title="Available Extension Points Provided by ROLIE"
      anchor="content-model">
      <t>This specification does not require particular information types
        or data formats; rather, ROLIE is intended to be extended by
        additional specifications that define the use of new categories
        and link relations. The primary point of extension is through the
        definition of new information type category terms. Additional
        specifications can register new information type category terms
        with IANA that serve as the main characterizing feature of a
        ROLIE Collection/Feed or Resource/Entry. These additional
        specifications defining new information type terms, can describe
        additional requirements for including specific categories, link
        relations, as well as, use of specific data formats supporting a
        given information type term.</t>
      <section title="The Category Extension Point"
        anchor="content-model-category">
        <t>The atom:category element, defined in <xref target="RFC4287"
          >RFC 4287 section 4.2.2</xref>, provides a mechanism to provide
          additional categorization information for a content resource in
          ROLIE. The ability to define new categories is one of the core
          extension points provided by Atom. A Category Document, defined
          in <xref target="RFC5023">RFC 5023 section 7</xref>, provides a
          mechanism for an Atom implementation to make discoverable the
          atom:category terms and associated allowed values.</t>
        <t>ROLIE further defines the use of the existing Atom extension
          category mechanism by allowing ROLIE specific category
          extensions to be registered with IANA, and additionally has
          assigned the "urn:ietf:params:rolie:category:information-type"
          category scheme that has special meaning for implementations of
          ROLIE. This allows category scheme namespaces to be managed in
          a more consistent way, allowing for greater interoperability
          between content producers and consumers.</t>
        <t>The namespace "urn:ietf:params:rolie:category:local" has been
          reserved in the IANA ROLIE Parameters table for private use as
          defined in <xref target="RFC8126"/>. Any category whose
          "scheme" attribute uses this as a prefix MUST be considered
          private use. Implementations encountering such a category MUST
          parse the content without error, but MAY otherwise ignore the
          element.</t>
        <t>Use of the "atom:category" element is discussed in the
          following subsections.</t>
        <section
          title="General Use of the &quot;atom:category&quot; Element"
          anchor="content-model-category-general">
          <t>The atom:category element can be used for characterizing a
            ROLIE Resource. As discussed earlier in this document, an
            atom:category element has a "term" attribute that indicates
            the assigned category value, and a "scheme" attribute that
            provides an identifier for the category type. The "scheme"
            provides a means to describe how a set of category terms
            should be used and provides a namespace that can be used to
            differentiate terms provided by multiple organizations with
            different semantic meaning.</t>
          <t>To further differentiate category types used in ROLIE, an
            IANA sub-registry has been established for ROLIE protocol
            parameters to support the registration of new category
            "scheme" attribute values by ROLIE extension specifications.
            Use of this extension point is discussed in section <xref
            target="iana-parameters" format="counter"/> using the name
            field with a type parameter of "category" to indicate a
            category extension.</t>
        </section>
        <section
          title="Identification of Security Automation Information Types"
          anchor="content-model-category-info-type">
          <t>A ROLIE specific extension point is provided through the
            atom:category "scheme" value
            "urn:ietf:params:rolie:category:information-type". This value
            is a Uniform Resource Name (URN) <xref target="RFC8141"/>
            that is registered with IANA as described in section <xref
            target="iana-parameters" format="counter"/>. When used as the
            "scheme" attribute in this way, the "term" attribute is
            expected to be a registered value as defined in section <xref
            target="iana-information-type"/>. Through this mechanism a
            given security automation information type can be used
            to:<list style="numbers">
            <t>identify that an "app:collection" element in a Service
              Document points to an Atom Feed that contains Entries
              pertaining to a specific type of security automation
              information (see section <xref
              target="atompub-service-collection" format="counter"/>),
              or</t>
            <t>identify that an "atom:feed" element in an Atom Feed
              contains Entries pertaining to a specific type of security
              automation information (see section <xref
              target="atom-synd-feed-category" format="counter"/>).</t>
            <t>identify the information type of a standalone Resource
              (see section <xref target="atom-synd-entry-standalone"
              format="counter"/>).</t>
            </list></t>
          <t>For example, the notional security automation information
            type "incident" would be identified as follows:</t>
          <figure alt="" title="" align="left">
            <artwork align="left" xml:space="preserve"><![CDATA[
   <atom:category
       scheme="urn:ietf:params:rolie:category:information-type"
       term="incident"/>]]></artwork>
          </figure>
          <t>A security automation information type represents a class of
            information that represents the same or similar information
            model <xref target="RFC3444"/>. Notional examples of
            information types include:<list style="hanging"
            hangIndent="4">
            <t hangText="indicator:">Computing device- or network-related
              "observable features and phenomenon that aid in the
              forensic or proactive detection of malicious activity; and
              associated meta-data" (from <xref target="RFC7970"/>).</t>
            <t hangText="incident:">Information pertaining to and
              "derived analysis from security incidents" (from <xref
              target="RFC7970"/>).</t>
            <t hangText="vulnerability reports:">Information identifying
              and describing a vulnerability in hardware or software.</t>
            <t hangText="configuration checklists:">Content that can be
              used to assess the configuration settings related to
              installed software.</t>
            <t hangText="software tags:">Metadata used to identify and
              characterize installable software.</t>
            </list></t>
          <t>This is a short list to inspire new engineering of
            information type extensions that support the automation of
            security processes.</t>
          <t>This document does not specify any information types.
            Instead, information types in ROLIE are expected to be
            registered in extension documents that describe one or more
            new information types. This allows the information types used
            by ROLIE implementations to grow over time to support new
            security automation use cases. These extension documents may
            also enhance ROLIE Service, Category, Feed, and Entry
            documents by defining link relations, other categories, and
            Format data model extensions to address the representational
            needs of these specific information types. New information
            types are added to ROLIE through registrations to the IANA
            ROLIE Security Resource Information Type registry defined in
            section <xref target="iana-information-type" format="counter"
            />.</t>
        </section>
      </section>
      <section title="The &quot;rolie:format&quot; Extension Point"
        anchor="content-model-format">
        <t>Security automation data pertaining to a given information
          type may be expressed using a number of supported formats. As
          described in section <xref
          target="atom-synd-entry-rolie-format" format="counter"/>, the
          rolie:format element is used to describe the specific data
          model used to represent the resource referenced by a given
          "atom:entry". The structure provided by the rolie:format
          element, provides a mechanism for extension within the
          atom:entry model. ROLIE extensions MAY further restrict which
          data models are allowed to be used for a given information
          type.</t>
        <t>By declaring the data model used for a given Resource, a
          consumer can choose to download or ignore the Resource, or look
          for alternate formats. This saves the consumer from downloading
          and parsing resources that the consumer is not interested in or
          resources expressed in formats that are not supported by the
          consumer.</t>
      </section>
      <section title="The Link Relation Extension Point"
        anchor="content-model-link">
        <t>This document uses several link relations defined in the <eref
          target="https://www.iana.org/assignments/link-relations/link-relations.xhtml"
          >IANA Link Relation Types registry</eref>. Additional link
          relations can be registered in this registry to allow new
          relationships to be represented in ROLIE according to <xref
          target="RFC4287">RFC 4287 section 4.2.7.2</xref>. Based on the
          preceding reference, if the link relation is too specific or
          limited in the intended use, an absolute IRI can be used in
          lieu of registering a new simple name with IANA.</t>
      </section>
      <section title="The &quot;rolie:property&quot; Extension Point"
        anchor="content-model-property">
        <t>As discussed previously in <xref
          target="atom-synd-entry-rolie-property"/>, many formats contain
          unique identifying and characterizing properties that are vital
          for sharing information. In order to provide a global reference
          for these properties, this document establishes an IANA
          registry in <xref target="iana-parameters"/> that allows ROLIE
          extensions to register named properties using the name field
          with a type parameter of "property" to indicate a property
          extension. Implementations SHOULD prefer the use of registered
          properties over implementation specific properties when
          possible.</t>
        <t>ROLIE extensions are expected to register new and use existing
          properties to provide valuable identifying and characterizing
          information for a given information type and/or format.</t>
        <t>The namespace "urn:ietf:params:rolie:property:local" has been
          reserved in the IANA ROLIE Parameters table for private use as
          defined in <xref target="RFC8126"/>. Any property whose "name"
          attribute uses this as a prefix MUST be considered private use.
          Implementations encountering such a property MUST parse the
          content without error, but MAY otherwise ignore the
          element.</t>
        <t>This document also registers a number of general use
          properties that can be used to expose content information in
          any ROLIE use case. The following are descriptions of how to
          use these registered properties:<list style="hanging">
          <t
            hangText="urn:ietf:params:rolie:property:content-author-name"
            >The "value" attribute of this property is a text
            representation indicating the individual or organization that
            authored the content referenced by the "src" attribute of the
            entry's atom:content element.</t>
          <t hangText="urn:ietf:params:rolie:property:content-id">The
            "value" attribute of this property is a text representation
            of an identifier pertaining to or extracted from the content
            referenced by the "src" attribute of the entry's atom:content
            element. </t>
          <t
            hangText="urn:ietf:params:rolie:property:content-published-date"
            >The "value" attribute of this property is a text
            representation indicating the original publication date of
            the content referenced by the "src" attribute of the entry's
            atom:content element. This date may differ from the published
            date of the ROLIE Entry because publication of the content
            and the ROLIE Entry represent different events. The date MUST
            be formatted as specified in <xref target="RFC3339"/>.</t>
          <t
            hangText="urn:ietf:params:rolie:property:content-updated-date"
            >The "value" attribute of this property is a text
            representation indicating the date that the content,
            referenced by the "src" attribute of the entry's atom:content
            element, was last updated. This date may differ from the
            updated date of the ROLIE Entry because updates made to the
            content and to the ROLIE Entry are different events. The date
            MUST be formatted as specified in <xref target="RFC3339"
            />.</t>
          </list></t>
      </section>
    </section>
    <section title="IANA Considerations" anchor="iana">
      <t>This document has a number of IANA considerations described in
        the following subsections.</t>
      <section title="XML Namespaces and Schema URNs" anchor="iana-xml">
        <t>This document uses URNs to describe XML namespaces and XML
          schemas conforming to a registry mechanism described in <xref
          target="RFC3688"/>. <list style="hanging" hangIndent="4">
          <t hangText="ROLIE XML Namespace">The ROLIE namespace
            (rolie-1.0) has been registered in the "ns" registry. <vspace
            blankLines="1"/>URI: urn:ietf:params:xml:ns:rolie-1.0 <vspace
            blankLines="1"/>Registrant Contact: IESG <vspace
            blankLines="1"/>XML: None. Namespace URIs do not represent an
            XML specification.</t>
          <t hangText="ROLIE XML Schema">The ROLIE schema (rolie-1.0) has
            been registered in the "schema" registry. <vspace
            blankLines="1"/>URI: urn:ietf:params:xml:schema:rolie-1.0
            <vspace blankLines="1"/>Registrant Contact: IESG <vspace
            blankLines="1"/>XML: See section <xref
            target="appendix-schema" format="counter"/> of this
            document.</t>
          </list></t>
      </section>
      <section title="ROLIE URN Sub-namespace" anchor="iana-urn">
        <t>IANA has added an entry to the "IETF URN Sub-namespace for
          Registered Protocol Parameter Identifiers" registry located at
          <eref
          target="http://www.iana.org/assignments/params/params.xml#params-1"
          /> as per <xref target="RFC3553">RFC3553</xref>. </t>
        <t>The entry is as follows:<list>
          <t>Registry name: rolie</t>
          <t>Specification: This document</t>
          <t>Repository: ROLIE URN Parameters. See <xref
            target="iana-parameters"/> [TO BE REMOVED: This registration
            should take place at the following location:
            https://www.iana.org/assignments/rolie]</t>
          <t>Index value: See <xref target="iana-parameters"/></t>
          </list></t>
      </section>
      <section title="ROLIE URN Parameters" anchor="iana-parameters">
        <t>A new top-level registry has been created, entitled "Resource
          Oriented Lightweight Information Exchange (ROLIE) Parameters".
          [TO BE REMOVED: This registration should take place at the
          following location: https://www.iana.org/assignments/rolie]</t>
        <t>In this top-level registry, a sub-registry entitled "ROLIE URN
          Parameters" has been created. Registration in this repository
          is via the Specification Required policy <xref target="RFC8126"
          />. Designated Expert reviews should be routed through the MILE
          WG mailing list. Failing this, the Designated Expert will be
          assigned by the IESG.</t>
        <t>Each entry in this sub-registry must record the following fields:<list>
          <t>Name: A URN segment that adheres to the pattern
            {type}:{label}. The keywords are defined as follows:<list>
            <t>{type}: The parameter type. The allowed values are
              "category" or "property". "category" denotes a category
              extension as discussed in <xref
              target="content-model-category"/>. "property" denotes a
              property extension as discussed in <xref
              target="content-model-property"/>. </t>
            <t>{label}: A required US-ASCII string that conforms to the
              URN syntax requirements (see <xref target="RFC8141"/>).
              This string must be unique within the namespace defined by
              the {type} keyword. The "local" label for both the
              "category" and "property" types has been reserved for
              private use.</t>
            </list></t>
          <t>Extension IRI: The identifier to use within ROLIE, which is
            the full URN using the form: urn:ietf:params:rolie:{name},
            where {name} is the "name" field of this registration.</t>
          <t>Reference: A static link to the specification and section
            that the definition of the parameter can be found.</t>
          <t>Sub-registry: An optional field that links to an IANA
            sub-registry for this parameter. If the {type} is "category",
            the sub-registry must contain a "name" field whose registered
            values MUST be US-ASCII. The list of names are the allowed
            values of the "term" attribute in the atom:category element.
            (See <xref target="content-model-category-info-type"/>). </t>
          </list></t>
        <t>This repository has the following initial values:</t>
        <texttable>
          <ttcol>Name</ttcol>
          <ttcol>Extension IRI</ttcol>
          <ttcol>Reference</ttcol>
          <ttcol>Sub-Registry</ttcol>
          <c>category:information-type</c>
          <c>urn:ietf:params:rolie:category:information-type</c>
          <c>This document, <xref target="iana-information-type"/></c>
          <c>[TO BE REMOVED: This registration should take place at the
            following location:
            https://www.iana.org/assignments/rolie/category/information-type]</c>
          <c>property:local</c>
          <c>urn:ietf:params:rolie:property:local</c>
          <c>This document, <xref target="content-model-property"/></c>
          <c>None</c>
          <c>category:local</c>
          <c>urn:ietf:params:rolie:category:local</c>
          <c>This document, <xref target="content-model-category"/></c>
          <c>None</c>
          <c>property:content-author-name</c>
          <c>urn:ietf:params:rolie:property:content-author-name</c>
          <c>This document, <xref target="content-model-property"/></c>
          <c>None</c>
          <c>property:content-id</c>
          <c>urn:ietf:params:rolie:property:content-id</c>
          <c>This document, <xref target="content-model-property"/></c>
          <c>None</c>
          <c>property:content-published-date</c>
          <c>urn:ietf:params:rolie:property:content-published-date</c>
          <c>This document, <xref target="content-model-property"/></c>
          <c>None</c>
          <c>property:content-updated-date</c>
          <c>urn:ietf:params:rolie:property:content-updated-date</c>
          <c>This document, <xref target="content-model-property"/></c>
          <c>None</c>
        </texttable>
      </section>
      <section
        title="ROLIE Security Resource Information Type Sub-Registry"
        anchor="iana-information-type">
        <t>A new sub-registry has been created to store ROLIE information
          type values.<list hangIndent="0">
          <t>Name of Registry: "ROLIE Information Types"</t>
          <t>Location of Registry:
            https://www.iana.org/assignments/rolie/category/information-type</t>
          <t>Fields to record in the registry: <list hangIndent="0">
            <t>name: The full name of the security resource information
              type as a string from the printable ASCII character set
              <xref target="RFC0020"/> with individual embedded spaces
              allowed. The ABNF <xref target="RFC5234"/> syntax for this
              field is: <list>
              <t>1*VCHAR *(SP 1*VCHAR)</t>
              </list></t>
            <t>index: This is an IANA-assigned positive integer that
              identifies the registration. The first entry added to this
              registry uses the value 1, and this value is incremented
              for each subsequent entry added to the registry.</t>
            <t>reference: A list of one or more URIs <xref
              target="RFC3986"/> from which the registered specification
              can be obtained. The registered specification MUST be
              readily and publicly available from that URI. The URI
              SHOULD be a stable reference.</t>
            </list></t>
          <t>Allocation Policy: Specification required as per <xref
            target="RFC8126"/></t>
          </list></t>
      </section>
      <section title="Well-Known URI Registrations"
        anchor="iana-well-known">
        <t>This document makes the follow two registrations to the
          Well-Known URI Registry at
          https://www.iana.org/assignments/well-known-uris/well-known-uris.xhtml.</t>
        <t>Service Document registration:<list style="none">
          <t>URI suffix: rolie/servicedocument</t>
          <t>Change controller: IETF</t>
          <t>Specification document: This document, <xref
            target="atompub-discover"/></t>
          <t>Related information: None</t>
          </list></t>
        <t>Category Document registration:<list style="none">
          <t>URI suffix: rolie/categorydocument</t>
          <t>Change controller: IETF</t>
          <t>Specification document: This document, <xref
            target="atompub-discover-category"/></t>
          <t>Related information: None</t>
          </list></t>
      </section>
    </section>
    <section title="Security Considerations" anchor="security">
      <t>This document defines a resource-oriented approach for
        lightweight information exchange using HTTP over TLS, the Atom
        Syndication Format, and the Atom Publishing Protocol. As such,
        implementers must understand the security considerations
        described in those specifications. All that follows is guidance,
        more specific instruction is out of scope for this document.</t>
      <t>To protect the confidentiality of a given resource provided by a
        ROLIE implementation, requests for retrieval of the resource need
        to be authenticated to prevent unauthorized users from accessing
        the resource (see section <xref target="atompub-auth-authz"
        format="counter"/>). It can also be useful to log and audit
        access to sensitive resources to verify that proper access
        controls remain in place over time.</t>
      <t>The approach described herein is based upon all policy
        enforcements being implemented at the point when a resource
        representation is created. As such, producers sharing cyber
        security information using this specification must take care to
        authenticate their HTTP clients using a suitably strong user
        authentication mechanism. Sharing communities that are exchanging
        information on well-known indicators and incidents for purposes
        of public education may choose to rely upon HTTP Authentication
        or similar. A number of authentication schemes are defined in the
        <eref
        target="https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml"
        >HTTP Authentication Schemes Registry</eref>. Of these, <xref
        target="RFC7486">HOBA</xref> and <xref target="RFC7804"
        >SCRAM-SHA-256</xref> provide improved security properties over
        HTTP Basic <xref target="RFC7617"/>and Digest <xref
        target="RFC7616"/> Authentication Schemes. However, sharing
        communities that are engaged in sensitive collaborative analysis
        and/or operational response for indicators and incidents
        targeting high value information systems should adopt a suitably
        stronger user authentication solution, such as a risk-based or
        multi-factor approach. In general, trust in the sharing
        consortium will depend upon the members maintaining adequate user
        authentication mechanisms.</t>
      <t>Collaborating consortiums may benefit from the adoption of a
        federated identity solution, such as those based upon <xref
        target="RFC6749">OAuth</xref> with <xref target="RFC7797"
        >JWT</xref>, or <xref target="SAML-core">SAML-core</xref>, <xref
        target="SAML-bind">SAML-bind</xref>, and <xref target="SAML-prof"
        >SAML-prof</xref> for Web-based authentication and
        cross-organizational single sign-on. Dependency on a trusted
        third party identity provider implies that appropriate care must
        be exercised to sufficiently secure the Identity provider. Any
        attacks on the federated identity system would present a risk to
        the consortium, as a relying party. Potential mitigations include
        deployment of a federation-aware identity provider that is under
        the control of the information sharing consortium, with suitably
        stringent technical and management controls.</t>
      <t>Authorization of resource representations is the responsibility
        of the source system, i.e. based on the authenticated user
        identity associated with an HTTP(S) request. The required
        authorization policies that are to be enforced must therefore be
        managed by the security administrators of the source system.
        Various authorization architectures would be suitable for this
        purpose, such as <eref
        target="http://csrc.nist.gov/groups/SNS/rbac/">RBAC</eref> and/or
        ABAC, as embodied in <xref target="XACML">XACML</xref>. In
        particular, implementers adopting XACML may benefit from the
        capability to represent their authorization policies in a
        standardized, interoperable format. Note that implementers are
        free to choose any suitable authorization mechanism that is
        capable of fulfilling the policy enforcement requirements
        relevant to their consortium and/or organization.</t>
      <t>Additional security requirements such as enforcing message-level
        security at the destination system could supplement the security
        enforcements performed at the source system, however these
        destination-provided policy enforcements are out of scope for
        this specification. Implementers requiring this capability should
        consider leveraging, e.g. the &lt;RIDPolicy&gt; element in the
        RID schema. Refer to RFC6545 section 9 for more information.
        Additionally, the underlying serialization approach used in the
        message (e.g., XML, JSON) can offer encryption and message
        authentication capabilities. For example, XMLDSig <xref
        target="RFC3275"/> for XML, and JSON Web Encryption <xref
        target="RFC7516"/> and JSON Web Signature<xref target="RFC7515"/>
        for JSON can provide such mechanisms.</t>
      <t>When security policies relevant to the source system are to be
        enforced at both the source and destination systems, implementers
        must take care to avoid unintended interactions of the separately
        enforced policies. Potential risks will include unintended denial
        of service and/or unintended information leakage. These problems
        may be mitigated by avoiding any dependence upon enforcements
        performed at the destination system. When distributed enforcement
        is unavoidable, the usage of a standard language (e.g. XACML) for
        the expression of authorization policies will enable the source
        and destination systems to better coordinate and align their
        respective policy expressions.</t>
      <t>A service discovery mechanism is not explicitly specified in
        this document, and there are several approaches available for
        implementers. When selecting this mechanism, implementations need
        to ensure that their choice provides a means for authenticating
        the server. As described in the discovery section, DNS SRV
        Records are a possible secure solution to discovery.</t>
    </section>
    <section title="Privacy Considerations" anchor="privacy">
      <t>The optional author field may provide an identification privacy
        issue if populated without the author's consent. This information
        may become public if posted to a public feed. Special care should
        be taken when aggregating or sharing entries from other feeds, or
        when programmatically generating ROLIE entries from some data
        source that the author's personal info is not shared without
        their consent.</t>
      <t>When using the Atom Publishing Protocol to POST entries to a
        feed, attackers may use correlating techniques to profile the
        user. The request time can be compared to the generated "updated"
        field of the entry in order to build out information about a
        given user. This correlation attempt can be mitigated by not
        using HTTP requests to POST entries when profiling is a risk, and
        rather use backend control of the feeds.</t>
      <t>Adoption of the information sharing approach described in this
        document will enable users to more easily perform correlations
        across separate, and potentially unrelated, cyber security
        information providers. A client may succeed in assembling a data
        set that would not have been permitted within the context of the
        authorization policies of either provider when considered
        individually. Thus, providers may face a risk of an attacker
        obtaining an access that constitutes an undetected separation of
        duties (SOD) violation. It is important to note that this risk is
        not unique to this specification, and a similar potential for
        abuse exists with any other cyber security information sharing
        protocol. However, the wide availability of tools for HTTP
        clients and Atom Feed handling implies that the resources and
        technical skills required for a successful exploit may be less
        than it was previously. This risk can be best mitigated through
        appropriate vetting of the client at account provisioning time.
        In addition, any increase in the risk of this type of abuse
        should be offset by the corresponding increase in effectiveness
        that this specification affords to the defenders.</t>
      <t>Proper usage of TLS as described in <xref target="atompub-tls"/>
        will in many cases aid in the mitigation of these issues. </t>
      <t>Overall, ROLIE introduces few privacy concerns above and beyond
        those present in any other HTTP protocol. Those that exist can be
        mitigated by following security considerations and carefully
        using the optional identifying elements.</t>
    </section>
    <section title="Acknowledgements" anchor="acknowledgements">
      <t>The authors gratefully acknowledge the valuable contributions of
        Tom Maguire, Kathleen Moriarty, and Vijayanand Bharadwaj. These
        individuals provided detailed review comments on earlier drafts,
        and made many suggestions that have helped to improve this
        document.</t>
      <t>The authors would also like to thank the MILE Working Group, the
        SACM Working Group, and countless other people from both within the
        IETF community and outside of it for their excellent review and
        effort towards constructing this draft. </t>
    </section>
  </middle>
  <back>
    <references title="Normative References"> &RFC0020;&RFC2119;
      &RFC3339; &RFC3688; &RFC3986; &RFC4287; &RFC5005; &RFC5023;
      &RFC7970; &RFC6546; &RFC3553; &RFC8126; &xml-names; &RFC7589;
      &RFC5280; &RFC7525; &RFC4642; &RFC5785; <reference
        anchor="relax-NG"
        target="https://www.oasis-open.org/committees/relax-ng/compact-20021121.html">
        <front>
          <title>RELAX NG Compact Syntax</title>
          <author initials="J." surname="Clark" fullname="James Clark"
            role="editor">
            <address>
              <email>jjc@jclark.com</email>
            </address>
          </author>
          <date year="2002" month="11" day="21"/>
        </front>
      </reference>

    </references>
    <references title="Informative References"> &RFC8141; &RFC2782;
      &RFC3275; &RFC7516; &RFC7515; &RFC7486; &RFC7804; &RFC7616;
      &RFC6749; &RFC7617; &RFC3444; &RFC5234; &RFC7797;<reference
        anchor="SAML-core"
        target="http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf">
        <front>
          <title>Assertions and Protocol for the OASIS Security Assertion
            Markup Language (SAML) V2.0</title>
          <author fullname="Scott Cantor" initials="S." surname="Cantor">
            <organization>Internet2</organization>
            <address>
              <email>cantor.2@osu.edu</email>
            </address>
          </author>
          <author fullname="John Kemp" initials="J." surname="Kemp">
            <organization>Nokia</organization>
            <address>
              <email>John.Kemp@nokia.com</email>
            </address>
          </author>
          <author fullname="Rob Philpott" initials="R."
            surname="Philpott">
            <organization>RSA Security</organization>
            <address>
              <email>rphilpott@rsasecurity.com</email>
            </address>
          </author>
          <author fullname="Eve Maler" initials="E." surname="Maler">
            <organization>Sun Microsystems</organization>
            <address>
              <email>eve.maler@sun.com</email>
            </address>
          </author>
          <date year="2005" month="March"/>
        </front>
        <seriesInfo name="OASIS Standard" value="saml-core-2.0-os"/>
        <format type="PDF"
          target="http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf"
        />
      </reference>
      <reference anchor="SAML-prof"
        target="http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf">
        <front>
          <title>Profiles for the OASIS Security Assertion Markup
            Language (SAML) V2.0</title>
          <author fullname="John Hughes" initials="J." surname="Hughes">
            <organization>Altos Origin</organization>
            <address>
              <email/>
            </address>
          </author>
          <author fullname="Scott Cantor" initials="S." surname="Cantor">
            <organization>Internet2</organization>
            <address>
              <email>cantor.2@osu.edu</email>
            </address>
          </author>
          <author fullname="Jeff Hodges" initials="J." surname="Hodges">
            <organization>NeuStar</organization>
            <address>
              <email>Jeff.Hodges@neustar.biz</email>
            </address>
          </author>
          <author fullname="Frederick Hirsch" initials="F."
            surname="Hirsch">
            <organization>Nokia</organization>
            <address>
              <email>Frederick.Hirsch@nokia.com</email>
            </address>
          </author>
          <author fullname="Prateek Mishra" initials="P."
            surname="Mishra">
            <organization>Principal Identity</organization>
            <address>
              <email>pmishra@principalidentity.com</email>
            </address>
          </author>
          <author fullname="Rob Philpott" initials="R."
            surname="Philpott">
            <organization>RSA Security</organization>
            <address>
              <email>rphilpott@rsasecurity.com</email>
            </address>
          </author>
          <author fullname="Eve Maler" initials="E." surname="Maler">
            <organization>Sun Microsystems</organization>
            <address>
              <email>eve.maler@sun.com</email>
            </address>
          </author>
          <date year="2005" month="March"/>
        </front>
        <seriesInfo name="OASIS Standard"
          value="OASIS.saml-profiles-2.0-os"/>
        <format type="PDF"
          target="http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf"
        />
      </reference>
      <reference anchor="SAML-bind"
        target="http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf">
        <front>
          <title>Bindings for the OASIS Security Assertion Markup
            Language (SAML) V2.0</title>
          <author fullname="Scott Cantor" initials="S." surname="Cantor">
            <organization>Internet2</organization>
            <address>
              <email>cantor.2@osu.edu</email>
            </address>
          </author>
          <author fullname="Frederick Hirsch" initials="F."
            surname="Hirsch">
            <organization>Nokia</organization>
            <address>
              <email>Frederick.Hirsch@nokia.com</email>
            </address>
          </author>
          <author fullname="John Kemp" initials="J." surname="Kemp">
            <organization>Nokia</organization>
            <address>
              <email>John.Kemp@nokia.com</email>
            </address>
          </author>
          <author fullname="Rob Philpott" initials="R."
            surname="Philpott">
            <organization>RSA Security</organization>
            <address>
              <email>rphilpott@rsasecurity.com</email>
            </address>
          </author>
          <author fullname="Eve Maler" initials="E." surname="Maler">
            <organization>Sun Microsystems</organization>
            <address>
              <email>eve.maler@sun.com</email>
            </address>
          </author>
          <date year="2005" month="March"/>
        </front>
        <seriesInfo name="OASIS Standard" value="saml-bindings-2.0-os"/>
        <format type="PDF"
          target="http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf"
        />
      </reference>
      <reference anchor="I-D.ietf-tls-tls13">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version
            1.3</title>

          <author initials="E" surname="Rescorla"
            fullname="Eric Rescorla">
            <organization/>
          </author>

          <date month="July" day="3" year="2017"/>

          <abstract>
            <t>This document specifies version 1.3 of the Transport Layer
              Security (TLS) protocol. TLS allows client/server
              applications to communicate over the Internet in a way that
              is designed to prevent eavesdropping, tampering, and
              message forgery.</t>
          </abstract>

        </front>

        <seriesInfo name="Internet-Draft" value="draft-ietf-tls-tls13-21"/>
        <format type="TXT"
          target="http://www.ietf.org/internet-drafts/draft-ietf-tls-tls13-21.txt"
        />
      </reference>
      <reference anchor="XACML"
        target="http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-cs-01-en.pdf">
        <front>
          <title>eXtensible Access Control Markup Language (XACML)
            Version 3.0</title>
          <author initials="E." surname="Rissanen"
            fullname="Erik Rissanen">
            <organization/>
          </author>
          <date day="10" month="August" year="2010"/>
        </front>
      </reference>
      <reference anchor="REST"
        target="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">
        <front>
          <title>Architectural Styles and the Design of Network-based
            Software Architectures</title>
          <author initials="R." surname="Fielding"
            fullname="Roy Thomas Fielding">
            <organization abbrev="UCI"> University of California, Irvine;
              Department of Information and Computer Science
            </organization>
          </author>
          <date year="2000"/>
        </front>
        <format type="text/html"
          target="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm"
          octets="7287"/>
      </reference>
    </references>
    <section title="Relax NG Compact Schema for ROLIE"
      anchor="appendix-schema">
      <t>This appendix is informative.</t>

      <t>The Relax NG schema below defines the rolie:format element.</t>
      <figure>
        <artwork><![CDATA[
 # -*- rnc -*-
 # RELAX NG Compact Syntax Grammar for the rolie ns

 namespace rolie = "urn:ietf:params:xml:ns:rolie-1.0"
 namespace atom = "http://www.w3.org/2005/Atom"
 namespace app = "http://www.w3.org/2007/app"
   
 # rolie:format

 rolieFormat =
    element rolie:format {
       app:appCommonAttributes,
       attribute ns { atom:atomURI },
       attribute version { text } ?,
       attribute schema-location { atom:atomURI } ?,
       attribute schema-type { atom:atomMediaType } ?,
       empty
}
       
 # rolie:property
       
 rolieProperty =
    element rolie:property {
      app:appCommonAttributes,
      attribute name { atom:atomURI },
      attribute value { text }
      empty
  }]]></artwork>
      </figure>

    </section>
    <section title="Examples of Use">
      <section title="Service Discovery" anchor="example-svcdoc">
        <t>This section provides a non-normative example of a client
          doing service discovery.</t>
        <t>An Atom Service Document enables a client to dynamically
          discover what Feeds a particular publisher makes available.
          Thus, a provider uses an Atom Service Document to enable
          authorized clients to determine what specific information the
          provider makes available to the community. While the Service
          Document is accessible at a pre-determined location, the
          Service Document can also be made accessible from any well
          known location, such as via a link from the producer's home
          page.</t>

        <t>A client may format an HTTP GET request to retrieve the
          service document from the specified location:</t>

        <figure height="" suppress-title="false" width="" alt="" title=""
          align="left">
          <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  GET /.well-known/rolie/servicedocument
  Host: www.example.org
  Accept: application/atomsvc+xml   ]]></artwork>
        </figure>

        <t>Notice the use of the HTTP Accept: request header, indicating
          the MIME type for Atom service discovery. The response to this
          GET request will be an XML document that contains information
          on the specific Collections that are provided. </t>

        <t>Example HTTP GET response:</t>

        <figure height="" suppress-title="false" width="" alt="" title=""
          align="left">
          <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
 HTTP/1.1 200 OK
 Date: Fri, 24 Aug 2016 17:09:11 GMT
 Content-Length: 570
 Content-Type: application/atomsvc+xml;charset="utf-8"

 <?xml version="1.0" encoding="UTF-8"?>
 <service xmlns="http://www.w3.org/2007/app"
     xmlns:atom="http://www.w3.org/2005/Atom">
   <workspace>
     <atom:title type="text">Vulnerabilities</atom:title>
     <collection href="http://example.org/provider/vulns">
       <atom:title type="text">Vulnerabilities Feed</atom:title>
       <categories fixed="yes">
         <atom:category
             scheme="urn:ietf:params:rolie:category:information-type"
             term="vulnerability"/>
       </categories>
     </collection>            
   </workspace>
 </service>]]></artwork>
        </figure>

        <t>This simple Service Document example shows that the server
          provides one workspace, named "Vunerabilities". Within that
          workspace, the server makes one Collection available.</t>

        <t>A server may also offer a number of different Collections,
          each containing different types of security automation
          information. In the following example, a number of different
          Collections are provided, each with its own category and
          authorization scope. This categorization will help the clients
          to decide which Collections will meet their needs. </t>

        <figure height="" suppress-title="false" width="" alt="" title=""
          align="left">
          <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
 HTTP/1.1 200 OK
 Date: Fri, 24 Aug 2016 17:10:11 GMT
 Content-Length: 1912
 Content-Type: application/atomsvc+xml;charset="utf-8"

 <?xml version="1.0" encoding='utf-8'?>
 <service xmlns="http://www.w3.org/2007/app"
     xmlns:atom="http://www.w3.org/2005/Atom">
   <workspace>
     <atom:title>Public Security Information Sharing</atom:title>
     <collection 
         href="http://example.org/provider/public/vulns">
       <atom:title>Public Vulnerabilities</atom:title>
       <atom:link rel="service" 
         href="www.example.com/rolie/servicedocument"/>
       <categories fixed="yes">
         <atom:category
             scheme="urn:ietf:params:rolie:category:information-type"
             term="vulnerability"/>
       </categories>
     </collection>          
   </workspace>
   <workspace>
     <atom:title>Private Consortium Sharing</atom:title>
     <collection 
         href="http://example.org/provider/private/incidents">
       <atom:title>Incidents</atom:title>
       <atom:link rel="service" 
         href="www.example.com/rolie/servicedocument"/>
       <categories fixed="yes">
         <atom:category
             scheme="urn:ietf:params:rolie:category:information-type"
             term="incident"/>
       </categories>
     </collection>
   </workspace>
 </service>]]></artwork>
        </figure>

        <t>In this example, the provider is making available a total of
          two Collections, organized into two different workspaces. The
          first workspace contains a Collection consisting of publicly
          available software vulnerabilities. The second workspace
          provides an incident Collection for use by a private sharing
          consortium. An appropriately authenticated and authorized
          client may then proceed to make HTTP requests for these
          Collections. The publicly provided vulnerability information
          may be accessible with or without authentication. However,
          users accessing the Collection restricted to authorized members
          of a private sharing consortium are expected to authenticate
          before access is allowed.</t>
      </section>

      <section title="Feed Retrieval" anchor="example-feed">
        <t>This section provides a non-normative example of a client
          retrieving an vulnerability Feed.</t>
        <t>Having discovered the available security information sharing
          Collections, a client who is a member of the general public may
          be interested in receiving the Collection of public
          vulnerabilities. The client may retrieve the Feed for this
          Collection by performing an HTTP GET operation on the URL
          indicated by the Collection's "href" attribute. </t>

        <t>Example HTTP GET request for a Feed:</t>

        <figure height="" suppress-title="false" width="" alt="" title=""
          align="left">
          <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  GET /provider/public/vulns
  Host: www.example.org
  Accept: application/atom+xml    ]]></artwork>
        </figure>

        <t>The corresponding HTTP response would be an XML document
          containing the vulnerability Feed:</t>

        <t>Example HTTP GET response for a Feed:</t>

        <figure height="" suppress-title="false" width="" alt="" title=""
          align="left">
          <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  HTTP/1.1 200 OK
  Date: Fri, 24 Aug 2016 17:20:11 GMT
  Content-Length: 2882
  Content-Type: application/atom+xml;charset="utf-8"

  <?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom"
      xmlns:rolie="urn:ietf:params:xml:ns:rolie-1.0"
      xml:lang="en-US">
    <id>2a7e265a-39bc-43f2-b711-b8fd9264b5c9</id>
    <title type="text">
        Atom formatted representation of 
        a feed of XML vulnerability documents
    </title>
    <category
        scheme="urn:ietf:params:rolie:category:information-type"
        term="vulnerability"/>
    <updated>2016-05-04T18:13:51.0Z</updated>
    <link rel="self" 
        href="http://example.org/provider/public/vulns" />  
    <link rel="service" 
        href="http://example.org/rolie/servicedocument"/>
    <entry>
      <rolie:format ns="urn:ietf:params:xml:ns:exampleformat"/>
      <id>dd786dba-88e6-440b-9158-b8fae67ef67c</id>
      <title>Sample Vulnerability</title>
      <published>2015-08-04T18:13:51.0Z</published>
      <updated>2015-08-05T18:13:51.0Z</updated>
      <summary>A vulnerability issue identified by CVE-...</summary>
      <content type="application/xml" 
          src="http://www.example.org/provider/vulns/123456/data"/>
    </entry>
    
    <entry>
        <!-- ...another entry... -->
    </entry>
                
  </feed>   ]]></artwork>
        </figure>

        <t>This Feed document has two Atom Entries, one of which has been
          elided. The first Entry illustrates an atom:entry element that
          provides a summary of essential details about one particular
          vulnerability. Based upon this summary information and the
          provided category information, a client may choose to do an
          HTTP GET request, on the content "src" attribute, to retrieve
          the full details of the vulnerability.</t>

      </section>

      <section title="Entry Retrieval" anchor="example-entry">

        <t>This section provides a non-normative example of a client
          retrieving an vulnerability as an Atom Entry.</t>

        <t>Having retrieved the Feed of interest, the client may then
          decide, based on the description and/or category information,
          that one of the entries in the Feed is of further interest. The
          client may retrieve this vulnerability Entry by performing an
          HTTP GET operation on the URL indicated by the "src" attribute
          of the atom:content element. </t>

        <t>Example HTTP GET request for an Entry:</t>

        <figure height="" suppress-title="false" width="" alt="" title=""
          align="left">
          <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  GET /provider/public/vulns/123456
  Host: www.example.org
  Accept: application/atom+xml;type=entry   ]]></artwork>
        </figure>

        <t>The corresponding HTTP response would be an XML document
          containing the Atom Entry for the vulnerability record: </t>

        <t>Example HTTP GET response for an Entry:</t>

        <figure height="" suppress-title="false" width="" alt="" title=""
          align="left">
          <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  HTTP/1.1 200 OK
  Date: Fri, 24 Aug 2016 17:30:11 GMT
  Content-Length: 713
  Content-Type: application/atom+xml;type=entry;charset="utf-8"

  <?xml version="1.0" encoding="UTF-8"?>
  <entry xmlns="http://www.w3.org/2005/Atom"
      xmlns:rolie="urn:ietf:params:xml:ns:rolie-1.0"
      xml:lang="en-US">
    <id>f63aafa9-4082-48a3-9ce6-97a2d69d4a9b</id>
    <title>Sample Vulnerability</title>
    <published>2015-08-04T18:13:51.0Z</published>
    <updated>2015-08-05T18:13:51.0Z</updated>
    <category
        scheme="urn:ietf:params:rolie:category:information-type"
        term="vulnerability"/>
    <summary>A vulnerability issue identified by CVE-...</summary>
    <rolie:format ns="urn:ietf:params:xml:ns:exampleformat"/>
    <content type="application/xml" 
        src="http://www.example.org/provider/vulns/123456/data">
    </content>
  </entry>    ]]></artwork>
        </figure>

        <t>The example response above shows an XML document referenced by
          the "src" attribute of the atom:content element. The client may
          retrieve the document using this URL.</t>

      </section>
    </section>
    <section title="Change History" anchor="appendix-delta">
      <t>Changes in draft-ietf-mile-rolie-09 since
        draft-ietf-mile-rolie-08 revision:<list>
        <t>TLS requirements changed to clarify TLS versioning and
          recommendations</t>
        <t>Informative references and textual discussion added to
          Security Considerations around HTTP Authentication and content
          Signing/Encryption.</t>
        <t>IANA Expert review clarified.</t>
        <t>Editorial changes from AD review/WGLC.</t>
        </list></t>
      <t>Changes in draft-ietf-mile-rolie-08 since
        draft-ietf-mile-rolie-07 revision:<list>
        <t>Reworked “usage of app:collection” and “usage of atom:feed”
          sections to clarify ROLIE vs non-ROLIE collections/feeds</t>
        <t>Removed requirement from Security Considerations that was a
          duplicate of text earlier in the document</t>
        <t>TLS requirement clarifications around mutal authentication</t>
        <t>Clarified requirements around support for the "/" resource</t>
        <t>Added IANA property registrations for content-id,
          content-published-date, and content-updated-date that can be
          used across all ROLIE extensions to increase
          consistency/interop</t>
        <t>Assorted editorial changes</t>
        </list></t>
      <t>Changes in draft-ietf-mile-rolie-07 since
        draft-ietf-mile-rolie-06 revision:<list>
        <t>Condensed and re-focused Sections 1 and 4 to be more
          concise.</t>
        <t>Added /.well-known/ registration and requirement for service
          discovery.</t>
        <t>Added local category, property namespace, and additional
          property registrations</t>
        <t>Added privacy considerations section.</t>
        <t>Made a number of editorial changes as per WGLC review.</t>
        </list></t>
      <t>Changes in draft-ietf-mile-rolie-06 since
        draft-ietf-mile-rolie-05 revision:<list>
        <t>Changed to standards track</t>
        <t>Added the rolie:property element</t>
        <t>Fixed references (Normative vs Informative)</t>
        <t>Set Service and Category document URL template
          requirements</t>
        <t>Fixed XML snippets in examples</t>
        </list></t>
      <t>Changes in draft-ietf-mile-rolie-05 since
        draft-ietf-mile-rolie-04 revision:<list>
        <t>Added ROLIE specific terminology to section 2 </t>
        <t>Added AtomPub Category Document in section 5.2 </t>
        <t>Edited document, improving consistency in terminology usage
          and capitalization of key terms, as well as enhancing clarity. </t>
        <t>Removed unused format parameter type in section 8.3 </t>
        <t>Schema removed, the normative schema consists of the snippets
          in the requirements sections.</t>
        </list></t>
      <t>Changes in draft-ietf-mile-rolie-04 since
        draft-ietf-mile-rolie-03 revision:<list style="symbols">
        <t>Further specification and clarification of requirements</t>
        <t>IANA Considerations and extension system fleshed out and
          described.</t>
        <t>Examples and References updated.</t>
        <t>Schema created.</t>
        <t>Fixed both internal section and external document
          referencing.</t>
        <t>Removed XACML Guidance Appendix. This will be added to a
          future draft on ROLIE Authentication and Access Control.</t>
        </list></t>
      <t>Changes made in draft-ietf-mile-rolie-03 since
        draft-ietf-mile-rolie-02 revision:<list style="symbols">
        <t>Atom Syndication and Atom Pub requirements split and greatly
          expanded for increased justification and technical
          specification.</t>
        <t>Reintroduction and reformatting of some use case examples in
          order to provide some guidance on use.</t>
        <t>Established rough version of IANA table extension system along
          with explanations of said system.</t>
        <t>Re-organized document to put non-vital information in
          appendices.</t>
        </list> </t>
      <t>Changes made in draft-ietf-mile-rolie-02 since
        draft-field-mile-rolie-01 revision:<list style="symbols">
        <t>All CSIRT and IODEF/RID material moved to companion CSIRT
          document </t>
        <t>Recast document into a more general use perspective. The
          implication of CSIRTs as the defacto end-user has been removed
          where ever possible. All of the original CSIRT based use cases
          remain completely supported by this document, it has been
          opened up to support many other use cases.</t>
        <t>Changed the content model to broaden support of
          representation</t>
        <t>Edited and rewrote much of sections 1,2 and 3 in order to
          accomplish a broader scope and greater readability</t>
        <t>Removed any requirements from the Background section and, if
          not already stated, placed them in the requirements section</t>
        <t>Re-formatted the requirements section to make it clearer that
          it contains the lions-share of the requirements of the
          specification</t>
        </list> </t>
      <t>Changes made in draft-ietf-mile-rolie-01 since
        draft-field-mile-rolie-02 revision:<list style="symbols">
        <t>Added section specifying the use of RFC5005 for Archive and
          Paging of Feeds.</t>
        <t>Added section describing use of atom categories that
          correspond to IODEF expectation class and impact classes. See:
          normative-expectation-impact </t>
        <t>Dropped references to adoption of a MILE-specific HTTP media
          type parameter.</t>
        <t>Updated IANA Considerations section to clarify that no IANA
          actions are required.</t>
        </list></t>
    </section>
  </back>
</rfc>
