One document matched: draft-kumar-i2nsf-client-facing-interface-req-01.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
vim: set softtabstop=2 shiftwidth=2 expandtab
version=20150108
-->
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="no" ?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC7491 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7491.xml">
]>
<rfc category="info"
docName="draft-kumar-i2nsf-client-facing-interface-req-01"
ipr="trust200902">
<front>
<title abbrev="Client Interface Requirements">Requirements for
Client-Facing Interface to Security Controller</title>
<author fullname="Rakesh Kumar" initials="R." surname="Kumar">
<organization>Juniper Networks</organization>
<address>
<postal>
<street>1133 Innovation Way</street>
<city>Sunnyvale</city>
<region>CA</region>
<country>US</country>
<code>94089</code>
</postal>
<email>rkkumar@juniper.net</email>
</address>
</author>
<author fullname="Anil Lohiya" initials="A." surname="Lohiya">
<organization>Juniper Networks</organization>
<address>
<postal>
<street>1133 Innovation Way</street>
<city>Sunnyvale</city>
<region>CA</region>
<country>US</country>
<code>94089</code>
</postal>
<email>alohiya@juniper.net</email>
</address>
</author>
<author fullname="Dave Qi" initials="D." surname="Qi">
<organization>Bloomberg</organization>
<address>
<postal>
<street>731 Lexington Avenue</street>
<city>New York</city>
<region>NY</region>
<country>US</country>
<code>10022</code>
</postal>
<email>DQI@bloomberg.net</email>
</address>
</author>
<author fullname="Nabil Bitar" initials="N." surname="Bitar">
<organization>Nokia</organization>
<address>
<postal>
<street>755 Ravendale Drive</street>
<city>Mountain View</city>
<region>CA</region>
<country>US</country>
<code>94043</code>
</postal>
<email>nabil.bitar@nokia.com</email>
</address>
</author>
<author fullname="Senad Palislamovic" initials="S." surname="Palislamovic">
<organization>Nokia</organization>
<address>
<postal>
<street>755 Ravendale Drive</street>
<city>Mountain View</city>
<region>CA</region>
<country>US</country>
<code>94043</code>
</postal>
<email>senad.palislamovic@nokia.com</email>
</address>
</author>
<author fullname="Liang Xia" initials="L." surname="Xia">
<organization>Huawei</organization>
<address>
<postal>
<street>101 Software Avenue</street>
<city>Nanjing</city>
<region>Jiangsu</region>
<country>China</country>
<code>210012</code>
</postal>
<email>Frank.Xialiang@huawei.com</email>
</address>
</author>
<date year="2016"/>
<area>Security</area>
<workgroup>I2NSF Working Group</workgroup>
<keyword>I2NSF</keyword>
<abstract>
<t>This document captures the requirements for the client-facing
interface to security controller. The interfaces are based on
user-intent instead of developer-specific or device-centric approaches that
would require deep knowledge of specific products and their security
features. The document identifies the requirements needed to enforce the
user-intent based policies onto network security functions (NSFs)
irrespective of how those functions are realized. The function may be
physical or virtual in nature and may be implemented in networking or
dedicated appliances.</t>
</abstract>
</front>
<middle>
<section anchor="introduction" title="Introduction">
<t>Programming security policies in a network has been a fairly complex
task that often requires very deep knowledge of developers' specific
devices. This has been the biggest challenge for both service providers
and enterprises, henceforth named as security administrator in this
document. The challenge is amplified due to virtualization because
security appliances come in both physical and virtual forms and are
supplied by a variety of developers who have their own proprietary
interfaces to manage and implement the security policies on their
devices. </t>
<t>Even if a security administrator deploys a single developer solution
with a set of one or more security functions across its entire network,
it is difficult to manage security policies due to the complexity of
network security features available in the developer devices, and the
difficulty in mapping the user intent to developer-specific
configurations. The security administrator may use asset of
developer-specific APIs or a developer-provided management system that
gives some abstraction in the form of GUI to help provision and manage
security policies. However, the single developer approach is highly
restrictive in today's network for the following reasons: <list
style="symbols">
<t>The security administrator cannot rely on a single developer
because one developer may not be able keep up to date with the
customer security needs or specific deployment models.</t>
<t>A large organization may have a presence across different sites
and regions; which means, it is not possible to have a complete solution
from a single developer due to technical, regulatory or business reasons.</t>
<t>If and when the security administrator migrates from one
developer to another, it is almost impossible to migrate security
policies from one management system to another without complex
manual work.</t>
<t>Security administrators are implementing various security
functions in virtual forms or physical forms to attain the
flexibility, elasticity, performance, and operational efficiency
they require. Practically, that often requires different sources
(developers and open source) that provide the best of breed for any
such security function.</t>
<t>The security administrator might choose various devices or
network services (such as routers, switches, firewall devices, and
overlay-networks) as enforcement points for security policies for
any reason (such as network design simplicity, cost, most-effective
place, scale and performance).</t>
</list></t>
<t>In order to ease the deployment of security policies across different
developers and devices, the Interface to Network Security Functions
(I2NSF) working group in the IETF is defining a client-facing interface
from the security controller to clients [I-D. ietf-i2nsf-framework]
[I-D. ietf-i2nsf-terminology]. The easiness of deployment should be
agnostic to type of device, be it physical or virtual, or type of the
policy, be it dynamic or static. Using these interfaces, a user can
write any application (e.g. GUI portal, template engine, etc.) to
control the implementation of security policies on security functional
elements, but this is completely out of scope for the I2NSF working
group. </t>
<t>This document captures the requirements for the client-facing
interface that can be easily used by security administrators without
knowledge of specific security devices or features. We refer to this as
"user-intent" based interfaces. To further clarify, in the scope of this
document, the "user-intent" here does not mean some free-from natural
language input or an abstract intent such as "I want my traffic secure"
or "I don't want DDoS attacks in my network"; rather the user-intent
here means that policies are described using client-oriented expressions
such as application names, application groups, device groups, user
groups etc. with a vocabulary of verbs (e.g., drop, tap, throttle),
prepositions, conjunctions, conditionals, adjectives, and nouns instead
of using standard n-tuples from the packet header.</t>
</section>
<section anchor="conventions" title="Conventions Used in this Document">
<t><list style="hanging">
<t hangText="BSS:">Business Support System</t>
<t hangText="CLI:">Command Line Interface</t>
<t hangText="CMDB:">Configuration Management Database</t>
<t hangText="Controller:">Used interchangeably with Service Provider
Security Controller or management system throughout this
document</t>
<t hangText="CRUD:">Create, Retrieve, Update, Delete</t>
<t hangText="FW:">Firewall</t>
<t hangText="GUI:">Graphical User Interface</t>
<t hangText="IDS:">Intrusion Detection System</t>
<t hangText="IPS:">Intrusion Protection System</t>
<t hangText="LDAP:">Lightweight Directory Access Protocol</t>
<t hangText="NSF:">Network Security Function, defined by <xref
target="I-D.ietf-i2nsf-problem-and-use-cases"/></t>
<t hangText="OSS:">Operation Support System</t>
<t hangText="RBAC:">Role Based Access Control</t>
<t hangText="SIEM:">Security Information and Event Management</t>
<t hangText="URL:">Universal Resource Locator</t>
<t hangText="vNSF:">Refers to NSF being instantiated on Virtual
Machines</t>
</list></t>
</section>
<section anchor="fwk" title="Guiding principles for definition of Client-Facing Interfaces">
<t>The "Client-Facing Interface" ensures that a security administrator
can deploy any device from any developer and still be able to use same
consistent interface. In essence, these interfaces provide a management
framework to manage security administrator's security policies.
Henceforth in this document, we use "security policy management
interface" interchangeably when we refer to the client-facing
interface.</t>
<section anchor="user-intent"
title="User-intent based modeling">
<t>Traditionally, security policies have been expressed using proprietary
interfaces. These interfaces are defined by a developer either based on CLI
or a GUI system; but more often these interfaces are built using developer
specific networking construct such IP address, protocol and application constructs
with L4-L7 information. This requires security operators to translate
their oragnzational business objectives into actionable security policies on
security device using developers policy constructs. But, this alone is not
sufficient to render policies in the network as operator also need to
identify the device where the policy need to be applied in a complex network
environment with multiple policy enforcement points.</t>
<t>The User-intent based framework defines constructs such as user-group,
application-group, device-group and location group. The security operator would
use these constructs to express a security policy instead of proprietary
constructs. The policy defined in such a manner is referred to user-intent based
policies in this draft. The idea is to enable security operator to use constructs
they knows best in expressing security policies; which simplify their tasks and
help in avoiding human errors in complex security provisioing. </t>
</section>
<section anchor="guide"
title="Basic rules for interface definition">
<t>The basic rules in defining the client-facing interfaces are as
following: <list style="symbols">
<t>Agnostic of network topology and NSF location in the
network.</t>
<t>Agnostic to the features and capabilities supported in
NSFs.</t>
<t>Agnostic to the resources available in NSFs or resources
available for various features/capabilities.</t>
<t>Agnostic to the network function type, be it stateful firewall,
IDP, IDS, Router, Switch.</t>
<t>Declarative/Descriptive model instead of
Imperative/Prescriptive model - What security policies need to
enforce (declarative) instead of how they would be actually
implemented (imperative).</t>
<t>Agnostic of developer, implementation and form-factor
(physical, virtual).</t>
<t>Agnostic to how NSF is implemented and its hosting
environment.</t>
<t>Agnostic to how NSF becomes operational - Network connectivity
and other hosting requirements</t>
<t>Agnostic to NSF control plane implementation (if there is one)
E.g., cluster of NSF active as one unified service for scale and/
or resilience.</t>
<t>Agnostic to NSF data plane implementation i.e. Encapsulation,
Service function chains.</t>
</list></t>
</section>
<section anchor="models"
title="Independent of deployment models">
<t>This document does not describe requirements for NSF-facing interface;
they are expected to be defined in a separate draft. This draft
does not mandate a specific deployment model but rather shows how client
interfaces remain the same and interact with the overall security framework from
security administrator's perspective.</t>
<t>Traditionally, medium and larger operators deploy management
systems to manage their statically-defined security policies. This
approach may not be suitable nor sufficient for modern automated and
dynamic data centers that are largely virtualized and rely on various
management systems and controllers to dynamically implement security
policies over any types of resources.</t>
<t>There are two different deployment models in which the
client-facing interface referred to in this document could be
implemented. These models have no direct impact on the client-facing
interface, but illustrate the overall security policy and management
framework and where the various processing functions reside. These
models are: <list style="letters">
<t>Management without an explicit management system for control of
devices and NSFs. In this deployment, the security controller acts
as a NSF policy management system that takes information passed
over the client security policy interface and translates into data on
the I2NSF southbound interface. The I2NSF interfaces are
implemented by security device/function developers. This would
usually be done by having an I2NSF agent embedded in the security
device or NSF. This deployment model is shown in <xref
target="without"/>. <figure anchor="without"
title="Deployment without Management System">
<artwork>
RESTful API
SUPA or I2NSF Policy Management
^
Client-facing |
Security Policy Interface |
(Independent of individual |
NSFs, devices,and developers)|
|
------------------------------
| |
| Security Controller |
| |
------------------------------
| ^
Southbound Security | I2NSF |
Capability Interface | NSF-facing |
(Specific to NSFs) | Interface |
..............................
| |
v |
------------- -------------
| I2NSF Agent | | I2NSF Agent |
|-------------| |-------------|
| |---| |
| NSF | | NSF |
NSFs | | | |
(virtual -------------\ /-------------
and | \ / |
physical) | X |
| / \ |
-------------/ \-------------
| I2NSF Agent | | I2NSF Agent |
|-------------| |-------------|
| |---| |
| NSF | | NSF |
| | | |
------------- -------------
</artwork>
</figure></t>
<t>Management with an explicit management system for control of
devices and NSFs. This model is similar to the model above except
that security controller interacts with a dedicated management
system which could either proxy I2NSF southbound interfaces or
could provide a layer where security devices or NSFs do not
support an I2NSF agent to process I2NSF southbound interfaces.
This deployment model is shown in <xref target="with"/>. <figure
anchor="with"
title="Deployment with Management System or I2NSF Proxy Agent">
<artwork>
RESTful API
SUPA or I2NSF Policy Management
^
Client-facing |
Security Policy Interface |
(Independent of individual |
NSFs,devices,and developers) |
|
------------------------------
| |
| Security Controller |
| |
------------------------------
| ^
Southbound Security | I2NSF |
Capability Interface | NSF-facing |
(Specific to NSFs) | Interface |
..............................
| |
v |
------------------------------
| |
| I2NSF Proxy Agent / |
| Management System |
| |
------------------------------
| ^
| Proprietary |
| Functional |
| Interface |
..............................
| |
v |
------------- -------------
| |---| |
| NSF | | NSF |
NSFs | | | |
(virtual -------------\ /-------------
and | \ / |
physical) | X |
| / \ |
-------------/ \-------------
| |---| |
| NSF | | NSF |
| | | |
------------- -------------
</artwork>
</figure></t>
</list></t>
<t>Although the deployment models discussed here don't necessarily
affect the client security policy interface, they do give an
overall context for defining a security policy interface based on
abstraction.</t>
</section>
</section>
<section anchor="requirements"
title="Functional Requirements for the Client-Facing Interface">
<t>As stated in the guiding principles for defining I2NSF client-facing
interface, the security policies and the client-facing interface shall
be defined from a user/client perspective and abstracted away from the
type of NSF, NSF specific implementation, controller implementation, NSF
topology, NSF interfaces, controller southbound interfaces. Thus, the
security policy definition shall be declarative, expressing the
user/client intent, and driven by how security administrators view
security policies from the definition, communication and deployment
perspective.</t>
<t>The security controller's implementation is outside the scope of this
document and the I2NSF working group.</t>
<t>At a high level, the requirements for the client-facing interface in
order to express and build security policies are as follows: <list
style="symbols">
<t>Multi-Tenancy</t>
<t>Authentication and Authorization</t>
<t>Role-Based Access Control (RBAC)</t>
<t>Protection from Attacks</t>
<t>Protection from Misconfiguration</t>
<t>Policy Lifecycle Management</t>
<t>Dynamic Policy Endpoint Groups</t>
<t>Policy Rules</t>
<t>Policy Actions</t>
<t>Generic Policy Model</t>
<t>Policy Conflict Resolution</t>
<t>Backward Compatibility</t>
<t>Third-Party Integration</t>
<t>Telemetry Data</t>
</list></t>
<t>The above constructs are by no means a complete list and may not be
sufficient for all use-cases and all operators, but should be a good
start for a wide variety of use-cases in both Service Provider networks
and Enterprise networks.</t>
<section anchor="tenancy" title="Requirement for Multi-Tenancy">
<t>A security administrator that uses security policies may have
internal tenants and would like to have a framework wherein each
tenant manages its own security policies to provide isolation across
different tenants.</t>
<t>An operator may be a cloud service provider with multi-tenant
deployments where each tenant is a different organization and must
allow complete isolation across different tenants.</t>
<t>It should be noted that tenants in turn can have their own tenants,
so a recursive relation exists. For instance, a tenant in a cloud
service provider may have multiple departments or organizations that
need to manage their own security rules. </t>
<t>Some key concepts are listed below and used throughout the document
hereafter:<list style="hanging">
<t hangText="Policy-Tenant:">An entity that owns and manages the
security Policies applied on itself. </t>
<t hangText="Policy-Administrator:">A user authorized to manage
the security policies for a Policy-Tenant.</t>
<t hangText="Policy-User:">A user within a Policy-Tenant who is
authorized to access certain resources of that tenant according to
the security policies of the Policy-Tenant.</t>
<t hangText="Policy-User-Group:">A collection of Policy-Users.
This group identifies a set of users based on a policy tag or on
static information. The tag to identify the user is dynamically
derived from systems such as Active Directory or LDAP. For
example, an operator may have different user-groups, such as
HR-users, Finance-users, Engineering-users, to classify a set of
users in each department. </t>
</list></t>
</section>
<section anchor="Authentication"
title="Requirement for Authentication and Authorization">
<t>Security administrators MUST authenticate to and be authorized by
security controller before they are able to issue control commands and
any policy data exchange commences. </t>
<t>There must be methods defined for Policy-Administrator be
authenticated and authorized to use the security controller. There are
several authentication methods available such as OAuth, XAuth and
X.509 certificate based. The authentication scheme between
Policy-Administrator and security controller may also be mutual
instead of one-way. Any specific method may be determined based on
organizational and deployment needs and outside the scope of I2NSF. In
addition, there must be a method to authorize the Policy-Administrator
for performing certain action. It should be noted that, depending on
the deployment model, Policy-Administrator authentication and
authorization to perform actions communicated to the controller could
be performed as part of a portal or another system prior to
communication the action to the controller. </t>
</section>
<section anchor="RBAC"
title="Requirement for Role-Based Access Control (RBAC)">
<t>Policy-Authorization-Role represents a role assigned to a
Policy-User or Policy-User Group that determines whether the user or
the user-group has read-write access, read-only access, or no access
for certain resources. A User or a User-Group can be mapped to a
Policy-Authorization- Role using an internal or external identity
provider or mapped statically. </t>
</section>
<section anchor="Attacks"
title="Requirement for Protection from Attacks">
<t>There Must be protections from attacks, malicious or otherwise,
from clients or a client impersonator. Potential attacks could come
from a botnet or a host or hosts infected with virus or some
unauthorized entity. It is recommended that security controller use
adedicated IP interface for client-facing communications and those
communications should be carried over an isolated out-of-band network.
In addition, it is recommended that traffic between clients and
security controllers be encrypted. Furthermore, some straightforward
traffic/session control mechanisms (i.e., Rate-limit, ACL, White/Black
list) can be employed on the security controller to defend against
DDoS flooding attacks.</t>
</section>
<section anchor="Misconfiguration"
title="Requirement for Protection from Misconfiguration">
<t>There Must be protections from mis-configured clients,
unintentional or otherwise. System and policy validations should be
implemented. Validation may be based on a set of default parameters or
custom tuned thresholds such as # of policy changes submitted; # of
objects requested in given time interval, etc.</t>
</section>
<section anchor="Lifecycle"
title="Requirement for Policy Lifecycle Management">
<t>In order to provide more sophisticated security framework, there
should be a mechanism to express that a policy becomes dynamically
active/enforced or inactive based on either security administrator
intervention or an event.</t>
<t>One example of dynamic policy management is when the security
administrator pre-configures all the security policies, but the
policies get activated/enforced or deactivated based on dynamic
threats faced by the security administrator. Basically, a threat event
may activate certain inactive policies, and once a new event indicates
that the threat has gone away, the policies become inactive again.</t>
<t>There are four models for dynamically activating policies:</t>
<t>o The policy may be dynamically activated by the I2NSF client or
associated management entity, and dynamically communicated over the
I2NSF client-facing interface to the controller to program I2NSF
functions using the I2NSF NSF-facing interface </t>
<t>o The policy may be pulled dynamically by the controller upon
detecting an event over the I2NSF monitoring interface</t>
<t>o The policy may be statically pushed to the controller and
dynamically programmed on the NSFs upon potentially detecting another
event</t>
<t>o The policy can be programmed in the N2SFs functions, and
activated/deactivated upon policy attributes, like time or admin
enforced.</t>
<t>The client-facing interface should support the following policy
attributes for policy enforcement: <list style="hanging">
<t hangText="Admin-Enforced:">The policy, once configured, remains
active/enforced until removed by the security administrator.</t>
<t hangText="Time-Enforced:">The policy configuration specifies
the time profile that determines when policy is
activated/enforced. Otherwise, it is de-activated.</t>
<t hangText="Event-Enforced:">The policy configuration specifies
the event profile that determines when policy is
activated/enforced. It also specifies the duration attribute of
that policy once activated based on event. For instance, if the
policy is activated upon detecting an application flow, the policy
could be de-activated when the corresponding session is closed or
the flow becomes inactive for certain time.</t>
</list></t>
<t>A policy could be a composite policy, that is composed of many
rules, and subject to updates and modification. For policy maintenance
purposes, enforcement, and auditability, it becomes important to name
and version the policies. Thus, the policy definition SHALL support
policy naming and versioning. In addition, the i2NSF client-facing
interface SHALL support the activation, deactivation, programmability,
and deletion of policies based on name and version. In addition, it
Should support reporting on the state of policies by name and version.
For instance, a client may probe the controller about the current
policies enforced for a tenant and/or a sub-tenant (organization) for
auditability or verification purposes.</t>
</section>
<section anchor="endpoint"
title="Requirement for Dynamic Policy Endpoint Groups">
<t>When the security administrator configures a security policy, the
intention is to apply this policy to certain subsets of the network.
The subsets may be identified based on criteria such as users,
devices, and applications. We refer to such a subset of the network as
a "Policy Endpoint Group".</t>
<t>One of the biggest challenges for a security administrator is how
to make sure that security policies remain effective while constant
changes are happening to the "Policy Endpoint Group" for various
reasons (e.g., organizational changes). If the policy is created based
on static information such as user names, application, or network
subnets, then every time that this static information changes policies
would need to be updated. For example, if a policy is created that
allows access to an application only from the group of Human Resource
users (the HR-users group), then each time the HR- users group
changes, the policy needs to be updated.</t>
<t>Changes to policy could be highly taxing to the security
administrator for various operational reasons. The policy management
framework must allow "Policy Endpoint Group" to be dynamic in nature
so that changes to the group (HR-users in our example) automatically
result in updates to its content.</t>
<t>We call these dynamic Policy Endpoint Groups "Meta-data Driven
Groups". The meta-data is a tag associated with endpoint information
such as users, applications, and devices. The mapping from meta-data
to dynamic content could come either from standards-based or
proprietary tools. The security controller could use any available
mechanisms to derive this mapping and to make automatic updates to the
policy content if the mapping information changes. The system SHOULD
allow for multiple, or sets of tags to be applied to a single network
object.</t>
<t>The client-facing policy interface must support endpoint groups for
user-intent based policy management. The following meta-data driven
groups MAY be used for configuring security polices: <list
style="hanging">
<t hangText="User-Group:">This group identifies a set of users
based on a tag or on static information. The tag to identify user
is dynamically derived from systems such as Active Directory or
LDAP. For example, an operator may have different user-groups,
such as HR-users, Finance-users, Engineering-users, to classify a
set of users in each department.</t>
<t hangText="Device-Group:">This group identifies a set of devices
based on a tag or on static information. The tag to identify
device is dynamically derived from systems such as configuration
mannagement database (CMDB). For example, a security administrator
may want to classify all machines running one operating system
into one group and machines running another operating system into
another group.</t>
<t hangText="Application-Group:">This group identifies a set of
applications based on a tag or on static information. The tag to
identify application is dynamically derived from systems such as
CMDB. For example, a security administrator may want to classify
all applications running in the Legal department into one group
and all applications running under a specific operating system
into another group. In some cases, the application can
semantically associated with a VM or a device. However, in other
cases, the application may need to be associated with a set of
identifiers (e.g., transport numbers, signature in the application
packet payload) that identify the application in the corresponding
packets. The mapping of application names/tags to signatures in
the associated application packets should be defined and
communicated to the NSF. The client-facing Interface shall support
the communication of this information.</t>
<t hangText="Location-Group:">This group identifies a set of
location tags. Tag may correspond 1:1 to location. The tag to
identify location is either statically defined or dynamically
derived from systems such as CMDB. For example, a security
administrator may want to classify all sites/locations in a
geographic region as one group.</t>
</list></t>
</section>
<section anchor="Rules" title="Requirement for Policy Rules">
<t>The security policy rules can be as simple as specifying a match
for the user or application specified through "Policy Endpoint Group"
and take one of the "Policy Actions" or more complicated rules that
specify how two different "Policy Endpoint Groups" interact with each
other. The client-facing interface must support mechanisms to allow
the following rule matches.</t>
<t>Policy Endpoint Groups: The rule must allow a way to match either a
single or a member of a list of "Policy Endpoint Groups".</t>
<t>There must be a way to express a match between two "Policy Endpoint
Groups" so that a policy can be effective for communication between
two groups. <list style="hanging">
<t hangText="Direction:">The rule must allow a way to express
whether the security administrator wants to match the "Policy
Endpoint Group" as the source or destination. The default should
be to match both directions if the direction rule is not specified
in the policy.</t>
<t hangText="Threats:">The rule should allow the security
administrator to express a match for threats that come either in
the form of feeds (such as botnet feeds, GeoIP feeds, URL feeds,
or feeds from a SIEM) or speciality security appliances. Threats
could be identified by Tags/names in policy rules. The tag is a
label of one or more event types that may be detected by a threat
detection system.</t>
</list></t>
<t>The threat could be from malware and this requires a way to match
for virus signatures or file hashes.</t>
</section>
<section anchor="Actions" title="Requirement for Policy Actions">
<t>The security administrator must be able to configure a variety of
actions within a security policy. Typically, security policy specifies
a simple action of "deny" or "permit" if a particular condition is
matched. Although this may be enough for most of the simple policies,
the I2NSF client-facing interface must also provide a more
comprehensive set of actions so that the interface can be used
effectively across various security functions.</t>
<t>Policy action MUST be extensible so that additional policy action
specifications can easily be added.</t>
<t>The following list of actions SHALL be supported: <list
style="hanging">
<t hangText="Permit:">This action means continue processing the
next rule or allow the packet to pass if this is the last rule.
This is often a default action.</t>
<t hangText="Deny:">This action means stop further packet
processing and drop the packet.</t>
<t hangText="Drop connection:">This action means stop further
packet processing, drop the packet, and drop connection (for
example, by sending a TCP reset).</t>
<t hangText="Log:">This action means create a log entry whenever a
rule is matched.</t>
<t hangText="Authenticate connection:">This action means that
whenever a new connection is established it should be
authenticated.</t>
<t hangText="Quarantine/Redirect:">This action may be relevant for
event driven policy where certain events would activate a
configured policy that quarantines or redirects certain packets or
flows. The redirect action must specify whether the packet is to
be tunneled and in that case specify the tunnel or encapsulation
method and destination identifier.</t>
<t hangText="Netflow:">This action creates a Netflow record; Need
to define Netflow server or local file and version of Netflow.</t>
<t hangText="Count:">This action counts the packets that meet the
rule condition.</t>
<t hangText="Encrypt:">This action encrypts the packets on an
identified flow. The flow could be over an Ipsec tunnel, or TLS
session for instance.</t>
<t hangText="Decrypt:">This action decrypts the packets on an
identified flow. The flow could be over an Ipsec tunnel, or TLS
session for instance.</t>
<t hangText="Throttle:">This action defines shaping a flow or a
group of flows that match the rule condition to a designated
traffic profile.</t>
<t hangText="Mark:">This action defines traffic that matches the
rule condition by a designated DSCP value and/or VLAN 802.1p Tag
value.</t>
<t hangText="Instantiate-NSF:">Instantiate a NSF with predefined
profile. A NSF can be any of FW, LB, IPS, IDS, honeypot, or VPN,
etc.</t>
<t hangText="WAN-Accelerate:">This action optimize packet delivery
using a set of predefined packet optimization methods.</t>
<t hangText="Load-Balance:">This action load balance connections
based on predefined LB schemes or profiles.</t>
</list></t>
<t>The policy actions should support combination of terminating
actions and non-terminating actions. For example, Syslog and then
Permit; Count and then Redirect.</t>
<t>Policy actions SHALL support any L2, L3, L4-L7 policy actions.</t>
</section>
<section anchor="Models" title="Requirement for Generic Policy Models">
<t>Client-facing interface SHALL provide a generic metadata model that
defines once and then be used by appropriate model elements any times,
regardless of where they are located in the class hierarchy, as
necessary. </t>
<t>Client-facing interface SHALL provide a generic context model that
enables the context of an entity, and its surrounding environment, to
be measured, calculated, and/or inferred.</t>
<t>Client-facing interface SHALL provide a generic policy model that
enables context-aware policy rules to be defined to change the
configuration and monitoring of resources and services as context
changes.</t>
</section>
<section anchor="Conflict"
title="Requirement for Policy Conflict Resolution">
<t>Client-facing interface SHALL be able to detect policy "conflicts",
and SHALL specify methods on how to resolve these "conflicts"</t>
<t>For example: two clients issues conflicting set of security
policies to be applied to the same Policy Endpoint Group.</t>
</section>
<section anchor="Backward"
title="Requirement for Backward Compatibility">
<t>It MUST be possible to add new capabilities to client-facing
interface in a backward compatible fashion.</t>
</section>
<section anchor="Third-Party"
title="Requirement for Third-Party Integration">
<t>The security policies in the security administrator's network may
require the use of specialty devices such as honeypots, behavioral
analytics, or SIEM in the network, and may also involve threat feeds,
virus signatures, and malicious file hashes as part of comprehensive
security policies.</t>
<t>The client-facing interface must allow the security administrator
to configure these threat sources and any other information to provide
integration and fold this into policy management.</t>
</section>
<section anchor="Telemetry" title="Requirement for Telemetry Data">
<t>One of the most important aspect of security is to have visibility
into the networks. As threats become more sophisticated, the security
administrator must be able to gather different types of telemetry data
from various devices in the network. The collected data could simply
be logged or sent to security analysis engines for behavioral
analysis, policy violations, and for threat detection.</t>
<t>The client-facing interface MUST allow the security administrator
to collect various kinds of data from NSFs. The data source could be
syslog, flow records, policy violation records, and other available
data.</t>
<t>Detailed client-facing interface telemetry data should be available
between clients and security controllers. Clients should be able to
subscribe and receive these telemetry data.</t>
<t>client should be able to receive notifications when a policy is
dynamically updated.</t>
</section>
</section>
<section anchor="operational_reqs"
title="Operational Requirements for the Client-Facing Interface">
<section anchor="api_ver" title="API Versioning">
<t>The client-facing interface must support a version number for each
RESTful API. This is very important because the client application and
the controller application will most likely come from different
developers. Even if the developer is same, it is hard to imagine that
two different applications would be released in lock step.</t>
<t>Without API versioning, it is hard to debug and figure out issues
if application breaks. Although API versioning does not guarantee that
applications will always work, it helps in debugging if the problem is
caused by an API mismatch.</t>
</section>
<section anchor="api_ext" title="API Extensiblity">
<t>Abstraction and standardization of the client-facing interface is
of tremendous value to security administrators as it gives them the
flexibility of deploying any developers' NSF without needing to
redefine their policies or change the client interface. However this
might also look like as an obstacle to innovation.</t>
<t>If an NSF developer comes up with new feature or functionality that
can't be expressed through the currently defined client-facing
interface, there must be a way to extend existing APIs or to create a
new API that is relevant for that NSF developer only.</t>
</section>
<section anchor="apis_trans" title="APIs and Data Model Transport">
<t>The APIs for client interface must be derived from the YANG based
data model. The YANG data model for client interface must capture all
the requirements as defined in this document to express a security
policy. The interface between a client and controller must be reliable
to ensure robust policy enforcement. One such transport mechanism is
RESTCONF that uses HTTP operations to provide necessary CRUD
operations for YANG data objects, but any other mechanism can be
used.</t>
</section>
<section anchor="notif" title="Notification">
<t>The client-facing interface must allow the security administrator
to collect various alarms and events from the NSF in the network. The
events and alarms may be either related to security policy enforcement
or NSF operation. The events and alarms could also be used as a input
to the security policy for autonomous handling.</t>
</section>
<section anchor="aff" title="Affinity">
<t>The client-facing interface must allow the security administrator
to pass any additional metadata that a user may want to provide for a
security policy e.g. certain security policy needs to be applied only
on linux machine or windows machine or that a security policy must be
applied on the device with Trusted Platform Module chip.</t>
</section>
<section anchor="test" title="Test Interface">
<t>The client-facing interface must allow the security administrator
the ability to test the security policies before the policies are
actually applied e.g. a user may want to verify if a policy creates
potential conflicts with the existing policies or whether a certain
policy can be implemented. The test interface provides such
capabilities without actually applying the policies.</t>
</section>
</section>
<section anchor="iana" title="IANA Considerations">
<t>This document requires no IANA actions. RFC Editor: Please remove
this section before publication.</t>
</section>
<section anchor="acks" title="Acknowledgements">
<t>The editors would like to thank Adrian Farrel for helpful discussions
and advice.</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.I-D.ietf-i2nsf-problem-and-use-cases"?>
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 01:06:08 |