<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.11 (Ruby 3.2.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-boucadair-opsawg-secure-tacacs-yang-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="YANG for TACACS+ over TLS">A YANG Model for Terminal Access Controller Access-Control System Plus (TACACS+) over TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-boucadair-opsawg-secure-tacacs-yang-01"/>
    <author fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <date year="2024" month="May" day="28"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>XXXX</keyword>
    <keyword>XXXX</keyword>
    <keyword>XXXX</keyword>
    <abstract>
      <?line 38?>

<t>This document defines a YANG module for Terminal Access Controller Access-Control System Plus (TACACS+) over TLS 1.3. This modules augments the YANG Data Model for Terminal Access Controller Access-Control System Plus (TACACS+) defined in the RFC 9105 with TLS-related data nodes.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://boucadair.github.io/secure-tacacs-yang/draft-boucadair-opsawg-secure-tacacs-yang.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-boucadair-opsawg-secure-tacacs-yang/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Operations and Management Area Working Group Working Group mailing list (<eref target="mailto:opsawg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/opsawg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/boucadair/secure-tacacs-yang"/>.</t>
    </note>
  </front>
  <middle>
    <?line 42?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC9105"/> defines a YANG module ("ietf-system-tacacs-plus") that augments the System Management data model defined in <xref target="RFC7317"/> for the management of Terminal Access Controller Access-Control System Plus (TACACS+) clients. Typically, the "ietf-system-tacacs-plus" module is used to configure a TACACS+ client on a device to support deployment scenarios with centralized authentication, authorization, and accounting servers.</t>
      <t>This document defines a YANG module for managing TACACS+ over TLS 1.3 clients <xref target="I-D.ietf-opsawg-tacacs-tls13"/>. The module is designed as an augmentation to the "ietf-system-tacacs-plus" module specified in <xref target="RFC9105"/>.</t>
      <ul empty="true">
        <li>
          <t>Discussion Note: RFC 9105bis or keep the current augment design.</t>
        </li>
      </ul>
      <t>The module leverages the TLS structures defined in <xref target="I-D.ietf-netconf-tls-client-server"/>. Concretely, this first version of the specification uses a pruning approach rather that a reuse of the groupings defined in <xref target="I-D.ietf-netconf-tls-client-server"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The meanings of the symbols in the YANG tree diagrams are defined in <xref target="RFC8340"/>.</t>
      <t>The document uses the terms defined in <xref section="2" sectionFormat="of" target="I-D.ietf-opsawg-tacacs-tls13"/> and <xref section="3" sectionFormat="of" target="RFC8907"/>.</t>
      <t>'client' refers to TLS TACACS+ client, while 'server' refers to TLS TACACS+ server.</t>
      <ul empty="true">
        <li>
          <t>Note to the RFC Editor: Please update the following:</t>
          <ul spacing="normal">
            <li>
              <t>AAAA --&gt; the assigned RFC number for <xref target="I-D.ietf-netconf-crypto-types"/></t>
            </li>
            <li>
              <t>BBBB --&gt; the assigned RFC number for <xref target="I-D.ietf-netconf-trust-anchors"/></t>
            </li>
            <li>
              <t>CCCC --&gt; the assigned RFC number for <xref target="I-D.ietf-netconf-keystore"/></t>
            </li>
            <li>
              <t>FFFF --&gt; the assigned RFC number for <xref target="I-D.ietf-netconf-tls-client-server"/></t>
            </li>
            <li>
              <t>XXXX --&gt; the assigned RFC number for this document.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="module-tree-structure">
      <name>Module Tree Structure</name>
      <t>The module is designed to cover the following key requirements specified in <xref target="I-D.ietf-opsawg-tacacs-tls13"/>:</t>
      <ul spacing="normal">
        <li>
          <t>TLS 1.3 <xref target="RFC8446"/> <bcp14>MUST</bcp14> be used for transport.</t>
        </li>
        <li>
          <t>Earlier TLS versions TLS <bcp14>MUST NOT</bcp14> be used.</t>
        </li>
        <li>
          <t>The cipher suites offered or accepted <bcp14>SHOULD</bcp14> be configurable.</t>
        </li>
        <li>
          <t>Implementations <bcp14>MAY</bcp14> support Raw Public Keys and PSK.</t>
        </li>
        <li>
          <t>Implementations <bcp14>MUST</bcp14> support the ability to configure the server's domain name</t>
        </li>
      </ul>
      <t>The full tree structure is shown below:</t>
      <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

module: ietf-system-secure-tacacs

  augment /sys:system/sys-tcs-plus:tacacs-plus/sys-tcs-plus:server:
    +--rw remote-address* [address]
    |  +--rw address        inet:ip-address
    |  +--rw port-number?   inet:port-number
    +--rw domain-name?      inet:domain-name
  augment /sys:system/sys-tcs-plus:tacacs-plus/sys-tcs-plus:server
            /sys-tcs-plus:security:
    +--:(tls)
       +--rw client-identity!
       |  +--rw (auth-type)?
       |     +--:(certificate)
       |     |  +--rw certificate
       |     |     +--rw (inline-or-keystore)
       |     |        +--:(inline) {inline-definitions-supported}?
       |     |        |  +--rw inline-definition
       |     |        |     +--rw public-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw public-key?
       |     |        |     |       binary
       |     |        |     +--rw private-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw (private-key-type)
       |     |        |     |  +--:(cleartext-private-key)
       |     |        |     |  |        {cleartext-private-keys}?
       |     |        |     |  |  +--rw cleartext-private-key?
       |     |        |     |  |          binary
       |     |        |     |  +--:(hidden-private-key)
       |     |        |     |  |        {hidden-private-keys}?
       |     |        |     |  |  +--rw hidden-private-key?
       |     |        |     |  |          empty
       |     |        |     |  +--:(encrypted-private-key)
       |     |        |     |           {encrypted-private-keys}?
       |     |        |     |     +--rw encrypted-private-key
       |     |        |     |        +--rw encrypted-by
       |     |        |     |        +--rw encrypted-value-format
       |     |        |     |        |       identityref
       |     |        |     |        +--rw encrypted-value
       |     |        |     |                binary
       |     |        |     +--rw cert-data?
       |     |        |     |       end-entity-cert-cms
       |     |        |     +---n certificate-expiration
       |     |        |     |       {certificate-expiration-\
                                                       notification}?
       |     |        |     |  +-- expiration-date
       |     |        |     |          yang:date-and-time
       |     |        |     +---x generate-csr {csr-generation}?
       |     |        |        +---w input
       |     |        |        |  +---w csr-format    identityref
       |     |        |        |  +---w csr-info      csr-info
       |     |        |        +--ro output
       |     |        |           +--ro (csr-type)
       |     |        |              +--:(p10-csr)
       |     |        |                 +--ro p10-csr?   p10-csr
       |     |        +--:(central-keystore)
       |     |                 {central-keystore-supported,\
                                                    asymmetric-keys}?
       |     |           +--rw central-keystore-reference
       |     |              +--rw asymmetric-key?
       |     |              |       ks:central-asymmetric-key-ref
       |     |              |       {central-keystore-supported,\
                                                    asymmetric-keys}?
       |     |              +--rw certificate?      leafref
       |     +--:(raw-public-key) {tlsc:client-ident-raw-public-key}?
       |     |  +--rw raw-private-key
       |     |     +--rw (inline-or-keystore)
       |     |        +--:(inline) {inline-definitions-supported}?
       |     |        |  +--rw inline-definition
       |     |        |     +--rw public-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw public-key?
       |     |        |     |       binary
       |     |        |     +--rw private-key-format?
       |     |        |     |       identityref
       |     |        |     +--rw (private-key-type)
       |     |        |        +--:(cleartext-private-key)
       |     |        |        |        {cleartext-private-keys}?
       |     |        |        |  +--rw cleartext-private-key?
       |     |        |        |          binary
       |     |        |        +--:(hidden-private-key)
       |     |        |        |        {hidden-private-keys}?
       |     |        |        |  +--rw hidden-private-key?
       |     |        |        |          empty
       |     |        |        +--:(encrypted-private-key)
       |     |        |                 {encrypted-private-keys}?
       |     |        |           +--rw encrypted-private-key
       |     |        |              +--rw encrypted-by
       |     |        |              +--rw encrypted-value-format
       |     |        |              |       identityref
       |     |        |              +--rw encrypted-value
       |     |        |                      binary
       |     |        +--:(central-keystore)
       |     |                 {central-keystore-supported,\
                                                    asymmetric-keys}?
       |     |           +--rw central-keystore-reference?
       |     |                   ks:central-asymmetric-key-ref
       |     +--:(tls13-epsk) {tlsc:client-ident-tls13-epsk}?
       |        +--rw tls13-epsk
       |           +--rw (inline-or-keystore)
       |           |  +--:(inline) {inline-definitions-supported}?
       |           |  |  +--rw inline-definition
       |           |  |     +--rw key-format?
       |           |  |     |       identityref
       |           |  |     +--rw (key-type)
       |           |  |        +--:(cleartext-symmetric-key)
       |           |  |        |  +--rw cleartext-symmetric-key?
       |           |  |        |          binary
       |           |  |        |          {cleartext-symmetric-keys}?
       |           |  |        +--:(hidden-symmetric-key)
       |           |  |        |        {hidden-symmetric-keys}?
       |           |  |        |  +--rw hidden-symmetric-key?
       |           |  |        |          empty
       |           |  |        +--:(encrypted-symmetric-key)
       |           |  |                 {encrypted-symmetric-keys}?
       |           |  |           +--rw encrypted-symmetric-key
       |           |  |              +--rw encrypted-by
       |           |  |              +--rw encrypted-value-format
       |           |  |              |       identityref
       |           |  |              +--rw encrypted-value
       |           |  |                      binary
       |           |  +--:(central-keystore)
       |           |           {central-keystore-supported,symmetric\
                                                              -keys}?
       |           |     +--rw central-keystore-reference?
       |           |             ks:central-symmetric-key-ref
       |           +--rw external-identity                   string
       |           +--rw hash?
       |           |       tlscmn:epsk-supported-hash
       |           +--rw context?                            string
       |           +--rw target-protocol?                    uint16
       |           +--rw target-kdf?                         uint16
       +--rw server-authentication
       |  +--rw ca-certs!
       |  |  +--rw (inline-or-truststore)
       |  |     +--:(inline) {inline-definitions-supported}?
       |  |     |  +--rw inline-definition
       |  |     |     +--rw certificate* [name]
       |  |     |        +--rw name                      string
       |  |     |        +--rw cert-data
       |  |     |        |       trust-anchor-cert-cms
       |  |     |        +---n certificate-expiration
       |  |     |                {certificate-expiration-\
                                                       notification}?
       |  |     |           +-- expiration-date    yang:date-and-time
       |  |     +--:(central-truststore)
       |  |              {central-truststore-supported,certificates}?
       |  |        +--rw central-truststore-reference?
       |  |                ts:central-certificate-bag-ref
       |  +--rw ee-certs!
       |  |  +--rw (inline-or-truststore)
       |  |     +--:(inline) {inline-definitions-supported}?
       |  |     |  +--rw inline-definition
       |  |     |     +--rw certificate* [name]
       |  |     |        +--rw name                      string
       |  |     |        +--rw cert-data
       |  |     |        |       trust-anchor-cert-cms
       |  |     |        +---n certificate-expiration
       |  |     |                {certificate-expiration-\
                                                       notification}?
       |  |     |           +-- expiration-date    yang:date-and-time
       |  |     +--:(central-truststore)
       |  |              {central-truststore-supported,certificates}?
       |  |        +--rw central-truststore-reference?
       |  |                ts:central-certificate-bag-ref
       |  +--rw raw-public-keys! {tlsc:server-auth-raw-public-key}?
       |  |  +--rw (inline-or-truststore)
       |  |     +--:(inline) {inline-definitions-supported}?
       |  |     |  +--rw inline-definition
       |  |     |     +--rw public-key* [name]
       |  |     |        +--rw name                 string
       |  |     |        +--rw public-key-format    identityref
       |  |     |        +--rw public-key           binary
       |  |     +--:(central-truststore)
       |  |              {central-truststore-supported,public-keys}?
       |  |        +--rw central-truststore-reference?
       |  |                ts:central-public-key-bag-ref
       |  +--rw tls13-epsks?       empty
       |          {tlsc:server-auth-tls13-epsk}?
       +--rw hello-params {tlscmn:hello-params}?
       |  +--rw tls-versions
       |  |  +--rw min?   identityref
       |  |  +--rw max?   identityref
       |  +--rw cipher-suites
       |     +--rw cipher-suite*   tlscsa:tls-cipher-suite-algorithm
       +--rw keepalives {tlsc:tls-client-keepalives}?
          +--rw peer-allowed-to-send?   empty
          +--rw test-peer-aliveness!
             +--rw max-wait?       uint16
             +--rw max-attempts?   uint8
]]></artwork>
      <t>The following data nodes are supported:</t>
      <dl>
        <dt>'remote-address':</dt>
        <dd>
          <t>Specifies a list of IP address/port numbers that can be used to reach a server instance.</t>
        </dd>
        <dt/>
        <dd>
          <t>A server instance may be identified by an IPv4 address, IPv6 address, or both.</t>
        </dd>
        <dt/>
        <dd>
          <t>One or multiple addresses of the same address family may be provided.</t>
        </dd>
        <dt/>
        <dd>
          <t>The same or distinct port numbers may be used per address family.</t>
        </dd>
        <dt/>
        <dd>
          <t>This container takes precedence over "address" and "port" data nodes defined in <xref target="RFC9105"/>.</t>
        </dd>
        <dt>'domain-name':</dt>
        <dd>
          <t>Provides a domain name of the server per <xref section="3.3" sectionFormat="of" target="I-D.ietf-opsawg-tacacs-tls13"/>.</t>
        </dd>
        <dt>'client-identity':</dt>
        <dd>
          <t>Specifies the identity credentials that the client may present when
