Uploaded image for project: 'Apache NiFi'
  1. Apache NiFi
  2. NIFI-13414

Remove Property Protection Modules and Encrypt Config Tools

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.0.0-M4
    • None
    • None

    Description

      NiFi and NiFi Registry have supported several strategies for encrypting and decrypting application properties located in nifi.properties apart from protection of sensitive values in the flow configuration. The initial implementation supported property encryption using AES-GCM with the key located in bootstrap.conf. Subsequent implementations provided integration with external secret management services. Supporting each of these implementations requires a large number of third-party libraries, and does not provide a public method for extensible implementation. Issues with both the security and maintainability of these existing approaches necessitates their deprecation and removal from the current main branch.

      The local AES-GCM implementation does not provide sufficient security from a holistic perspective of the installation. Although values in nifi.properties can be encrypted, the encryption key must be stored in plaintext in bootstrap.conf, and both of these files are located in the conf directory. Anyone with access to read the filesystem as the operating system user can put these configurations together to read the values in nifi.properties.

      The service-based implementations provide externalization using property value references or encrypted values that require interaction with the service for reading. This approach is beneficial, but it requires maintaining separate implementations for each service provider, and it also requires configuring access credentials in supplementary bootstrap configuration files. These service-based implementations have large dependency trees, the contents of each is stored in the properties directory under the lib directory. Incorporating copies of service provider libraries for all supported implementations adds significant weight to the standard distribution, and makes it more difficult to maintain, given the lack of dependency isolation.

      The existing nifi-property-protection-api and provided implementations do not support a maintainable pattern for application property security. The nifi-toolkit-encrypt-config module also contains a significant amount of code required to run out-of-band for encrypting application properties. The encrypt-config command is packaged apart from the standard NiFi distribution, making it less useful for common deployment scenarios.

      Taking these issues together, existing property protection modules for nifi.properties should be removed from the main branch. This will provide a streamlined distribution in the short term, and also provide a better foundation for considerating more robust approaches that are not subject to the same types of security concerns.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            exceptionfactory David Handermann
            exceptionfactory David Handermann
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 20m
                20m

                Slack

                  Issue deployment