NIFI-16282 Add Property Encryption Provider framework extension - #11617
Conversation
- Added nifi.security.property.encryption.provider properties - Added PasswordBasedPropertyEncryptionProvider default implementation
pvillard31
left a comment
There was a problem hiding this comment.
LGTM and happy to approve/merge as-is but left a comment for consideration.
| public record SensitivePropertyContext( | ||
| SensitivePropertyCategory category, | ||
| Map<SensitivePropertyAttribute, String> attributes | ||
| ) { |
There was a problem hiding this comment.
Just curious, is the use of Map<SensitivePropertyAttribute, String> intended to limit the context to framework-defined attributes? Future providers might need additional context (cluster, tenant, data domain, key alias for key selection, or external audit records). Would Map<String, String> with constants for NiFi defined keys provide that extension point while preserving standard names? Something like
public record SensitivePropertyContext(
SensitivePropertyCategory category,
Map<SensitivePropertyAttribute, String> attributes,
Map<String, String> additionalAttributes
) {
}There was a problem hiding this comment.
Thanks @pvillard31, that's a good point, I changed the attributes Map key to String. Although it is a bit more loose than the additionalAttributes approach, it follows the general framework pattern of attributes with reserved names.
pvillard31
left a comment
There was a problem hiding this comment.
Thanks @exceptionfactory - that works for me, I'm a +1
Summary
NIFI-16282 Adds
PropertyEncryptionProvideras a new framework interface innifi-framework-apiand provides an initial password-based implementation.This initial set of changes includes the interface definition and framework extension loading without wiring the changes into framework components. Subsequent pull requests will introduce compatible integration with existing call sites. This provides the opportunity for review of the interface definition along with the first implementation that uses existing application properties.
The
FlowControllerConfigurationclass adds thepropertyEncryptionProviderBean, but allows it to benullwhen not configured since it is not yet used.The new NAR bundle includes the Bouncy Castle Provider library to support existing usage of Argon2 for key derivation.
Tracking
Please complete the following tracking steps prior to pull request creation.
Issue Tracking
Pull Request Tracking
NIFI-00000NIFI-00000VerifiedstatusPull Request Formatting
mainbranchVerification
Please indicate the verification steps performed prior to pull request creation.
Build
./mvnw clean install -P contrib-checkLicensing
LICENSEandNOTICEfilesDocumentation