establishing a connection to a server.</t>
        </dd>
        <dt>'server-authentication':</dt>
        <dd>
          <t>Specifies how a client authenticate servers.</t>
        </dd>
        <dt>'hello-params':</dt>
        <dd>
          <t>Controls TLS versions and cipher suites.</t>
        </dd>
        <dt>'keepalives':</dt>
        <dd>
          <t>Providers a set of parameters for testing the aliveness of the server.</t>
        </dd>
      </dl>
    </section>
    <section anchor="yang-module">
      <name>YANG Module</name>
      <t>This module uses types and groupings defined in <xref target="RFC6991"/>, <xref target="RFC8341"/>, <xref target="I-D.ietf-netconf-crypto-types"/>, <xref target="I-D.ietf-netconf-trust-anchors"/>,
<xref target="I-D.ietf-netconf-keystore"/>, and <xref target="I-D.ietf-netconf-tls-client-server"/>.</t>
      <t>The module augments <xref target="RFC9105"/>, which is also an augment of <xref target="RFC7317"/>.</t>
      <t>The module also cites <xref target="RFC9257"/>, <xref target="RFC9258"/>, <xref target="RFC9258"/>, and <xref target="RFC6520"/>.</t>
      <sourcecode markers="true" name="ietf-system-secure-tacacs@2024-05-23.yang"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

