<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
    There has to be one entity for each item to be referenced. 
    An alternate method (rfc include) is described in the references. -->

<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">

]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std" docName="draft-xia-i2nsf-security-policy-object-00" ipr="trust200902">

 <front>

   <title abbrev="Policy Object for I2NSF">Policy Object for Interface to Network Security Functions (I2NSF)</title> 

   <author fullname="Liang Xia" initials="L.X." surname="Xia">
     <organization>Huawei</organization>

     <address>
       <postal>
         <street>101 Software Avenue, Yuhuatai District</street>

         <city>Nanjing</city>

         <region>Jiangsu</region>

         <code>210012</code>

         <country>China</country>
       </postal>

       <phone></phone>

       <email>Frank.xialiang@huawei.com</email>

     </address>
   </author>

   <author fullname="Qiushi Lin" initials="Q.L." surname="Lin">
     <organization>Huawei</organization>

     <address>
       <postal>
         <street>Huawei Industrial Base</street>

         <city>Shenzhen</city>

         <region>Guangdong</region>

         <code>518129</code>

         <country>China</country>
       </postal>

       <phone></phone>

       <email>linqiushi@huawei.com</email>

     </address>
   </author>
   
   <date year="2017" />


   <area>Security</area>

   <workgroup>Interface to Network Security Functions (I2NSF)</workgroup>

   <keyword>Policy Object</keyword>

   <abstract>
     <t>This document describes policy objects used in the Interface to Network Security Functions (I2NSF) policy rules
	    and defines the attributes of each policy object.</t>
   </abstract>
 </front>

 
 <middle>
 
   <section title="Introduction">
     <t>
	 I2NSF policy consists of policy rules that are used to provision NSF instances. 
	 The I2NSF policy rule is defined by using "Event-Condition-Action" (ECA) model described in <xref target="I-D.ietf-i2nsf-framework">Framework for Interface to Network Security Functions</xref>.
	 In the ECA model, a condition is used to determine whether or not the predefined actions should be executed.
	 A condition usually consists of several attributes. 
	 <xref target="I-D.ietf-i2nsf-capability">Information Model of NSFs Capabilities</xref> describes or illustrates attributes of different Condition subclasses.
	 
	 When configuring policy rules by using attributes, it is no surprise to see that the same value of an attribute or the same value set of several attributes are configured for several times or more.
	 And modifications of the policy rules are also very complex and time-consuming.
	 </t>
	 
	 <t>
	 To facilitate the provisioning of NSF instances, this document describes a set of policy objects which are reusable and can be referenced by variable I2NSF policy rules.
	 A policy object can be identified by a set of data items, such as IP addresses, TCP/UDP ports, and domain names.
	 Each policy object is predefined and named in order to be used in I2NSF policy rules.
	 By defining policy objects, the creation and maintenance of policy rules are greatly simplified.
	 </t>
	 <t><list style="symbols">
	 <t>A policy object can be referenced in different policy rules as required to provide re-usability. And a policy rule can reference several policy objects.</t>
	 <t>The modification of a policy object will be propagated to the I2NSF policy rules that reference this object. No modification should be made to the related policy rules.
	 </t>
	 </list></t>
	
	 <t>In this document, a set of policy objects are described, and for each policy object, several related attributes are defined. 
	 </t>

   </section>
   
   <section title="Requirements Language">
       <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
       "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
       document are to be interpreted as described in <xref
       target="RFC2119">RFC 2119</xref>.</t>
   </section>

   <section title="Terminology">
   <t>This document uses the terminology described in <xref target="I-D.ietf-i2nsf-terminology">Interface to Network Security Functions (I2NSF) Terminology</xref>.</t>
   
   </section>
   
   <section title="Policy Object">
   
     <t>
	 Policy objects are collections of commonly used condition attributes.   
	 Different policy objects consist of different attributes. 
	 For each policy object, a description of this policy object may be an optional attribute.
	 The following figure shows the policy objects defined in this document.
	 </t>
	 
	 <figure align="center" anchor="figure_structure" title="The policy objects">
   

       <artwork align="left"><![CDATA[

Policy Object
|
+---Address Object
|   
+---Address Group Object
|  
+---Domain Group Object
|   
+---Region Object
|
+---Region Group Object
|   
+---Service Object
|
+---Service Group Object
|
+---Application Object
|
+---Application Group Object
|
+---Schedule Object
|
+---User Object
|
+---User Group Object
|
+---Security Group Object
           ]]></artwork>

       
     </figure>
   
   
     <section title="Address Object">
	 
		<t>An address object is a collection of IPv4/IPv6 addresses or MAC addresses. 	
		It consists of the following attributes:	 
		</t>
		
		<section title="The addressName Attribute">
			<t>This attribute defines the unique name of the address object. </t>
		</section>
		
		<section title="The addressRange Attribute">
			<t>This attribute defines a set of IPv4/IPv6 addresses or MAC addresses, or a range of contiguous IPv4/IPv6 addresses.</t>
			<t>The IPv4 address range can be defined by IPv4 address with wildcard mask, or IPv4 address with subnet mask (subnet mask address or length of the subnet mask), 
			or the start address and the end address of the IPv4 address range. </t>
			<t>The IPv6 address range can be defined by IPv6 address with length of the prefix, or the start address and the end address of the IPv6 address range. 
			</t> 
		</section>
	 
     </section>
	 
     <section title="Address Group Object">
	 
		<t>An address group object is composed of several address items that require the same policy enforcement. 
		An address item can be an IPv4/IPv6 address, or a MAC address, or a range of contiguous IPv4/IPv6 addresses, or existing address object, or existing address group object.
		An address group object consists of the following attributes: 
		</t>
		
		<section title="The addressGroupName Attribute">
			<t>This attribute defines the unique name of the address group object.</t>
		</section>
	 
		<section title="The addressReference Attribute">
			<t>This attribute refers to the existing address objects or existing address group objects identified by their unique names.</t>
		</section>
		
		<section title="The addressRange Attribute">
			<t>This attribute is the same as the addressRange attribute of address object. 
			It can define a set of IPv4/IPv6 addresses or MAC addresses, or a range of contiguous IPv4/IPv6 addresses.</t>
			<t>The IPv4 address range can be defined by IPv4 address with wildcard mask, or IPv4 address with subnet mask (subnet mask address or length of the subnet mask), 
			or the start address and the end address of the IPv4 address range. </t>
			<t>The IPv6 address range can be defined by IPv6 address with length of the prefix, or the start address and the end address of the IPv6 address range. 
			</t>
		</section>
	 
     </section>	 
	 
     <section title="Domain Group Object">
	 
		<t>A domain group object is a collection of domain names that require the same policy enforcement.
		It consists of the following attributes:
		</t>
		
		<section title="The domainGroupName Attribute">
			<t>This attribute defines the unique name of the domain group object.</t>
		</section>
		
		<section title="The domainNameList Attribute">
			<t>This attribute defines a set of domain names.
			The domain name can be matched in two modes: exact match and suffix match. 
			Thus a domain name can be added by using the full string of the domain name (e.g., www.example.com) or a domain name begins with a wildcard (e.g., *.example.com).
			</t>
		</section>
	 
     </section>	 
	 
     <section title="Region Object">
	 
		<t>A region object is an IPv4/IPv6 address of a geographical region or a collection of IPv4/IPv6 addresses located in the same geographical region.
		A set of region objects which can be referenced directly should be predefined by NSFs. 
		A region object consists of the following attributes:
		</t>
		
		<section title="The regionName Attribute">
			<t>This attribute defines the unique name of the region object.
			</t>
		</section>
		
		<section title="The regionLocation Attribute">
			<t>This attribute defines the longitude and latitude of the region. It consists of two sub-attributes: </t>
			<section title="The regionLongitude Attribute">
				<t>This attribute defines the longitude of the region.</t>
			</section>
			<section title="The regionLatitude Attribute">
				<t>This attribute defines the latitude of the region.</t>
			</section>
		</section>
		
		<section title="The regionIPAddress Attribute">
			<t>This attribute defines a set of IPv4/IPv6 addresses or a range of contiguous IPv4/IPv6 addresses. And an IP address can only belong to one region object.</t>
			<t>The IPv4 address range can be defined by IPv4 address with wildcard mask, IPv4 address with subnet mask (subnet mask address or length of the subnet mask), 
			or the start address and the end address of the IPv4 address range. </t>
			<t>The IPv6 address range can be defined by IPv6 address with length of the prefix, or the start address and the end address of the IPv6 address range.
			</t>
		</section>

     </section>	 

     <section title="Region Group Object">
	 
		<t>A region group object is a collection of region objects that require the same policy enforcement.
		It consists of the following attributes:
		</t>
		
		<section title="The regionGroupName Attribute">
			<t>This attribute defines the unique name of the region group object.</t>
		</section>

		<section title="The regionGroupReference Attribute">
			<t>This attribute refers to the existing region objects or region group objects identified by their unique names.
			</t>
		</section>
			
     </section>

     <section title="Service Object">
	 
		<t>A service object is one or more services that can be identified by certain information, such as protocol type, source port number and destination port number.
		A set of well-known services should be predefined by NSFs as service objects to support direct reference.
		A service object consists of the following attributes:
		</t>
		
		<section title="The serviceName Attribute">
			<t>This attribute defines the unique name of the service object.</t>
		</section>
		
		<section title="The serviceList Attribute">
		
			<t>This attribute defined a set of services. A service can be defined by the following sub-attributes.</t>
			
			<section title="The serviceProtocol Attribute">
				<t>This attribute defines the protocol type of the service. 
				The value of this attribute is selected from six types of protocols: TCP, UDP, SCTP, ICMP, ICMPv6 or IP.
				</t>
			</section>
			
			<section title="The serviceProtocolNumber Attribute">
				<t>This attribute defines the protocol number for IP protocol.
				The protocol number is the protocol field value in IP packet which identifies which kind of upper layer protocol is used.
				</t>
			</section>
			
			<section title="The serviceSourcePort Attribute">
				<t>This attribute defines the source port number range for TCP, UDP or SCTP protocol.
                A single port number or a range of port numbers can be set.
				</t>
			</section>
			
			<section title="The serviceDestinationPort Attribute">
				<t>This attribute defines the destination port number range for TCP, UDP or SCTP protocol.
				A single port number or a range of port numbers can be set.
				</t>	
			</section>
			
			<section title="The serviceICMPType Attribute">
				<t>This attribute defines the ICMP/ICMPv6 type for ICMP or ICMPv6 protocol.
				The ICMP/ICMPv6 type can be identified by ICMP/ICMPv6 type number and ICMP/ICMPv6 message code. 
				Thus, this attribute has two sub-attributes: serviceICMPTypeNumber and serviceICMPMessageCode.
				</t>
				<t>The serviceICMPTypeNumber Attribute: 
				It defines the ICMP/ICMPv6 type number and shall be defined together with the serviceICMPMessageCode attribute.
				For example, if the ICMP packet type is Echo, this attribute shall be set to 8 and the serviceICMPMessageCode attribute shall be set to 0.
				</t>
				<t>The serviceICMPMessageCode Attribute: 
				It defines the ICMP/ICMPv6 message code and shall be defined together with the serviceICMPTypeNumber attribute.
				For example, if the ICMP packet type is Echo, this attribute shall be set to 0 and the serviceICMPTypeNumber attribute shall be set to 8.
				</t>
			</section>
			
		</section>
	 
     </section>

     <section title="Service Group Object">
	 
		<t>A service group object is a collection of service objects that require the same policy enforcement. 
		It consists of the following attributes:
		</t>
		
		<section title="The serviceGroupName Attribute">
			<t>This attribute defines the unique name of the service group object.</t>
		</section>
		
		<section title="The serviceReference Attribute">
			<t>This attribute refers to the existing service objects or service group objects identified by their unique names.</t>	
		</section>
		  
     </section>	 
	 
     <section title="Application Object">
	 
		<t>An application object is a kind of application that can be identified by several features, such as category, subcategory or risk level.
		A set of well-known application objects should be predefined by NSFs to support direct reference.
		An application object consists of the following attributes:
		</t>
		
		<section title="The applicationName Attribute">
			<t>This attribute defines the unique name of the application object.</t>
		</section>
		
		<section title="The applicationCategory Attribute">
			<t>This attribute defines the category of the application.
			The value of this attribute is selected from a predefined set of categories, e.g., general category, network application category. 
			</t>
		</section>
		
		<section title="The applicationSubCategory Attribute">
			<t>This attribute defines the subcategory of the application.
			The value of this attribute is selected from a predefined set of subcategories, e.g., search engine subcategory, electronic commerce subcategory.
			</t>
		</section>

		<section title="The applicationTransmissionModel Attribute">
			<t>This attribute defines the data transmission model of the application.
			The value of this attribute is selected from a predefined set of transmission models, e.g., client/server model, peer-to-peer model.
			</t>
		</section>

		<section title="The applicationLabel Attribute">
			<t>This attribute defines a set of labels for the application.
			The values of this attribute are selected from a predefined set of labels, e.g., database, encrypted-communication.
			</t>
		</section>			
		
		<section title="The applicationRiskLevel Attribute">
			<t>This attribute defines a risk level for the application.
			The value of this attribute is selected from a predefined number of risk levels. 
			</t>
		</section>

     </section>

     <section title="Application Group Object">
		
		<t>An application group object is a collection of application objects that require the same policy enforcement. 
		It consists of the following attributes:
		</t>
		
		<section title="The applicationGroupName Attribute">
			<t>This attribute defines the unique name of the application group object.</t>
		</section>
		
		<section title="The applicationReference Attribute">
			<t>This attribute refers to the existing application objects or application group objects identified by their unique names.</t>	
		</section>
		
     </section>

     <section title="Schedule Object">
	 
		<t>A schedule object is a set of time ranges. There are two kinds of time ranges: periodic time range and absolute time range.
		A periodic time range occurs every week. An absolute time range occurs only once.
		A schedule object consists of the following attributes:
		</t>
		
		<section title="The scheduleName Attribute">
			<t>This attribute defines the unique name of the schedule object.</t>
		</section>
		
		<section title="The scheduleList Attribute">
		
			<t>This attribute defines a set of time ranges. A time range can be defined by the following sub-attributes.</t>
			
			<section title="The scheduleType Attribute">
			<t>This attribute defines the type of a time range.
			The value of this attribute is selected from the two types: periodic, absolute.	
			</t>
			</section>
			
			<section title="The scheduleStartTime Attribute">
			<t>
			For a periodic time range, this attribute defines the start time in a day.
		    For an absolute time range, this attribute defines the start time and start date.
			</t>
			</section>

			<section title="The scheduleEndTime Attribute">
			<t>
			For a periodic time range, this attribute defines the end time in a day.
		    For an absolute time range, this attribute defines the end time and end date.
			</t>
			</section>	

			<section title="The scheduleWeekDay Attribute">
			<t>This attribute defines the days in a week that the periodic time range takes effect.			
			</t>
			</section>				
			
		</section>
		
     </section>	 
	 
	 <section title="User Object">
	 
		<t>A user object identifies a person who may access network resources. It is the basis of implementing user-based I2NSF policy.
		The user objects may be created locally on the NSFs, or be imported from third parties, such as authentication servers.
		User objects that require the same policy enforcement are grouped as user group objects or security group objects. 
		The user group objects are organized as a hierarchical structure.
		A security group object consists of user objects from different user group objects that require the same policy enforcement.
		A user object consists of the following attributes:
		</t>	
		
		<section title="The userName Attribute">
			<t>This attribute refers to the user name that used for user authentication.
			</t>
		</section>
		
		<section title="The userParentGroup Attribute">
			<t>This attribute refers to the existing parent user group object to which this user object belongs.
			The parent user group object is identified by its unique name.
			A user object can only belong to one user group object.
			</t>
		</section>
		
		<section title="The userSecurityGroup Attribute">
			<t>This attribute refers to the existing security group object to which this user object belongs.
			The security user group object is identified by its unique name.
			A user object can belong to several security group objects.
			</t>
		</section>
		
		<section title="The userDomain Attribute">
			<t>This attribute refers to the authentication domain to which this user object belongs.
			</t>
		</section>
		
		<section title="The userPassword Attribute">
			<t>If user is authenticated locally on the NSF, this attribute is mandatory. It defines the password corresponding to the user name.
			</t>
		</section>
		
		<section title="The userExpirationTime Attribute">
			<t>This attribute defines when will this user object expire.
			</t>
		</section>
		
		<section title="The userAllowSharing Attribute">
			<t>This attribute defines whether this user account identified by the userName and userPassword attribute is allowed to be shared by different persons.
			If allowed, this user object can be logged on to several devices simultaneously.
			</t>
		</section>
		
		<section title="The userBindingStatus Attribute">
			<t>This attribute defines whether the user object is bound to IP addresses, or MAC addresses, or IP/MAC address pairs.
			It is selected from three binding modes: no binding, unidirectional binding, and bidirectional binding.
			For no binding mode, the user object is not bound to any IP or MAC address or IP/MAC address pair.
			For unidirectional binding mode, the addresses or address pairs bound to this user object also can be bound to other users.
			For bidirectional binding mode, the addresses or address pairs bound to this user should not be bound to other bidirectional binding user object.
			</t>
		</section>
		
		<section title="The userBindingAddress Attribute">
			<t>This attribute defines the bound IP addresses, or MAC addresses, or IP/MAC address pairs.
			If the userBindingStatus is unidirectional binding or bidirectional binding, this attribute is mandatory.
			</t>
		</section>
	 
	 </section>
	 
	 
	 <section title="User Group Object">
		
		<t>A user object group is a collection of user objects that require the same policy enforcement and it usually corresponds to a physical entity such as a department.
		The user group objects are organized as a hierarchical structure. A user group object may belong to another user group object. 
		The user group objects may be created locally on the NSFs, or be imported from third parties, such as authentication servers.
		It consists of the following attributes:
		</t>
		
		<section title="The userGroupName Attribute">
			<t>This attribute defines the unique name of the user group object.
			</t>
		</section>	
		
		<section title="The userGroupParentGroup Attribute">
			<t>This attribute refers to the existing parent user group object to which this user group object belongs.
			The parent user group object is identified by its unique name.
			A user group object can only belong to one parent user group object.
			</t>
		</section>
		
		<section title="The userGroupDomain Attribute">
			<t>This attribute refers to the authentication domain to which this user group object belongs.
			</t>
		</section>
		
		<section title="The userGroupReference Attribute">
			<t>This attribute refers to the existing user objects or user group objects which belong to this user group object.
			</t>
		</section>
		
		<section title="The userGroupAllowSharing Attribute">
			<t>This attribute defines whether the user objects of this user group object are allowed to be shared by different persons.
			If allowed, all user objects of this user group object can be logged on to several devices simultaneously.
			</t>
		</section>
		
	 </section>
	 
	 <section title="Security Group Object">
		<t>A security group object consists of user objects from different user group objects that require the same policy enforcement.
		The security group objects may be created locally on the NSFs, or be imported from third parties, such as authentication servers.
		This attribute consists of the following attributes:
		</t>
		
		<section title="The securityGroupName Attribute">
			<t>This attribute defines the unique name of the security group object.</t>
		</section>
		
		<section title="The securityGroupParentGroup Attribute">
			<t>This attribute refers to the existing parent security group objects to which this security group object belongs.
			The parent security group objects are identified by their unique names.
			</t>
		</section>
		
		<section title="The securityGroupDomain Attribute">
			<t>This attribute refers to the authentication domain to which this security group object belongs.
			</t>
		</section>
		
		<section title="The securityGroupType Attribute">
			<t>This attribute defines the type of the security group object. 
			There are two types: static and dynamic.
			For static security group, the member objects are fixed and added as required.
			For dynamic security group, the member objects are dynamically generated by setting filtering rules.
			</t>
		</section>
		
		<section title="The securityGroupReference Attribute">
			<t>This attribute defines the member objects for static security group object.
			It refers to the existing user objects or security group objects which belong to this security group object.
			</t>
		</section>
		
		<section title="The securityGroupFilters Attribute">
			<t>This attribute defines the filtering rules for dynamic security group object.
			</t>
		</section>
		
		<section title="The securityGroupAllowSharing Attribute">
			<t>This attribute defines whether the user objects of this security group object are allowed to be shared by different persons.
			If allowed, all user objects of this security group object can be logged on to several devices simultaneously.
			</t>
		</section>
		
	 </section>
	 
   </section>
	 
  
   

   <section anchor="Acknowledgements" title="Acknowledgements">
     <t></t>

   </section>


   <section anchor="IANA" title="IANA Considerations">
     <t>This document requires no IANA actions.</t>

   </section>

   <section anchor="Security" title="Security Considerations">
     <t>When the policy objects are transmitted, the integrity of these policy objects should be guaranteed.
	 NSFs should verify that the modifications of policy objects come from the authenticated security controller.
	 And NSF should protect the stored policy objects from being tampered.
	 </t>
   </section>
 </middle>

 <back>


   <references title="Normative References">

     &RFC2119;

 

     <reference target="https://tools.ietf.org/pdf/draft-xibassnez-i2nsf-capability-00.pdf" anchor="I-D.ietf-i2nsf-capability">

       <front>
         <title>Information Model of NSFs Capabilities</title>

         <author initials="L. Xia" surname="Xia">
         </author>
		 
		 <author initials="J. Strassner" surname="Strassner">
         </author>
		 
		 <author initials="D. Zhang" surname="Zhang">
         </author>
		 
		 <author initials="K. Li" surname="Li">
         </author>
		 
		 <author initials="C. Basile" surname="Basile">
         </author>

		 <author initials="A. Lioy" surname="Lioy">
         </author>
		 
		 <author initials="D. Lopez" surname="Lopez">
         </author>
		 
		 <author initials="E. Lopez" surname="Lopez">
         </author>

		 <author initials="N. BOUTHORS" surname="BOUTHORS">
         </author>	

		 <author initials="L. Fang" surname="Fang">
         </author>
		 
         <date year="2016" />
       </front>
     </reference>

	 
   </references>

   <references title="Informative References">

	      <reference target="https://tools.ietf.org/pdf/draft-ietf-i2nsf-terminology-03.pdf" anchor="I-D.ietf-i2nsf-terminology">

       <front>
         <title>Interface to Network Security Functions (I2NSF) Terminology</title>

		 <author initials="S. Hares" surname="Hares">
		 </author>

		 <author initials="J. Strassner" surname="Strassner">
		 </author>
		 
		 <author initials="D. Lopez" surname="Lopez">
         </author>
		 
		 <author initials="L. Xia" surname="Xia">
         </author>
		 
		 <author initials="H. Birkholz" surname="Birkholz">
         </author>
		 
         <date year="2016" />
       </front>
     </reference>

     <reference target="https://tools.ietf.org/pdf/draft-ietf-i2nsf-framework-04.pdf" anchor="I-D.ietf-i2nsf-framework">

       <front>
         <title>Framework for Interface to Network Security Functions</title>

         <author initials="D. Lopez" surname="Lopez">
         </author>
		 
		 <author initials="E. Lopez" surname="Lopez">
         </author>

		 <author initials="L. Dunbar" surname="Dunbar">
         </author>
		 
		 <author initials="J. Strassner" surname="Strassner">
         </author>

		 <author initials="R. Kumar" surname="Kumar">
         </author>	 
		 
         <date year="2016" />
       </front>
     </reference>	
   </references>  

   
 </back>
</rfc>
