<?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.21 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-secure-tacacs-yang-05" category="std" consensus="true" submissionType="IETF" obsoletes="9105" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="YANG for TACACS+ over TLS">A YANG Data Model for Terminal Access Controller Access-Control System Plus (TACACS+)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-secure-tacacs-yang-05"/>
    <author fullname="Mohamed Boucadair" role="editor">
      <organization>Orange</organization>
      <address>
        <email>mohamed.boucadair@orange.com</email>
      </address>
    </author>
    <author fullname="Bo Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>mlana.wubo@huawei.com</email>
      </address>
    </author>
    <author fullname="Guangying Zheng">
      <organization>Huawei Technologies</organization>
      <address>
        <email>zhengguangying@huawei.com</email>
      </address>
    </author>
    <author fullname="Michael Wang">
      <organization>Huawei Technologies</organization>
      <address>
        <email>wangzitao@huawei.com</email>
      </address>
    </author>
    <date year="2025" month="January" day="28"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>TLS</keyword>
    <keyword>device management</keyword>
    <keyword>network operator</keyword>
    <keyword>provider network</keyword>
    <keyword>AAA</keyword>
    <keyword>authentication</keyword>
    <keyword>authorization</keyword>
    <abstract>
      <?line 47?>

<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). Specifically, this document defines a YANG module for TACACS+ over TLS 1.3.</t>
      <t>This document obsoletes RFC 9105.</t>
    </abstract>
  </front>
  <middle>
    <?line 57?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The System Management data model <xref target="RFC7317"/> defines separate functionality to support local and Remote Authentication Dial In User Service (RADIUS) authentication:</t>
      <dl>
        <dt>User Authentication Model:</dt>
        <dd>
          <t>Defines a list of user names with