module ietf-system-secure-tacacs {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-system-secure-tacacs";
  prefix secure-tacacs;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types";
  }
  import ietf-keystore {
    prefix ks;
    reference
      "RFC CCCC: A YANG Data Model for a Keystore";
  }
  import ietf-truststore {
    prefix ts;
    reference
      "RFC BBBB: A YANG Data Model for a Truststore";
  }
  import ietf-tls-client {
    prefix tlsc;
    reference
      "RFC FFFF: YANG Groupings for TLS Clients and TLS Servers";
  }
  import ietf-netconf-acm {
    prefix nacm;
    reference
      "RFC 8341: Network Configuration Access Control Model";
  }
  import ietf-crypto-types {
    prefix ct;
    reference
      "RFC AAAA: YANG Data Types and Groupings for Cryptography";
  }
  import ietf-tls-common {
    prefix tlscmn;
    reference
      "RFC FFFF: YANG Groupings for TLS Clients and TLS Servers";
  }
  import ietf-system {
    prefix sys;
    reference
      "RFC 7317: A YANG Data Model for System Management";
  }
  import ietf-system-tacacs-plus {
    prefix sys-tcs-plus;
    reference
      "RFC 9105: A YANG Data Model for Terminal Access Controller
                 Access-Control System Plus (TACACS+)";
  }

  organization
    "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Editor:   Mohamed Boucadair
               <mailto:mohamed.boucadair@orange.com>";
  description
    "This module provides configuration of TACACS+ over TLS
     clients.

     Copyright (c) 2024 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Revised BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX; see the
     RFC itself for full legal notices.";

  revision 2024-05-23 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: XXXX";
  }

  // to be further tweaked to align with the scope of tacacs+TLS spec
  // can't reuse the groupings in TLS as they are because TLS1.2
  // is not supported
  // can't set a default because of must in a choice

  grouping certificate {
    description
      "Specifies the client identity using a certificate.";
    uses "ks:inline-or-keystore-end-entity-cert-with-key-"
       + "grouping" {
      refine "inline-or-keystore/inline/inline-definition" {
        must 'not(public-key-format) or derived-from-or-self'
           + '(public-key-format, "ct:subject-public-key-'
           + 'info-format")';
      }
      refine "inline-or-keystore/central-keystore/"
           + "central-keystore-reference/asymmetric-key" {
        must 'not(deref(.)/../ks:public-key-format) or '
           + 'derived-from-or-self(deref(.)/../ks:public-'
           + 'key-format, "ct:subject-public-key-info-'
           + 'format")';
      }
    }
  }

  grouping raw-private-key {
    description
      "Specifies the client identity using a raw private
       key.";
    uses ks:inline-or-keystore-asymmetric-key-grouping {
      refine "inline-or-keystore/inline/inline-definition" {
        must 'not(public-key-format) or derived-from-or-self'
           + '(public-key-format, "ct:subject-public-key-'
           + 'info-format")';
      }
      refine "inline-or-keystore/central-keystore/"
           + "central-keystore-reference" {
        must 'not(deref(.)/../ks:public-key-format) or '
           + 'derived-from-or-self(deref(.)/../ks:public-'
           + 'key-format, "ct:subject-public-key-info-format")';
      }
    }
  }

  grouping tls13-epsk {
    description
      "An External Pre-Shared Key (EPSK) is established
       or provisioned out-of-band, i.e., not from a TLS
       connection.  An EPSK is a tuple of (Base Key,
       External Identity, Hash).  When PSKs are provisioned
       out of band, the PSK identity and the KDF hash algorithm
       to be used with the PSK must also be provisioned.";
    reference
      "RFC 8446: The Transport Layer Security (TLS) Protocol
                 Version 1.3, Section 4.2.11
       RFC 9257: Guidance for External Pre-Shared Key (PSK) Usage
                 in TLS, Section 6
       RFC 9258: Importing External Pre-Shared Keys (PSKs) for
                 TLS 1.3, Section 5.1";
    uses ks:inline-or-keystore-symmetric-key-grouping;
    leaf external-identity {
      type string;
      mandatory true;
      description
        "A sequence of bytes used to identify an EPSK. A label for
         a pre-shared key established externally.";
      reference
        "RFC 8446: The Transport Layer Security (TLS) Protocol
                   Version 1.3, Section 4.2.11
         RFC 9257: Guidance for External Pre-Shared Key (PSK)
                   Usage in TLS, Section 4.1";
    }
    leaf hash {
      type tlscmn:epsk-supported-hash;
      default "sha-256";
      description
        "For externally established PSKs, the Hash algorithm must be
         set when the PSK is established or default to SHA-256 if no
         such algorithm is defined.";
      reference
        "RFC 8446: The Transport Layer Security (TLS) Protocol
                   Version 1.3, Section 4.2.11";
    }
    leaf context {
      type string;
      description
        "The context used to determine the EPSK, if any exists. For
         example, context may include information about peer roles or
         identities to mitigate Selfie-style reflection attacks.";
      reference
        "RFC 9258: Importing External Pre-Shared Keys (PSKs) for
                   TLS 1.3, Section 5.1 ";
    }
    leaf target-protocol {
      type uint16;
      description
        "Specifies the protocol for which a PSK is imported for 
         use.";
      reference
        "RFC 9258: Importing External Pre-Shared Keys (PSKs) for
                   TLS 1.3, Section 3 ";
    }
    leaf target-kdf {
      type uint16;
      description
        "The KDF for which a PSK is imported for use.";
      reference
        "RFC 9258: Importing External Pre-Shared Keys (PSKs) for
                   TLS 1.3, Section 3";
    }
  }

  grouping client-identity {
    description
      "Identity credentials that the TLS client may present when
       establishing a connection to a TLS server. When configured,
       and requested by the TLS server when establishing a TLS
       session, these credentials are passed in the Certificate
       message.";
    reference
      "RFC 8446: The Transport Layer Security (TLS) Protocol
                 Version 1.3, Section 4.4.2";
    nacm:default-deny-write;
    choice auth-type {
      //default "certificate";
      //mandatory true;
      description
        "A choice amongst authentication types, of which one must
         be enabled and selected.";
      case certificate {
        container certificate {
          description
            "Specifies the client identity using a certificate.";
          uses certificate;
        }
      }
      case raw-public-key {
        if-feature "tlsc:client-ident-raw-public-key";
        container raw-private-key {
          description
            "Specifies the client identity using RPK.";
          uses raw-private-key;
        }
      }
      case tls13-epsk {
        if-feature "tlsc:client-ident-tls13-epsk";
        container tls13-epsk {
          description
            "An EPSK is established or provisioned out-of-band.";
          uses tls13-epsk;
        }
      }
    }
  }

  grouping server-authentication {
    description
      "Specifies how the TLS client can authenticate TLS servers.
       Any combination of credentials is additive and unordered.";
    nacm:default-deny-write;
    container ca-certs {
      presence "Indicates that CA certificates have been configured.
                This statement is present so the mandatory descendant
                nodes do not imply that this node must be
                configured.";
      description
        "A set of CA certificates used by the TLS client to 
         authenticate TLS server certificates.
         A server certificate is authenticated if it has a valid
         chain of trust to a configured CA certificate.";
      reference
        "RFC BBBB: A YANG Data Model for a Truststore";
      uses ts:inline-or-truststore-certs-grouping;
    }
    container ee-certs {
      presence "Indicates that EE certificates have been configured.
                This statement is present so the mandatory descendant
                nodes do not imply that this node must be
                configured.";
      description
        "A set of server certificates (i.e., end entity certificates)
         used by the TLS client to authenticate certificates
         presented by TLS servers. A server certificate is
         authenticated if it is an exact match to a configured server
         certificate.";
      reference
        "RFC BBBB: A YANG Data Model for a Truststore";
      uses ts:inline-or-truststore-certs-grouping;
    }
    container raw-public-keys {
      if-feature "tlsc:server-auth-raw-public-key";
      presence "Indicates that raw public keys have been configured.
                This statement is present so the mandatory descendant
                nodes do not imply that this node must be
                configured.";
      description
        "A set of raw public keys used by the TLS client to
         authenticate raw public keys presented by the TLS server.
         A raw public key is authenticated if it is an exact match
         to a configured raw public key.";
      reference
        "RFC BBBB: A YANG Data Model for a Truststore";
      uses ts:inline-or-truststore-public-keys-grouping {
        refine "inline-or-truststore/inline/inline-definition/"
             + "public-key" {
          must 'derived-from-or-self(public-key-format,'
             + ' "ct:subject-public-key-info-format")';
        }
        refine "inline-or-truststore/central-truststore/"
             + "central-truststore-reference" {
          must 'not(deref(.)/../ts:public-key/ts:public-key-'
             + 'format[not(derived-from-or-self(., "ct:subject-'
             + 'public-key-info-format"))])';
        }
      }
    }
    leaf tls13-epsks {
      if-feature "tlsc:server-auth-tls13-epsk";
      type empty;
      description
        "Indicates that the TLS client can authenticate TLS servers
         using configured external PSKs.";
    }
  }

  grouping test-peer-aliveness {
    description
      "Configures the keep-alive policy to proactively test
       the aliveness of the TLS server.  An unresponsive TLS
       server is dropped after approximately max-wait
       * max-attempts seconds.";
    reference
      "RFC 6520: Transport Layer Security (TLS) and Datagram
                 Transport Layer Security (DTLS) Heartbeat
                 Extension";
    leaf max-wait {
      type uint16 {
        range "1..max";
      }
      units "seconds";
      default "30";
      description
        "Sets the amount of time in seconds after which if no data
         has been received from the TLS server, a TLS-level message
         will be sent to test the aliveness of the TLS server.";
    }
    leaf max-attempts {
      type uint8;
      default "3";
      description
        "Sets the maximum number of sequential keep-alive messages
         that can fail to obtain a response from the TLS server
         before assuming the TLS server is no longer alive.";
    }
  }

  grouping hello-params {
    description
      "Configurable parameters for the TLS hello message.";
    nacm:default-deny-write;
    uses tlscmn:hello-params-grouping {
      refine "tls-versions/min" {
        must "not(derived-from-or-self(current(), "
           + "'tlscmn:tls12'))" {
          error-message "TLS 1.2 is not supported as min TLS version\
                                                                  .";
        }
      }
      refine "tls-versions/max" {
        must "not(derived-from-or-self(current(), "
           + "'tlscmn:tls12'))" {
          error-message "TLS 1.2 is not supported as max TLS version\
                                                                  .";
        }
      }
    }
  }

  grouping keepalives {
    description
      "Configures the keepalive policy for the TLS client.";
    nacm:default-deny-write;
    leaf peer-allowed-to-send {
      type empty;
      description
        "Indicates that the remote TLS server is allowed to send
         HeartbeatRequest messages to this TLS client.";
      reference
        "RFC 6520: Transport Layer Security (TLS) and Datagram
                   Transport Layer Security (DTLS) Heartbeat
                   Extension";
    }
    container test-peer-aliveness {
      presence "Indicates that the TLS client proactively tests the
                aliveness of the remote TLS server.";
      description
        "Configures the keep-alive policy to proactively test the
         aliveness of the TLS server.  An unresponsive TLS server is
         dropped after approximately max-wait * max-attempts
         seconds.";
      uses test-peer-aliveness;
    }
  }

  grouping tls-client {
    description
      "A grouping for configuring a TLS client without any
       consideration for how an underlying TCP session is 
       established.";
    container client-identity {
      presence
        "Indicates that a TLS-level client identity has been
         configured.
         This statement is present so the mandatory descendant do not
         imply that this node must be configured.";
      description
        "Identity credentials the TLS client may present when
         establishing a connection to a TLS server.";
      uses client-identity;
    }
    container server-authentication {
      must 'ca-certs or ee-certs or raw-public-keys or tls13-epsks';
      description
        "Specifies how the TLS client can authenticate TLS servers.";
      uses server-authentication;
    }
    container hello-params {
      if-feature "tlscmn:hello-params";
      description
        "Configurable parameters for the TLS hello message.";
      uses hello-params;
    }
    container keepalives {
      if-feature "tlsc:tls-client-keepalives";
      description
        "Configures the keepalive policy for the TLS client.";
      uses keepalives;
    }
  }

  grouping tcp-server-info {
    description
      "A grouping for configuring the information to contact
       a TCP server.";
    list remote-address {
      key "address";
      description
        "A server instance may be reachable using multiple IP address
         and port numbers. For example, use the same port number in
         different address families or different port numbers in the
         same address family.";
      leaf address {
        type inet:ip-address;
        description
          "The remote IP address to reach a server.";
      }
      leaf port-number {
        type inet:port-number;
        description
          "The remote port number of the server.";
      }
    }
  }

  augment "/sys:system/sys-tcs-plus:tacacs-plus"
        + "/sys-tcs-plus:server" {
    description
      "Adds server's domain name.";
    uses tcp-server-info {
      refine "remote-address/address" {
        must 'not(../../sys-tcs-plus:address)' {
          error-message
            "Either use the list of bind points or RFC 9105 address
             data node, not both.";
        }
      }
      refine "remote-address/port-number" {
        must 'not(../../sys-tcs-plus:port)' {
          error-message
            "Either use the list of bind points or RFC 9105 port
             data node, not both.";
        }
        default "1234"; // to be replaced by TACACS-TLS-PORT
      }
    }
    leaf domain-name {
      type inet:domain-name;
      description
        "Provides a domain name of the TACACS+ server.";
    }
  }

  augment
    "/sys:system/sys-tcs-plus:tacacs-plus/sys-tcs-plus:server"
  + "/sys-tcs-plus:security" {
    description
      "Adds TLS case.";
    case tls {
      description
        "TLS is used.";
      uses tls-client;
    }
  }
}
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section uses the template described in Section 3.7 of <xref target="I-D.ietf-netmod-rfc8407bis"/>.</t>
      <t>The YANG module specified in this document defines schema for data
   that is designed to be accessed via network management protocols such
   as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.  The lowest NETCONF layer
   is the secure transport layer, and the mandatory-to-implement secure
   transport is Secure Shell (SSH) <xref target="RFC6242"/>.  The lowest RESTCONF layer
   is HTTPS, and the mandatory-to-implement secure transport is TLS
   <xref target="RFC8446"/>.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.</t>
      <t>There are a number of data nodes defined in this YANG module that are
   writable/creatable/deletable (i.e., config true, which is the
   default).  These data nodes may be considered sensitive or vulnerable
   in some network environments.  Write operations (e.g., edit-config)
   and delete operations to these data nodes without proper protection
   or authentication can have a negative effect on network operations.
   Specifically, the following subtrees and data nodes have particular
   sensitivities/vulnerabilities:</t>
      <artwork><![CDATA[
 'xxx':
 :  xxxx.
]]></artwork>
      <t>Some of the readable data nodes in this YANG module may be considered
   sensitive or vulnerable in some network environments.  It is thus
   important to control read access (e.g., via get, get-config, or
   notification) to these data nodes.  Specifically, the following
