anchor.diff:  When a component decides to store or retrieve state, it does so by providing a "Scope" - either Node-local or Cluster-wide. The
   mechanism that is used to store and retrieve this state is then determined based on this Scope, as well as the configured State
   Providers. The _nifi.properties_ file contains three different properties that are relevant to configuring these State Providers.
  -The first is the `nifi.state.management.configuration.file` property specifies an external XML file that is used for configuring
  -the local and cluster-wide State Providers. This XML file may contain configurations for multiple providers, so the
  -`nifi.state.management.provider.local` property provides the identifier of the local State Provider configured in this XML file.
  -Similarly, the `nifi.state.management.provider.cluster` property provides the identifier of the cluster-wide State Provider
  -configured in this XML file.
  -
  -This XML file consists of a top-level `state-management` element, which has one or more `local-provider` and zero or more
  -`cluster-provider` elements. Each of these elements then contains an `id` element that is used to specify the identifier that can
  -be referenced in the _nifi.properties_ file, as well as a `class` element that specifies the fully-qualified class name to use
  -in order to instantiate the State Provider. Finally, each of these elements may have zero or more `property` elements. Each
  -`property` element has an attribute, `name` that is the name of the property that the State Provider supports. The textual content
  -of the `property` element is the value of the property.
  -
  -Once these State Providers have been configured in the _state-management.xml_ file (or whatever file is configured), those Providers
  -may be referenced by their identifiers. By default, the Local State Provider is configured to be a `WriteAheadLocalStateProvider` that
  -persists the data to the _$NIFI_HOME/state_ directory. The default Cluster State Provider is configured to be a `ZooKeeperStateProvider`.
  -The default ZooKeeper-based provider must have its `Connect String` property populated before it can be used. It is also advisable,
  -if multiple NiFi instances will use the same ZooKeeper instance, that the value of the `Root Node` property be changed. For instance,
  -one might set the value to `/nifi/<team name>/production`. A `Connect String` takes the form of comma separated <host>:<port> tuples,
  -such as my-zk-server1:2181,my-zk-server2:2181,my-zk-server3:2181. In the event a port is not specified for any of the hosts, the ZooKeeper
  -default of 2181 is assumed.
  +
  +|====
  +|*Property*|*Description*
  +|nifi.state.management.configuration.file|The first is the property that specifies an external XML file that is used for configuring the local and/or cluster-wide State Providers. This XML file may contain configurations for multiple providers
  +|nifi.state.management.provider.local|The property that provides the identifier of the local State Provider configured in this XML file
  +|nifi.state.management.provider.cluster|Similarly, the property provides the identifier of the cluster-wide State Provider configured in this XML file.
  +|====
  +
  +This XML file consists of a top-level `state-management` element, which has one or more `local-provider` and zero or more `cluster-provider`
  +elements. Each of these elements then contains an `id` element that is used to specify the identifier that can be referenced in the
  +_nifi.properties_ file, as well as a `class` element that specifies the fully-qualified class name to use in order to instantiate the State
  +Provider. Finally, each of these elements may have zero or more `property` elements. Each `property` element has an attribute, `name` that is the name
  +of the `property` that the State Provider supports. The textual content of the property element is the value of the property.
  +
  +Once these State Providers have been configured in the _state-management.xml_ file (or whatever file is configured), those Providers may be
  +referenced by their identifiers.
  +
  +By default, the Local State Provider is configured to be a `WriteAheadLocalStateProvider` that persists the data to the
  +_$NIFI_HOME/state/local_ directory. The default Cluster State Provider is configured to be a `ZooKeeperStateProvider`. The default
  +ZooKeeper-based provider must have its `Connect String` property populated before it can be used. It is also advisable, if multiple NiFi instances
  +will use the same ZooKeeper instance, that the value of the `Root Node` property be changed. For instance, one might set the value to
  +`/nifi/<team name>/production`. A `Connect String` takes the form of comma separated <host>:<port> tuples, such as
  +my-zk-server1:2181,my-zk-server2:2181,my-zk-server3:2181. In the event a port is not specified for any of the hosts, the ZooKeeper default of
  +2181 is assumed.
   
   When adding data to ZooKeeper, there are two options for Access Control: `Open` and `CreatorOnly`. If the `Access Control` property is
   set to `Open`, then anyone is allowed to log into ZooKeeper and have full permissions to see, change, delete, or administer the data.
  
positive.code: 
  [source]
  kadmin: xst -k nifi.keytab nifi@EXAMPLE.COM
  
  This will create a file in the current directory named `nifi.keytab`. We can now copy that file into the _$NIFI_HOME/conf/_ directory. We should ensure
  that only the user that will be running NiFi is allowed to read this file.
  
negative.code: 
  [[securing_zookeeper]]
  === Securing ZooKeeper
  When NiFi communicates with ZooKeeper, all communications, by default, are non-secure, and anyone who logs into ZooKeeper is able to view and manipulate all
  of the NiFi state that is stored in ZooKeeper. To prevent this, we can use Kerberos to manage the authentication. At this time, ZooKeeper does not provide
  support for encryption via SSL. Support for SSL in ZooKeeper is being actively developed and is expected to be available in the 3.5.x release version.
  