associated passwords and a configuration leaf to decide the order
in which local or RADIUS authentication is used.</t>
        </dd>
        <dt>RADIUS Client Model:</dt>
        <dd>
          <t>Defines a list of RADIUS servers used by a
 device for centralized user authentication.</t>
        </dd>
      </dl>
      <t><xref target="RFC9105"/> defines a YANG module ("ietf-system-tacacs-plus") that augments the System Management data model <xref target="RFC7317"/> for the management of Terminal Access Controller Access-Control System Plus (TACACS+) clients as an alternative to RADIUS servers <xref target="RFC2865"/>. 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+ clients (<xref target="sec-module"/>), including TACACS+ over TLS 1.3 clients <xref target="I-D.ietf-opsawg-tacacs-tls13"/>. This document obsoletes <xref target="RFC9105"/>.</t>
      <t>The YANG module in this document conforms to the Network Management
   Datastore Architecture (NMDA) defined in <xref target="RFC8342"/>.</t>
      <section anchor="changes-since-rfc-9105">
        <name>Changes Since RFC 9105</name>
        <t>The following changes have been made to <xref target="RFC9105"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Add support for TLS <xref target="I-D.ietf-opsawg-tacacs-tls13"/></t>
          </li>
          <li>
            <t>Add a constraint to ensure that the list of servers is unique per address/port number</t>
          </li>
          <li>
            <t>Update the description of 'address' to be consistent with the type</t>
          </li>
          <li>
            <t>Fix a must statement under 'tacacs-plus'</t>
          </li>
          <li>
            <t>Fix errors in the example provided in Appendix A of <xref target="RFC9105"/></t>
          </li>
          <li>
            <t>Add an example to illustrate the use of VRF</t>
          </li>
          <li>
            <t>Add new examples to illustrate the use of TACACS+TLS data nodes</t>
          </li>
        </ul>
        <t>Detailed YANG changes are listed in <xref target="sec-module"/>.</t>
      </section>
      <section anchor="editorial-note-to-be-removed-by-rfc-editor">
        <name>Editorial Note (To be removed by RFC Editor)</name>
        <ul empty="true">
          <li>
            <t>Note to the RFC Editor: This section is to be removed prior to publication.</t>
          </li>
        </ul>
        <t>This document contains placeholder values that need to be replaced with finalized values at the time of publication. This note summarizes all of the substitutions that are needed.</t>
        <t>Please apply the following replacements:</t>
        <ul spacing="normal">
          <li>
            <t>XXXX --&gt; the assigned RFC number for this I-D</t>
          </li>
          <li>
            <t>SSSS --&gt; the assigned RFC number for <xref target="I-D.ietf-opsawg-tacacs-tls13"/></t>
          </li>
          <li>
            <t>TBD  --&gt; the assigned port number in <xref section="7" sectionFormat="of" target="I-D.ietf-opsawg-tacacs-tls13"/></t>
          </li>
          <li>
            <t>2024-12-11 --&gt; the actual date of the publication of this document</t>
          </li>
        </ul>
      </section>
    </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 terminology for describing YANG data models is defined in
   <xref target="RFC7950"/>.</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 TACACS+ client, while 'server' refers to TACACS+ server.</t>
      <section anchor="tree-diagrams">
        <name>Tree Diagrams</name>
        <t>The tree diagram used in this document follows the notation defined
   in <xref target="RFC8340"/>.</t>
      </section>
    </section>
    <section anchor="design-of-the-tacacs-data-model">
      <name>Design of the TACACS+ Data Model</name>
      <t>This module is used to configure a TACACS+ client on a device to
   support deployment scenarios with centralized authentication,
   authorization, and accounting servers.  Authentication is used to
   validate a user's username and password, authorization allows the
   user to access and execute commands at various privilege levels
   assigned to the user, and accounting keeps track of the activity of a
   user who has accessed the device.</t>
      <t>The "ietf-system-tacacs-plus" module augments the '/sys:system' path
   defined in the "ietf-system" module with the contents of the 'tacacs-plus'
   grouping.  Therefore, a device can use local, RADIUS, or
   TACACS+ authentication to validate users who attempt to access the
   device by several mechanisms, e.g., a command line interface or a
   web-based user interface.</t>
      <t>The 'server' list, which is directly under the 'tacacs-plus'
   container, holds a list of TACACS+ servers and uses 'server-type' to
   distinguish between Authentication, Authorization, and Accounting
   (AAA) services. The list of servers is for redundancy.</t>
      <t>When there are multiple interfaces connected to a TACACS+ client or
   server, the source address of outgoing TACACS+ packets could be
   specified, or the source address could be specified through the
   interface IP address setting or derived from the outbound interface
   from the local Forwarding Information Base (FIB). For a TACACS+
   server located in a Virtual Private Network (VPN), a VPN Routing and
   Forwarding (VRF) instance needs to be specified.</t>
      <t>The 'statistics' container under the 'server' list is a collection of
   read-only counters for sent and received messages from a configured
   server.</t>
      <t>The YANG module for TACACS+ client has the structure shown in <xref target="tree-overview"/>.</t>
      <figure anchor="tree-overview">
        <name>Tree Structure Overview</name>
        <artwork><![CDATA[
augment /sys:system:
  +--rw tacacs-plus
     +--rw client-credentials* [id] {credential-reference}?
     |  +--rw id                       string
     |  +--rw (auth-type)?
     |     +--:(certificate)
     |     |  ...
     |     +--:(raw-public-key) {tlsc:client-ident-raw-public-key}?
     |     |  ...
     |     +--:(tls13-epsk) {tlsc:client-ident-tls13-epsk}?
     |        ...
     +--rw server-credentials* [id] {credential-reference}?
     |  +--rw id                 string
     |  +--rw ca-certs!
     |  |  ...
     |  +--rw ee-certs!
     |  |  ...
     |  +--rw raw-public-keys! {tlsc:server-auth-raw-public-key}?
     |  |  ...
     |  +--rw tls13-epsks?       empty
     |          {tlsc:server-auth-tls13-epsk}?
     +--rw server* [name]
        +--rw name                           string
        +--rw server-type
        |       tacacs-plus-server-type
        +--rw domain-name?                   inet:domain-name
        +--rw sni-enabled?                   boolean
        +--rw address                        inet:host
        +--rw port?                          inet:port-number
        +--rw (security)
        |  +--:(tls)
        |  |  +--rw client-identity!
        |  |  |  +--rw (ref-or-explicit)?
        |  |  |     +--:(ref)
        |  |  |     |  +--rw credentials-reference?
        |  |  |     |          sys-tcs-plus:client-credentials-ref
        |  |  |     |          {credential-reference}?
        |  |  |     +--:(explicit)
        |  |  |        +--rw (auth-type)?
        |  |  |           +--:(certificate)
        |  |  |           |  ...
        |  |  |           +--:(raw-public-key)
        |  |  |           |     {tlsc:client-ident-raw-public-key}?
        |  |  |           |  ...
        |  |  |           +--:(tls13-epsk)
        |  |  |                 {tlsc:client-ident-tls13-epsk}?
        |  |  |              ...
        |  |  +--rw server-authentication
        |  |  |  +--rw (ref-or-explicit)?
        |  |  |     +--:(ref)
        |  |  |     |  +--rw credentials-reference?
        |  |  |     |          sys-tcs-plus:server-credentials-ref
        |  |  |     |          {credential-reference}?
        |  |  |     +--:(explicit)
        |  |  |        +--rw ca-certs!
        |  |  |        |  ...
        |  |  |        +--rw ee-certs!
        |  |  |        |  ...
        |  |  |        +--rw raw-public-keys!
        |  |  |        |       {tlsc:server-auth-raw-public-key}?
        |  |  |        |  ...
        |  |  |        +--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
        |  +--:(obfuscation)
        |     +--rw shared-secret?           string
        +--rw (source-type)?
        |  +--:(source-ip)
        |  |  +--rw source-ip?               inet:ip-address
        |  +--:(source-interface)
        |     +--rw source-interface?        if:interface-ref
        +--rw vrf-instance?
        |       -> /ni:network-instances/network-instance/name
        +--rw single-connection?             boolean
        +--rw timeout?                       uint16
        +--ro statistics
           +--ro discontinuity-time?    yang:date-and-time
           +--ro connection-opens?      yang:counter64
           +--ro connection-closes?     yang:counter64
           +--ro connection-aborts?     yang:counter64
           +--ro connection-failures?   yang:counter64
           +--ro connection-timeouts?   yang:counter64
           +--ro messages-sent?         yang:counter64
           +--ro messages-received?     yang:counter64
           +--ro errors-received?       yang:counter64
           +--ro sessions?              yang:counter64
           +--ro cert-errors?           yang:counter64
           +--ro rpk-errors?            yang:counter64
                   {tlsc:server-auth-raw-public-key}?
]]></artwork>
      </figure>
      <t>Specifically, 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, so that it may be included in the TLS Server Name Indication (SNI) extension.</t>
        </li>
      </ul>
      <t>The following new data nodes are supported compared to <xref target="RFC9105"/>:</t>
      <dl>
        <dt>'client-credentials' and 'server-credentials':</dt>
        <dd>
          <t>Defines a set credentials that can be globally provisioned and then referenced under specific servers.</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"/>. This is the TLS TACACS+ server's domain name that is  included in the SNI extension. This domain name is distinct from the IP address/hostname used for the underlying transport connection.</t>
        </dd>
        <dt>'sni-enabled':</dt>
        <dd>
          <t>Controls activation of Server Name Indication (SNI) (<xref section="3" sectionFormat="of" target="RFC6066"/>). This parameter can be used only if a domain name is provided.</t>
        </dd>
        <dt>'client-identity':</dt>
        <dd>
          <t>Specifies the identity credentials that the client may present when
