[ 
https://issues.apache.org/jira/browse/NIFI-13585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17869679#comment-17869679
 ] 

Bryan Bende commented on NIFI-13585:
------------------------------------

I'm not totally sure I follow everything here, but in general, all properties 
are marked as sensitive when a component is ghosted because we don't have the 
property descriptors to tell us which properties are sensitive and which ones 
aren't. I suppose if the value of the property references a parameter when can 
infer that if the parameter is not sensitive then the property couldn't have 
been sensitive?

I think this overall issue may be the same as this one - 
https://issues.apache.org/jira/browse/NIFI-11570

 

> When ghosting a component some properties should not be encrypted
> -----------------------------------------------------------------
>
>                 Key: NIFI-13585
>                 URL: https://issues.apache.org/jira/browse/NIFI-13585
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Core Framework
>            Reporter: Pierre Villard
>            Priority: Major
>
> Let's consider the following scenario:
> I have a flow definition with a RouteOnAttribute processor that is version X. 
> This processor has dynamic properties to define the routing of the flowfiles, 
> and the properties are referencing parameters. In the flow.json.gz, I can see:
> {code:java}
> {
>   ...
>   "type": "org.apache.nifi.processors.standard.RouteOnAttribute",
>   "bundle": {
>     "group": "org.apache.nifi",
>     "artifact": "nifi-standard-nar",
>     "version": "X"
>   },
>   "properties": {
>     "1": "${#{test}:equals('1')}",
>     "2": "${#{test}:equals('2')}",
>     "Routing Strategy": "Route to Property name"
>   },
>   ...
> } {code}
> This flow is being deployed in an environment where we have multiple versions 
> of RouteOnAttribute (Y and Z, but not X). When the flow is deployed, we're 
> going to ghost the component. In that process, we're treating dynamic 
> properties as sensitive by default because we don't know what to do with 
> those and we want to be on the safe side. Because of this the values are 
> encrypted, and in flow.json.gz, I can now see:
> {code:java}
> {
>   ...
>   "type": "org.apache.nifi.processors.standard.RouteOnAttribute",
>   "bundle": {
>     "group": "org.apache.nifi",
>     "artifact": "nifi-standard-nar",
>     "version": "X"
>   },
>   "properties": {
>     "1": "enc{xxxxxxxxxxx}",
>     "2": "enc{xxxxxxxxxxx}",
>     "Routing Strategy": "enc{xxxxxxxxxxx}"
>   },
>   ...
> }  {code}
> The problem is that if I now make this component version available, or if I 
> remove version Y (to force the switch to version Z), and restart NiFi, NiFi 
> won't be able to start anymore and will throw the below exception:
> {code:java}
> Caused by: java.lang.IllegalArgumentException: The property '1' is a 
> sensitive property so it can reference a Parameter only if there is no other 
> context around the value. For instance, the value '#{abc}' is allowed but 
> 'password#{abc}' is not allowed.
>     at 
> org.apache.nifi.controller.AbstractComponentNode.verifyCanUpdateProperties(AbstractComponentNode.java:392)
>     at 
> org.apache.nifi.controller.AbstractComponentNode.setProperties(AbstractComponentNode.java:277)
>     at 
> org.apache.nifi.flow.synchronization.StandardVersionedComponentSynchronizer.updateProcessor(StandardVersionedComponentSynchronizer.java:2771){code}
> In this case it fails because the property is sensitive and has a value that 
> is mixing expression language and a parameter. The problem would be similar 
> if the property is only referencing a parameter: it would fail saying that a 
> sensitive property cannot reference a non-sensitive parameter.
> I think that NiFi behavior should be improved when ghosting the components 
> and implement a better handling of the properties to only encrypt the 
> properties that should and not encrypt properties referencing a non-sensitive 
> parameter.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to