David Handermann created NIP-24:
-----------------------------------
Summary: Deprecate Restricted Annotation for Removal
Key: NIP-24
URL: https://issues.apache.org/jira/browse/NIP-24
Project: NiFi Improvement Proposal
Issue Type: Improvement
Reporter: David Handermann
Assignee: David Handermann
h2. Motivation
Apache NiFi 1.1.0 introduced the Restricted annotation in 2016 as a strategy
for identifying components that had the potential to perform dangerous actions.
Such actions included reading sensitive files, altering application
configuration, and running arbitrary code. Although the goal remains
understandable, the enforcement of the Restricted annotation and associated
Required Permissions has never fulfilled the implied security promises.
Required Permissions such as execute code present clearer grants of authority,
implying the potential to run anything as the system user running the NiFi
process. Other permissions have more subtle dangers, such as writing to the
file system, or accessing remote resources. The flexibility of Apache NiFi
differentiates it from traditional web applications, often leading to either
misapplication of more common security guidelines, or misunderstanding of the
threat model associated with granting various Required Permissions on
Restricted components.
Aligning supportable authorization with a security boundary at the level of the
NiFi application provides a more understandable and more maintainable path
forward. Deprecating the Restricted annotation is a key part of providing clear
security expectations.
h2. Scope
The scope of deprecation includes the Restricted annotation in the Apache NiFi
API, along with the Restriction and Required Permission interfaces. These
interfaces should be marked as deprecated for removal in a subsequent major
release version.
After initial deprecation and release of a new Apache NiFi API, framework
authorization changes should be evaluated for future implementation. Changes
include methods that return the Restricted status of annotated components, and
authorization processing that evaluates user privileges against Required
Permissions.
h2. Description
The implementation consists of adding the Deprecated annotation, with
forRemoval enabled, to the Restricted annotation, Restriction interface, and
RequiredPermission interface, in the Apache NiFi API.
After adding the Deprecated annotation and releasing at least one minor
revision of the Apache NiFi API, changing the authorization implementation can
be considered. At least one minor revision of the Apache NiFi application
should be released with the new Apache NiFi API to provide a bridge version.
Following initial releases with Deprecated status, the Apache NiFi framework
should be updated to remove authorization checking for the Restricted
annotation, and Apache NiFi extensions should be updated to remove the
annotation from component classes.
Removal of the Restricted annotation and supporting interfaces should be
scheduled as part of the next major release version.
h2. Compatibility
Initial deprecation in the Apache NiFi API should have no impact on
compatibility within the same minor version. Removal of the Restricted
annotation and supporting interfaces must be associated with a new major
version release of the Apache NiFi API.
h2. Verification
Deprecated annotations and comments can be reviewed and approved following
standard pull request handling processes.
h2. Alternatives
Although technical solutions could be considered, going to extreme lengths to
evaluate and block dangerous operations is not a maintainable strategy. The
Java Security Manager is one of the closest possible options that could have
provided operational enforcement, but its inherent complexity led to its
deprecation under JEP 411 for Java 17.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)