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

ASF GitHub Bot commented on NIFI-4993:
--------------------------------------

Github user zenfenan commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/2567#discussion_r175833913
  
    --- Diff: 
nifi-nar-bundles/nifi-atlas-bundle/nifi-atlas-reporting-task/src/main/java/org/apache/nifi/atlas/reporting/ReportLineageToAtlas.java
 ---
    @@ -584,6 +601,12 @@ public void onTrigger(ReportingContext context) {
                 return;
             }
     
    +        final String nifiUserId = 
context.getProperty(NIFI_USER_ID).evaluateAttributeExpressions().getValue();
    +        if (isEmpty(nifiUserId)) {
    +            getLogger().warn("NiFi user id is empty, make sure '" + 
NIFI_USER_ID.getDisplayName() + "' is configured correctly.");
    +            return;
    --- End diff --
    
    Is this for backward compatibility? Reason why I'm asking is, if we are 
making `NIFI_USER_ID.required(true)` and setting appropriate validator, is this 
check required?


> ReportLineageToAtlas complete path strategy does not report some lineages 
> with secured NiFi
> -------------------------------------------------------------------------------------------
>
>                 Key: NIFI-4993
>                 URL: https://issues.apache.org/jira/browse/NIFI-4993
>             Project: Apache NiFi
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: 1.5.0
>            Reporter: Koji Kawamura
>            Assignee: Koji Kawamura
>            Priority: Major
>         Attachments: flow-screenshot.png, hdfs-route.png, kafka-route.png
>
>
> ReportLineageToAtlas 'complete path' strategy uses NiFi provenance lineage 
> query with an anonymous user. If NiFi is secured and the user who made the 
> lineage query request does not have required privilege, NiFi returns 
> provenance event type as UNKNOWN, and also does not traverse lineage fully.
> Specifically, the authorization is implemented here:
>  
> [https://github.com/apache/nifi/blob/master/nifi-nar-bundles/nifi-provenance-repository-bundle/nifi-persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/PersistentProvenanceRepository.java#L2641]
> {code:java|title=PersistentProvenanceRepository$ComputeLineageRunnable.run}
> final StandardLineageResult result = submission.getResult();
> result.update(replaceUnauthorizedWithPlaceholders(matchingRecords, user), 
> matchingRecords.size());
> {code}
> This affects to ReportLineageToAtlas 'complete path' strategy as it will not 
> be able to traverse parent provenance events to analyze full lineage path for 
> a FlowFile. As a result, the reporting task can not report lineage with some 
> structures of flow.
>  For example, with the following NiFi flow, the FlowFile that was RECEIVEd by 
> GetFile went through Kafka route (the right branch). Also, the FlowFile was 
> CLONEd to go Hive and HDFS routes.
> !flow-screenshot.png|width=100%!
> Then the original FlowFile that went through Kafka route would have NiFi 
> lineage like this. This lineage can be retrieved by single lineage query and 
> works even with an anonymous user. These routes can be reported to Atlas:
>  !kafka-route.png|width=180!
> However, the CLONEd routes would have following lineage. This graph was 
> queried from NiFi UI by a NiFi user who has sufficient privilege. But with an 
> anonymous user, the link from SEND (23) to the FlowFile then CLONE (18) is 
> not returned. Because event types are masked as UNKNOWN and NiFi framework 
> does not traverse the linkage. Thus, these cloned routes are not reported to 
> Atlas.
>  !hdfs-route.png!
> ReportLineageToAtlas needs to have a property so that user can specify a NiFi 
> user id to impersonate, so that required policies can be administrated.
> This issue was originally reported by [~nayakmahesh616].



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to