establishing a connection to a server. Client identities can be configured at the top level and then referenced for specific server instances. Alternatively, client identities can be configured explicitely under each server instance.</t>
        </dd>
        <dt>'server-authentication':</dt>
        <dd>
          <t>Specifies how a client authenticates servers. Server credentials can be configured at the top level and then referenced for specific server instances. Alternatively, client identities can be configured explicitely under each server instance.</t>
        </dd>
        <dt>'hello-params':</dt>
        <dd>
          <t>Controls TLS versions and cipher suites.</t>
        </dd>
        <dt>'discontinuity-time':</dt>
        <dd>
          <t>The time on the most recent occasion at which the client suffered a discontinuity.</t>
        </dd>
        <dt>'cert-errors':</dt>
        <dd>
          <t>Number of connection failures due to certificate issues.</t>
        </dd>
        <dt>'rpk-errors':</dt>
        <dd>
          <t>Number of raw public key related connection failures.</t>
        </dd>
      </dl>
    </section>
    <section anchor="sec-module">
      <name>TACACS+ Client Module</name>
      <t>This YANG module uses types and groupings defined in <xref target="RFC6991"/>, <xref target="RFC8341"/>, <xref target="RFC8343"/>, <xref target="RFC8529"/>, <xref target="RFC9640"/>, <xref target="RFC9641"/>,