subtrees and data nodes have particular sensitivities/vulnerabilities:</t>
      <artwork><![CDATA[
 'xxx':
 :  xxxx.
]]></artwork>
      <t>This YANG module uses groupings from other YANG modules that
   define nodes that may be considered sensitive or vulnerable
   in network environments. Refer to <xref section="5.3" sectionFormat="of" target="I-D.ietf-netconf-tls-client-server"/> for information as to which nodes may
   be considered sensitive or vulnerable in network environments.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following URI in the "ns" subregistry within
   the "IETF XML Registry" <xref target="RFC3688"/>:</t>
      <artwork><![CDATA[
   URI:  urn:ietf:params:xml:ns:yang:ietf-system-secure-tacacs
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.
]]></artwork>
      <t>IANA is requested to register the following YANG module in the "YANG Module
   Names" registry <xref target="RFC6020"/> within the "YANG Parameters" registry group:</t>
      <artwork><![CDATA[
   Name:  ietf-system-secure-tacacs
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-system-secure-tacacs
   Prefix:  secure-tacacs
   Maintained by IANA?  N
   Reference:  RFC XXXX
]]></artwork>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9105">
          <front>
            <title>A YANG Data Model for Terminal Access Controller Access-Control System Plus (TACACS+)</title>
            <author fullname="B. Wu" initials="B." role="editor" surname="Wu"/>
            <author fullname="G. Zheng" initials="G." surname="Zheng"/>
            <author fullname="M. Wang" initials="M." role="editor" surname="Wang"/>
            <date month="August" year="2021"/>
            <abstract>
              <t>This document defines a Terminal Access Controller Access-Control System Plus (TACACS+) client YANG module that augments the System Management data model, defined in RFC 7317, to allow devices to make use of TACACS+ servers for centralized Authentication, Authorization, and Accounting (AAA). Though being a standard module, this module does not endorse the security mechanisms of the TACACS+ protocol (RFC 8907), and TACACS+ be used within a secure deployment.</t>
              <t>The YANG module in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9105"/>
          <seriesInfo name="DOI" value="10.17487/RFC9105"/>
        </reference>
        <reference anchor="RFC7317">
          <front>
            <title>A YANG Data Model for System Management</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="August" year="2014"/>
            <abstract>
              <t>This document defines a YANG data model for the configuration and identification of some common system properties within a device containing a Network Configuration Protocol (NETCONF) server. This document also includes data node definitions for system identification, time-of-day management, user management, DNS resolver configuration, and some protocol operations for system management.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7317"/>
          <seriesInfo name="DOI" value="10.17487/RFC7317"/>
        </reference>
        <reference anchor="I-D.ietf-opsawg-tacacs-tls13">
          <front>
            <title>Terminal Access Controller Access-Control System Plus (TACACS+) over TLS 1.3</title>
            <author fullname="Thorsten Dahm" initials="T." surname="Dahm">
         </author>
            <author fullname="John Heasley" initials="J." surname="Heasley">
              <organization>NTT</organization>
            </author>
            <author fullname="dcmgash@cisco.com" initials="" surname="dcmgash@cisco.com">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Andrej Ota" initials="A." surname="Ota">
              <organization>Google Inc.</organization>
            </author>
            <date day="22" month="May" year="2024"/>
            <abstract>
              <t>   The Terminal Access Controller Access-Control System Plus (TACACS+)
   Protocol provides device administration for routers, network access
   servers and other networked computing devices via one or more
   centralized servers.  This document adds Transport Layer Security
   (TLS 1.3) support to TACACS+ and obsoletes former inferior security
   mechanisms.

   This document updates RFC8907.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-tacacs-tls13-10"/>
        </reference>
        <reference anchor="I-D.ietf-netconf-tls-client-server">
          <front>
            <title>YANG Groupings for TLS Clients and TLS Servers</title>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <date day="16" month="March" year="2024"/>
            <abstract>
              <t>   This document presents four YANG 1.1 modules.  Three IETF modules,
   and one supporting IANA module.

   The three IETF modules are: ietf-tls-common, ietf-tls-client, and
   ietf-tls-server.  The "ietf-tls-client" and "ietf-tls-server" modules
   are the primary productions of this work, supporting the
   configuration and monitoring of TLS clients and servers.

   The IANA module is: iana-tls-cipher-suite-algs.  This module defines
   YANG enumerations providing support for an IANA-maintained algorithm
   registry.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-tls-client-server-41"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="I-D.ietf-netconf-crypto-types">
          <front>
            <title>YANG Data Types and Groupings for Cryptography</title>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <date day="16" month="March" year="2024"/>
            <abstract>
              <t>   This document presents a YANG 1.1 (RFC 7950) module defining
   identities, typedefs, and groupings useful to cryptographic
   applications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-crypto-types-34"/>
        </reference>
        <reference anchor="I-D.ietf-netconf-trust-anchors">
          <front>
            <title>A YANG Data Model for a Truststore</title>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <date day="16" month="March" year="2024"/>
            <abstract>
              <t>   This document presents a YANG module for configuring bags of
   certificates and bags of public keys that can be referenced by other
   data models for trust.  Notifications are sent when certificates are
   about to expire.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-trust-anchors-28"/>
        </reference>
        <reference anchor="I-D.ietf-netconf-keystore">
          <front>
            <title>A YANG Data Model for a Keystore and Keystore Operations</title>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <date day="16" month="March" year="2024"/>
            <abstract>
              <t>   This document presents a YANG module called "ietf-keystore" that
   enables centralized configuration of both symmetric and asymmetric
   keys.  The secret value for both key types may be encrypted or
   hidden.  Asymmetric keys may be associated with certificates.
   Notifications are sent when certificates are about to expire.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-keystore-35"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <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>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC6991">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6991"/>
          <seriesInfo name="DOI" value="10.17487/RFC6991"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC9257">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="RFC9258">
          <front>
            <title>Importing External Pre-Shared Keys (PSKs) for TLS 1.3</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes an interface for importing external Pre-Shared Keys (PSKs) into TLS 1.3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9258"/>
          <seriesInfo name="DOI" value="10.17487/RFC9258"/>
        </reference>
        <reference anchor="RFC6520">
          <front>
            <title>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension</title>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann"/>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="M. Williams" initials="M." surname="Williams"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes the Heartbeat Extension for the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols.</t>
              <t>The Heartbeat Extension provides a new protocol for TLS/DTLS allowing the usage of keep-alive functionality without performing a renegotiation and a basis for path MTU (PMTU) discovery for DTLS. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6520"/>
          <seriesInfo name="DOI" value="10.17487/RFC6520"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC6242">
          <front>
            <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
            <author fullname="M. Wasserman" initials="M." surname="Wasserman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6242"/>
          <seriesInfo name="DOI" value="10.17487/RFC6242"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8907">
          <front>
            <title>The Terminal Access Controller Access-Control System Plus (TACACS+) Protocol</title>
            <author fullname="T. Dahm" initials="T." surname="Dahm"/>
            <author fullname="A. Ota" initials="A." surname="Ota"/>
            <author fullname="D.C. Medway Gash" initials="D.C." surname="Medway Gash"/>
            <author fullname="D. Carrel" initials="D." surname="Carrel"/>
            <author fullname="L. Grant" initials="L." surname="Grant"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes the Terminal Access Controller Access-Control System Plus (TACACS+) protocol, which is widely deployed today to provide Device Administration for routers, network access servers, and other networked computing devices via one or more centralized servers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8907"/>
          <seriesInfo name="DOI" value="10.17487/RFC8907"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-rfc8407bis">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <date day="18" month="April" year="2024"/>
            <abstract>
              <t>   This memo provides guidelines for authors and reviewers of
   specifications containing YANG modules, including IANA-maintained
   modules.  Recommendations and procedures are defined, which are
   intended to increase interoperability and usability of Network
   Configuration Protocol (NETCONF) and RESTCONF protocol
   implementations that utilize YANG modules.  This document obsoletes
   RFC 8407.

   Also, this document updates RFC 8126 by providing additional
   guidelines for writing the IANA considerations for RFCs that specify
   IANA-maintained modules.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis-11"/>
        </reference>
      </references>
    </references>
    <?line 892?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The document leverages data structures defined in <xref target="I-D.ietf-netconf-tls-client-server"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
