ThomasMarquardt opened a new pull request #1965: HADOOP-16916: ABFS: Delegation 
SAS generator for integration with Ranger
URL: https://github.com/apache/hadoop/pull/1965
 
 
   Previously we only had a SASGenerator class which generated Service SAS, but 
I need to add DelegationSASGenerator.  I broke SASGenerator out into a base 
class and two subclasses ServiceSASGenerator and DelegationSASGenreator.  The 
code in ServiceSASGenerator is copied from SASGenerator but the 
DelegationSASGenrator code is new.  The DelegationSASGenerator code 
demonstrates how to use Delegation SAS with minimal permissions, as would be 
used
   by an authorization service such as Apache Ranger.  Adding this to the tests 
helps us lock in this behavior.
   
   Added a MockDelegationSASTokenProvider for testing User Delegation SAS.
   
   Enable the Check Access API by default and fix the 
ITestAzureBlobFileSystemCheckAccess tests to assume oauth client ID so that 
they are ignored when that is not configured.
   
   To improve performance, AbfsInputStream/AbfsOutputStream re-use SAS tokens 
until the expiry is within 120 seconds. After this a new SAS will be requested. 
 The default period of 120 seconds can be changed using the configuration 
setting "fs.azure.sas.token.renew.period.for.streams".
   
   The SASTokenProvider operation names were updated to correspond better with 
the ADLS Gen2 REST API, since these operations must be provided tokens with 
appropriate SAS parameters to succeed.
   
   Support for the version 2.0 AAD authentication endpoint was added to 
AzureADAuthenticator.
   
   The getFileStatus method was mistakenly calling the ADLS Gen2 Get Properties 
API which requires read permission while the getFileStatus call only requires 
execute permission.  ADLS Gen2 Get Status API is supposed to be used for this 
purpose, so the underlying AbfsClient.getPathStatus API was updated with a 
includeProperties parameter which is set to false for getFileStatus and true 
for getXAttr.
   
   Added SASTokenProvider support for delete recursive.
   
   Fixed bugs in AzureBlobFileSystem where public methods were not validating 
the Path by calling makeQualified.  This is necessary to avoid passing null 
paths and to convert relative paths into absolute paths.
   
   Canonicalized the path used for root path internally so that root path can 
be used with SAS tokens, which requires that the path in the URL and the path 
in the SAS token match.  Internally the code was using "//" instead of "/" for 
the root path, sometimes.  Also related to this, the 
AzureBlobFileSystemStore.getRelativePath API was updated so that we no longer 
remove and then add back a preceding forward / to paths.
   
   All tests passing against my eastus2euap account:
   
   $ mvn -T 1C -Dparallel-tests=abfs -Dscale -DtestsThreadCount=8 clean verify
   [INFO] Tests run: 56, Failures: 0, Errors: 0, Skipped: 0
   [WARNING] Tests run: 424, Failures: 0, Errors: 0, Skipped: 33
   [WARNING] Tests run: 206, Failures: 0, Errors: 0, Skipped: 24
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to