<xref target="RFC9642"/>, and <xref target="RFC9645"/>.</t>
      <t>The module augments <xref target="RFC7317"/>.</t>
      <t>The module also cites <xref target="RFC6520"/>, <xref target="RFC9257"/>, and <xref target="RFC9258"/>.</t>
      <sourcecode type="yang"><![CDATA[
<CODE BEGINS> file "ietf-system-tacacs-plus@2025-01-23.yang"
module ietf-system-tacacs-plus {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-system-tacacs-plus";
  prefix sys-tcs-plus;

  import ietf-inet-types {
    prefix inet;
    reference
      "RFC 6991: Common YANG Data Types";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC 6991: Common YANG Data Types";
  }
  import ietf-system {
    prefix sys;
    reference
      "RFC 7317: A YANG Data Model for System Management";
  }
  import ietf-netconf-acm {
    prefix nacm;
    reference
      "RFC 8341: Network Configuration Access Control Model";
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC 8343: A YANG Data Model for Interface Management";
  }
  import ietf-network-instance {
    prefix ni;
    reference
      "RFC 8529: YANG Data Model for Network Instances";
  }
  import ietf-crypto-types {
    prefix ct;
    reference
      "RFC 9640: YANG Data Types and Groupings for Cryptography";
  }
  import ietf-truststore {
    prefix ts;
    reference
      "RFC 9641: A YANG Data Model for a Truststore";
  }
  import ietf-keystore {
    prefix ks;
    reference
      "RFC 9642: A YANG Data Model for a Keystore";
  }
  import ietf-tls-common {
    prefix tlscmn;
    reference
      "RFC 9645: YANG Groupings for TLS Clients and TLS Servers";
  }
  import ietf-tls-client {
    prefix tlsc;
    reference
      "RFC 9645: YANG Groupings for TLS Clients and TLS Servers";
  }

  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>
     Author:   Bo Wu
               <lana.wubo@huawei.com>
     Author:   Guangying Zheng
               <zhengguangying@huawei.com>";
  description
    "This module provides configuration of TACACS+ clients.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.

     Copyright (c) 2025 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 2025-01-23 {
    description
      "This revision adds TLS support. Specifically, this revision
       adds:
         - a new feature 'credential-reference'
         - a new container 'client-credentials'
         - a new container 'server-credentials'
         - a new leaf 'domain-name'
         - a new leaf 'sni-enabled'
         - TLS as a new security choice
         - a new leaf 'discontinuity-time' under 'statistics'
         - a new leaf 'cert-errors' under 'statistics'
         - a new leaf 'rpk-errors' under 'statistics'
       Also, this revision:
         - updates the reference of 'tacacs-plus' identity
           to also cite RFC SSSS
         - fixes a must statement under 'tacacs-plus' by adding
           a missing prefix
         - requires that the servers list must be unique per
           address/port number.
         - updates the description of the 'name' under 'server'
           list to better reflect the intended use and clarifies
           the difference with the new domain-name
         - updates the description of the 'address' to be
           consistent with the type
         - removes the default statement for the 'port' under
           'server' list because a distinct default port number
           is used for TACACS+TLS
         - updates the 'port' leaf under 'server' list to enumerate
           the various TACACS+ default port numbers
         - added a constraint on the VRF with 'source-interface'
           is also provided
         - updates the description of timeout to remove redundant
           text with the default statement";
    reference
      "RFC XXXX: A YANG Data Model for Terminal Access Controller
                 Access-Control System Plus (TACACS+)";
  }

  revision 2021-08-05 {
    description
      "Initial revision.";
    reference
      "RFC 9105: A YANG Data Model for Terminal Access Controller
                 Access-Control System Plus (TACACS+)";
  }

  feature credential-reference {
    description
      "Indicates whether service credentials references are
       supported.";
  }

  identity tacacs-plus {
    base sys:authentication-method;
    description
      "Indicates AAA operation using TACACS+.";
    reference
      "RFC SSSS: Terminal Access Controller Access-Control
                 System Plus (TACACS+) over TLS 1.3
       RFC 8907: The TACACS+ Protocol";
  }

  typedef tacacs-plus-server-type {
    type bits {
      bit authentication {
        description
          "Indicates that the TACACS+ server is providing
           authentication services.";
      }
      bit authorization {
        description
          "Indicates that the TACACS+ server is providing
           authorization services.";
      }
      bit accounting {
        description
          "Indicates that the TACACS+ server is providing accounting
           services.";
      }
    }
    description
      "The type can be set to authentication, authorization,
       accounting, or any combination of the three types.";
  }

  typedef client-credentials-ref {
    type leafref {
      path "/sys:system/sys-tcs-plus:tacacs-plus"
         + "/sys-tcs-plus:client-credentials/sys-tcs-plus:id";
    }
    description
      "Defines a type to reference client credentials.";
  }

  typedef server-credentials-ref {
    type leafref {
      path "/sys:system/sys-tcs-plus:tacacs-plus"
         + "/sys-tcs-plus:server-credentials/sys-tcs-plus:id";
    }
    description
      "Defines a type to reference server credentials.";
  }

  grouping statistics {
    description
      "Grouping for TACACS+ statistics attributes, including TLS
       specifics.";
    container statistics {
      config false;
      description
        "A collection of server-related statistics objects.";
      leaf discontinuity-time {
        type yang:date-and-time;
        description
          "The time on the most recent occasion at which the
           TACACS+ client suffered a discontinuity.";
      }
      leaf connection-opens {
        type yang:counter64;
        description
          "Number of new connection requests sent to the server,
           e.g., socket open.";
      }
      leaf connection-closes {
        type yang:counter64;
        description
          "Number of connection close requests sent to the server,
           e.g., socket close.";
      }
      leaf connection-aborts {
        type yang:counter64;
        description
          "Number of aborted connections to the server. These do
           not include connections that are closed gracefully.";
      }
      leaf connection-failures {
        type yang:counter64;
        description
          "Number of connection failures to the server.";
      }
      leaf connection-timeouts {
        type yang:counter64;
        description
          "Number of connection timeouts to the server.";
      }
      leaf messages-sent {
        type yang:counter64;
        description
          "Number of messages sent to the server.";
      }
      leaf messages-received {
        type yang:counter64;
        description
          "Number of messages received from the server.";
      }
      leaf errors-received {
        type yang:counter64;
        description
          "Number of error messages received from the server.";
      }
      leaf sessions {
        type yang:counter64;
        description
          "Number of TACACS+ sessions completed with the server.
           If the Single Connection Mode was not enabled, the number
           of sessions is the same as the number of
           'connection-closes'. If the Single Connection Mode was
           enabled, a single TCP connection may contain multiple
           TACACS+ sessions.";
      }
      leaf cert-errors {
        type yang:counter64;
        description
          "Number of connection failures due to certificate
           issues.";
      }
      leaf rpk-errors {
        if-feature "tlsc:server-auth-raw-public-key";
        type yang:counter64;
        description
          "Number of RPK-related connection failures.";
      }
    }
  }

  grouping certificate {
    description
      "Specifies a certificate that can be used for client
       identity.";
    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 raw private key (RPK) that can be used for
       client identity.";
    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 Pre-Shared Keys (PSKs) are provisioned out of band,
       the PSK identity and the Key Derivation Function (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 a 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";
      description
        "A choice amongst authentication types.";
      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 client-identity-with-ref {
    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.";
    choice ref-or-explicit {
      description
        "A choice between a reference or explicit configuration.";
      case ref {
        description
          "Provides a reference to a client identity.";
        leaf credentials-reference {
          if-feature "credential-reference";
          type sys-tcs-plus:client-credentials-ref;
          description
            "Specifies the client credentials reference.";
        }
      }
      case explicit {
        description
          "Explicit configuration of the client identity.";
        uses client-identity;
      }
    }
  }

  grouping server-authentication {
    description
      "Specifies how a TLS client can authenticate TLS servers.
       Any combination of credentials is additive and unordered.";
    nacm:default-deny-write;
    container ca-certs {
      presence "Indicates that Certification Authority (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 9641: A YANG Data Model for a Truststore";
      uses ts:inline-or-truststore-certs-grouping;
    }
    container ee-certs {
      presence "Indicates that End Entity (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 a 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 9641: 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 a 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 9641: 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 a TLS client can authenticate TLS servers
         using configured EPSKs.";
    }
  }

  grouping server-authentication-with-ref {
    description
      "Specifies how a TLS client can authenticate TLS servers.";
    choice ref-or-explicit {
      description
        "A choice between a reference of explicit configuration.";
      case ref {
        description
          "Provides a reference to server credentials.";
        leaf credentials-reference {
          if-feature "credential-reference";
          type sys-tcs-plus:server-credentials-ref;
          description
            "Specifies the server credentials reference.";
        }
      }
      case explicit {
        description
          "Explicit configuration of a server credentials.";
        uses server-authentication;
      }
    }
  }

  grouping hello-params {
    description
      "Configurable parameters for the TLS Hello message.";
    reference
      "RFC SSSS: Terminal Access Controller Access-Control
                 System Plus (TACACS+) over TLS 1.3,
                 Section 5.1";
    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 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 that a TLS client may present when
         establishing a connection to a TLS server.";
      uses client-identity-with-ref;
    }
    container server-authentication {
      must 'credentials-reference or ca-certs or ee-certs or '
         + 'raw-public-keys or tls13-epsks';
      description
        "Specifies how a TLS client can authenticate TLS servers.";
      uses server-authentication-with-ref;
    }
    container hello-params {
      if-feature "tlscmn:hello-params";
      description
        "Configurable parameters for the TLS Hello message.";
      uses hello-params;
    }
  }

  grouping tacacs-plus {
    description
      "Grouping for TACACS+ attributes.";
    container tacacs-plus {
      must "not(derived-from-or-self(../sys:authentication"
         + "/sys:user-authentication-order, "
         + "'sys-tcs-plus:tacacs-plus'))"
         + " or bit-is-set(server/server-type,'authentication')" {
        error-message
          "When 'tacacs-plus' is used as a system authentication
           method, a TACACS+ authentication server must be
           configured.";
        description
          "When 'tacacs-plus' is used as an authentication method,
           a TACACS+ server must be configured.";
      }
      description
        "Container for TACACS+ configurations and operations.";
      list client-credentials {
        if-feature "credential-reference";
        key "id";
        description
          "Identity credentials that a TLS client may present
           when establishing a connection to a TLS server.
           A list of client credentials that can be referenced
           when configuring server instances.";
        nacm:default-deny-write;
        leaf id {
          type string;
          description
            "An identifier that uniquely identifies a client 
             identity within the device configuration.";
        }
        uses client-identity;
      }
      list server-credentials {
        if-feature "credential-reference";
        key "id";
        description
          "Identity credentials that a TLS client may present
           when establishing a connection to a TLS server.";
        nacm:default-deny-write;
        leaf id {
          type string;
          description
            "An identifier that uniquely identify server
             credentials within the device configuration.";
        }
        uses server-authentication;
      }
      list server {
        key "name";
        unique "address port";
        ordered-by user;
        description
          "List of TACACS+ servers used by the device.";
        leaf name {
          type string;
          description
            "A name that is used to uniquely identify a TACACS+
             server within the device configuration.
             This name is not to be confused with the domain-name.";
        }
        leaf server-type {
          type tacacs-plus-server-type;
          mandatory true;
          description
            "Server type: authentication/authorization/accounting and
             various combinations.";
        }
        leaf domain-name {
          type inet:domain-name;
          description
            "Provides a domain name of the TACACS+ server.";
          reference
            "RFC SSSS: Terminal Access Controller Access-Control
                       System Plus (TACACS+) over TLS 1.3,
                       Section 3.4.2";
        }
        leaf sni-enabled {
          type boolean;
          must '../domain-name' {
            error-message
              "A domain name must be provided to make use of Server
               Name Indication (SNI).";
          }
          description
            "Enables the use of SNI, when set to true. Disables the
             use of SNI, when set to false.";
          reference
            "RFC 6066: Transport Layer Security (TLS) Extensions:
                       Extension Definitions, Section 3
             RFC SSSS: Terminal Access Controller Access-Control
                       System Plus (TACACS+) over TLS 1.3,
                       Section 3.4.2";
        }
        leaf address {
          type inet:host;
          mandatory true;
          description
            "The IP address or name of the TACACS+ server.";
        }
        leaf port {
          type inet:port-number;
          description
            "The port number of TACACS+ server port number.
             Default port number for legacy TACACS+ is 49,
             while it is TBD for TACACS+TLS.";
        }
        choice security {
          mandatory true;
          description
            "Security mechanism between TACACS+ client and server.";
          case tls {
            description
              "TLS is used to secure TACACS+ exchanges.";
            reference
              "RFC SSSS: Terminal Access Controller Access-Control
                         System Plus (TACACS+) over TLS 1.3";
            uses tls-client;
          }
          case obfuscation {
            leaf shared-secret {
              type string {
                length "1..max";
              }
              description
                "The shared secret, which is known to both the
                 TACACS+ client and server. TACACS+ server
                 administrators SHOULD configure a shared secret with
                 a minimum length of 16 characters.
                 It is highly recommended that this shared secret is
                 at least 32 characters long and sufficiently complex
                 with a mix of different character types,
                 i.e., upper case, lower case, numeric, and
                 punctuation.  Note that this security mechanism is
                 best described as 'obfuscation' and not 'encryption'
                 as it does not provide any meaningful integrity,
                 privacy, or replay protection.";
              reference
                "RFC 8907: The TACACS+ Protocol";
              nacm:default-deny-all;
            }
          }
        }
        choice source-type {
          description
            "The source address type for outbound TACACS+ packets.";
          case source-ip {
            leaf source-ip {
              type inet:ip-address;
              description
                "Specifies the source IP address for TACACS+ outbound
                 packets.";
            }
          }
          case source-interface {
            leaf source-interface {
              type if:interface-ref;
              description
                "Specifies the interface from which the IP address
                 is derived for use as the source for outbound
                 TACACS+ packets.";
            }
          }
        }
        leaf vrf-instance {
          type leafref {
            path "/ni:network-instances/ni:network-instance/ni:name";
          }
          must "(not(../source-interface)) or "
             + "(current() = /if:interfaces/if:interface"
             + "[if:name = current()/../source-interface]"
             + "/bind-ni-name)" {
            error-message
              "VRF instance must match the network instance of the 
               source interface.";
          }
          description
            "Specifies the VPN Routing and Forwarding (VRF) instance
             to use to communicate with the TACACS+ server.
             If 'source-interface' is configured, this value MUST 
             match the network instance bound to the source interface
             (via bind-ni-name).";
          reference
            "RFC 8529: YANG Data Model for Network Instances";
        }
        leaf single-connection {
          type boolean;
          default "false";
          description
            "Indicates whether the Single Connection Mode is enabled
             for the server.";
          reference
            "RFC 8907: The TACACS+ Protocol, Section 4.3";
        }
        leaf timeout {
          type uint16 {
            range "1..max";
          }
          units "seconds";
          default "5";
          description
            "The number of seconds that the device will wait for a
             response from each TACACS+ server before trying with a
             different server.";
        }
        uses statistics;
      }
    }
  }

  augment "/sys:system" {
    description
      "Augments the system model with the tacacs-plus data nodes.";
    uses tacacs-plus;
  }
}
<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section is modeled after the template described in <xref section="3.7" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t>
      <t>The "ietf-ac-common" YANG module defines a data model that is
designed to be accessed via YANG-based management protocols, such as
NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. These protocols have to
use a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and
QUIC <xref target="RFC9000"/>) and have to use mutual authentication.</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).  All writable data nodes are likely to be reasonably
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.  The following subtrees and data nodes
have particular sensitivities/vulnerabilities:</t>
      <dl>
        <dt>'server':</dt>
        <dd>
          <t>This list contains the data nodes used
to control the TACACS+ servers used by the device. Unauthorized
access to this list could enable an attacker to assume complete
control over the device by pointing to a compromised TACACS+
server, or to modify the counters to hide attacks against the
device.</t>
        </dd>
        <dt>'shared-secret':</dt>
        <dd>
          <t>This leaf controls the key
known to both the TACACS+ client and server. Unauthorized access
to this leaf could make the device vulnerable to attacks;
therefore, it has been restricted using the "default-deny-all"
access control defined in <xref target="RFC8341"/>.  When setting, it is highly
recommended that the leaf is at least 32 characters long and
sufficiently complex with a mix of different character types,
i.e., upper case, lower case, numeric, and punctuation.</t>
        </dd>
        <dt>'client-identity' and 'server-authentication':</dt>
        <dd>
          <t>Any modification to a key or reference to a key may dramatically alter the implemented security policy. For this reason, the NACM extension "default-deny-write" has been set.</t>
        </dd>
      </dl>
      <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="RFC9642"/> and <xref section="5.3" sectionFormat="of" target="RFC9645"/> 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 update 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-tacacs-plus
   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-tacacs-plus
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-system-tacacs-plus
   Prefix:  sys-tcs-plus
   Maintained by IANA?  N
   Reference:  RFC XXXX
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="27" month="January" year="2025"/>
            <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 TACACS+ 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-17"/>
        </reference>
        <reference anchor="RFC8342">
          <front>
            <title>Network Management Datastore Architecture (NMDA)</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8342"/>
          <seriesInfo name="DOI" value="10.17487/RFC8342"/>
        </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="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </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="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </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="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC8529">
          <front>
            <title>YANG Data Model for Network Instances</title>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="D. Bogdanovic" initials="D." surname="Bogdanovic"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document defines a network instance module. This module can be used to manage the virtual resource partitioning that may be present on a network device. Examples of common industry terms for virtual resource partitioning are VPN Routing and Forwarding (VRF) instances and Virtual Switch Instances (VSIs).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8529"/>
          <seriesInfo name="DOI" value="10.17487/RFC8529"/>
        </reference>
        <reference anchor="RFC9640">
          <front>
            <title>YANG Data Types and Groupings for Cryptography</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" 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="RFC" value="9640"/>
          <seriesInfo name="DOI" value="10.17487/RFC9640"/>
        </reference>
        <reference anchor="RFC9641">
          <front>
            <title>A YANG Data Model for a Truststore</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" 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="RFC" value="9641"/>
          <seriesInfo name="DOI" value="10.17487/RFC9641"/>
        </reference>
        <reference anchor="RFC9642">
          <front>
            <title>A YANG Data Model for a Keystore</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" 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="RFC" value="9642"/>
          <seriesInfo name="DOI" value="10.17487/RFC9642"/>
        </reference>
        <reference anchor="RFC9645">
          <front>
            <title>YANG Groupings for TLS Clients and TLS Servers</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="October" year="2024"/>
            <abstract>
              <t>This document presents four YANG 1.1 modules -- three IETF modules and one supporting IANA module.</t>
              <t>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.</t>
              <t>The IANA module is "iana-tls-cipher-suite-algs". This module defines YANG enumerations that provide support for an IANA-maintained algorithm registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9645"/>
          <seriesInfo name="DOI" value="10.17487/RFC9645"/>
        </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="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="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="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="RFC2865">
          <front>
            <title>Remote Authentication Dial In User Service (RADIUS)</title>
            <author fullname="C. Rigney" initials="C." surname="Rigney"/>
            <author fullname="S. Willens" initials="S." surname="Willens"/>
            <author fullname="A. Rubens" initials="A." surname="Rubens"/>
            <author fullname="W. Simpson" initials="W." surname="Simpson"/>
            <date month="June" year="2000"/>
            <abstract>
              <t>This document describes a protocol for carrying authentication, authorization, and configuration information between a Network Access Server which desires to authenticate its links and a shared Authentication Server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2865"/>
          <seriesInfo name="DOI" value="10.17487/RFC2865"/>
        </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="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="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="14" month="January" year="2025"/>
            <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.  The document also updates RFC 6020 by
   clarifying how modules and their revisions are handled by IANA.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis-22"/>
        </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="RFC4252">
          <front>
            <title>The Secure Shell (SSH) Authentication Protocol</title>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4252"/>
          <seriesInfo name="DOI" value="10.17487/RFC4252"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
    </references>
    <?line 1226?>

<section anchor="example-tacacs-authentication-configuration-with-shared-secret">
      <name>Example TACACS+ Authentication Configuration with Shared Secret</name>
      <t><xref target="ex9105"/> shows an example where a TACACS+ authentication server instance is configured using shared secret for authentication.</t>
      <figure anchor="ex9105">
        <name>Example with Shared Secret</name>
        <sourcecode type="json"><![CDATA[
{
  "ietf-system:system": {
    "authentication": {
      "user-authentication-order": [
        "ietf-system-tacacs-plus:tacacs-plus",
        "ietf-system:local-users"
      ]
    },
    "ietf-system-tacacs-plus:tacacs-plus": {
      "server": [
        {
          "name": "tac_plus1",
          "server-type": "authentication",
          "address": "192.0.2.2",
          "shared-secret": "QaEfThUkO198010075460923+h3TbE8n",
          "source-ip": "192.0.2.12",
          "timeout": 10
        }
      ]
    }
  }
}
]]></sourcecode>
      </figure>
      <t><xref target="ex9105-vrf"/> provides an example to associate a TACACS+ server with a VRF.</t>
      <figure anchor="ex9105-vrf">
        <name>Example with VRF</name>
        <sourcecode type="json"><![CDATA[
{
  "ietf-network-instance:network-instances": {
    "network-instance": [
      {
        "name": "MANAGEMENT_VRF",
        "description": "Management VRF for TACACS+ traffic isolation"
      }
    ]
  },
  "ietf-system:system": {
    "authentication": {
      "user-authentication-order": [
        "ietf-system-tacacs-plus:tacacs-plus",
        "ietf-system:local-users"
      ]
    },
    "ietf-system-tacacs-plus:tacacs-plus": {
      "server": [
        {
          "name": "tac_plus1",
          "server-type": "authentication",
          "address": "192.0.2.2",
          "shared-secret": "QaEfThUkO198010075460923+h3TbE8n",
          "source-ip": "192.0.2.12",
          "vrf-instance": "MANAGEMENT_VRF",
          "timeout": 10
        }
      ]
    }
  }
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="tacacstls-examples">
      <name>TACACS+TLS Examples</name>
      <t>This section provides examples to illustrate the configuration of TACACS+TLS clients.</t>
      <t>These examples follow the convention used in <xref section="1.5" sectionFormat="of" target="RFC9645"/> for binary data that has been base64 encoded.</t>
      <section anchor="example-tacacs-authentication-configuration-with-explicit-certificate-definitions">
        <name>Example TACACS+ Authentication Configuration with Explicit Certificate Definitions</name>
        <t><xref target="exin"/> shows a configuration example with 'inline-definition' for the client identity and server authentication.</t>
        <figure anchor="exin">
          <name>Example with TACACS+TLS with Inline Certificate Definitions</name>
          <sourcecode type="json"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "ietf-system:system": {
    "authentication": {
      "user-authentication-order": [
        "ietf-system-tacacs-plus:tacacs-plus",
        "ietf-system:local-users"
      ]
    },
    "ietf-system-tacacs-plus:tacacs-plus": {
      "server": [
        {
          "name": "instance-1",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "2001:db8::1",
          "port": 1234,
          "client-identity": {
            "certificate": {
              "inline-definition": {
                "public-key-format": "ietf-crypto-types:subject-\
                                             public-key-info-format",
                "public-key": "BASE64VALUE=",
                "private-key-format": "ietf-crypto-types:rsa-private\
                                                        -key-format",
                "cleartext-private-key": "BASE64VALUE=",
                "cert-data": "BASE64VALUE="
              }
            }
          },
          "server-authentication": {
            "ca-certs": {
              "inline-definition": {
                "certificate": [
                  {
                    "name": "CA-Certificate-1",
                    "cert-data": "BASE64VALUE="
                  }
                ]
              }
            }
          },
          "hello-params": {
            "tls-versions": {
              "min": "ietf-tls-common:tls13",
              "max": "ietf-tls-common:tls13"
            },
            "cipher-suites": {
              "cipher-suite": [
                "TLS_AES_128_GCM_SHA256"
              ]
            }
          },
          "single-connection": false,
          "timeout": 10
        }
      ]
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="example-tacacs-authentication-configuration-with-certificate-references">
        <name>Example TACACS+ Authentication Configuration with Certificate References</name>
        <t><xref target="ex-ref"/> shows a configuration example with credential references for multiple service instances: four server instances are configured with all using the same credentials. These instances form a redundancy group for both IPv4 and IPv6.</t>
        <figure anchor="ex-ref">
          <name>Example with TACACS+TLS with References</name>
          <sourcecode type="json"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "ietf-system:system": {
    "ietf-system-tacacs-plus:tacacs-plus": {
      "client-credentials": [
        {
          "id": "client-cred-1",
          "certificate": {
            "inline-definition": {
              "public-key-format": "ietf-crypto-types:subject-public\
                                                   -key-info-format",
              "public-key": "BASE64VALUE=",
              "private-key-format": "ietf-crypto-types:rsa-private-\
                                                         key-format",
              "cleartext-private-key": "BASE64VALUE=",
              "cert-data": "BASE64VALUE="
            }
          }
        }
      ],
      "server-credentials": [
        {
          "id": "server-cred-1",
          "ca-certs": {
            "inline-definition": {
              "certificate": [
                {
                  "name": "CA-Certificate-1",
                  "cert-data": "BASE64VALUE="
                }
              ]
            }
          }
        }
      ],
      "server": [
        {
          "name": "primary-v6",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "2001:db8::1",
          "port": 1234,
          "client-identity": {
            "credentials-reference": "client-cred-1"
          },
          "server-authentication": {
            "credentials-reference": "server-cred-1"
          }
        },
        {
          "name": "backup-v6",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "2001:db8::2",
          "port": 1234,
          "client-identity": {
            "credentials-reference": "client-cred-1"
          },
          "server-authentication": {
            "credentials-reference": "server-cred-1"
          }
        },
        {
          "name": "primary-v4",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "192.0.2.1",
          "port": 49,
          "client-identity": {
            "credentials-reference": "client-cred-1"
          },
          "server-authentication": {
            "credentials-reference": "server-cred-1"
          }
        },
        {
          "name": "backup-v4",
          "server-type": "authentication",
          "domain-name": "tacacs.example.com",
          "sni-enabled": true,
          "address": "192.0.2.2",
          "port": 49,
          "client-identity": {
            "credentials-reference": "client-cred-1"
          },
          "server-authentication": {
            "credentials-reference": "server-cred-1"
          }
        }
      ]
    }
  }
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="sec-full">
      <name>Full Tree</name>
      <t>The full tree structure is shown below:</t>
      <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

module: ietf-system-tacacs-plus

  augment /sys:system:
    +--rw tacacs-plus
       +--rw client-credentials* [id] {credential-reference}?
       |  +--rw id                       string
       |  +--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-credentials* [id] {credential-reference}?
       |  +--rw id                 string
       |  +--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 server* [name]
          +--rw name                           string
          +--rw server-type
          |       tacacs-plus-server-type
          +--rw domain-name?                   inet:domain-name
          +--rw sni-enabled?                   boolean
          +--rw address                        inet:host
          +--rw port?                          inet:port-number
          +--rw (security)
          |  +--:(tls)
          |  |  +--rw client-identity!
          |  |  |  +--rw (ref-or-explicit)?
          |  |  |     +--:(ref)
          |  |  |     |  +--rw credentials-reference?
          |  |  |     |          sys-tcs-plus:client-credentials-ref
          |  |  |     |          {credential-reference}?
          |  |  |     +--:(explicit)
          |  |  |        +--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 (ref-or-explicit)?
          |  |  |     +--:(ref)
          |  |  |     |  +--rw credentials-reference?
          |  |  |     |          sys-tcs-plus:server-credentials-ref
          |  |  |     |          {credential-reference}?
          |  |  |     +--:(explicit)
          |  |  |        +--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
          |  +--:(obfuscation)
          |     +--rw shared-secret?           string
          +--rw (source-type)?
          |  +--:(source-ip)
          |  |  +--rw source-ip?               inet:ip-address
          |  +--:(source-interface)
          |     +--rw source-interface?        if:interface-ref
          +--rw vrf-instance?
          |       -> /ni:network-instances/network-instance/name
          +--rw single-connection?             boolean
          +--rw timeout?                       uint16
          +--ro statistics
             +--ro discontinuity-time?    yang:date-and-time
             +--ro connection-opens?      yang:counter64
             +--ro connection-closes?     yang:counter64
             +--ro connection-aborts?     yang:counter64
             +--ro connection-failures?   yang:counter64
             +--ro connection-timeouts?   yang:counter64
             +--ro messages-sent?         yang:counter64
             +--ro messages-received?     yang:counter64
             +--ro errors-received?       yang:counter64
             +--ro sessions?              yang:counter64
             +--ro cert-errors?           yang:counter64
             +--ro rpk-errors?            yang:counter64
                     {tlsc:server-auth-raw-public-key}?
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The document leverages data structures defined in <xref target="RFC9645"/>.</t>
      <t>Thanks to Joe Clarke and Tom Petch for the review and comments.</t>
      <t>Thanks to Reshad Rahman for the yangdoctors review.</t>
      <dl>
        <dt>Acknowledgments from RFC 9105:</dt>
        <dd>
          <t>The authors wish to thank Alex Campbell, John Heasley, Ebben Aries,
 Alan DeKok, Joe Clarke, Tom Petch, Robert Wilton, and many others for
 their helpful comments and suggestions.</t>
        </dd>
      </dl>
    </section>
  </back>
  <!-- ##markdown-source:
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
v90/AQA=

-->

</rfc>
