Les comptes de stockage avec Hierarchical Namespace activé (aussi appelés Azure Data Lake Storage Gen 2) ont comme gros avantages la gestion des accès via authentification azure AD et donc de pouvoir donner des droits à un UPN (droits POSIX). Toutefois, à des fins de compatibilité une grande partie de l’API blob reste accessible, il est donc possible de continuer à s’authentifier avec la clé du compte de stockage (même si c’est mal) ou encore avec une clé SAS.
Même si la gestion des SAS Token est maintenant supportée par ADLS gen2, l’interface de Azure Storage Explorer ou l’explorer en ligne ne permet pas encore d’effectuer la génération de la signature.
Voici donc le code PowerShell qu’il est possible d’utiliser afin de générer une signature en lecture.
Exemple pour les droits sur un objet blob :
Connect-AzAccount
$ctx = New-AzStorageContext -ConnectionString
"DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>;EndpointSuffix=core.windows.net"
New-AzStorageBlobSASToken -Container "<container>" -Blob "folder/file.csv" -Permission r -context $ctx -StartTime "2019-01-01" -ExpiryTime "2030-01-01"
--output ?sv=2019-02-02&sr=b&sig=TFTCDZ0E2fqiOKssdqzdqzdqzdqm6yHyssqzzPEG%2FBoas%3D&st=2018-12-31T23%3A00%3A00Z&se=2029-12-31T23%3A00%3A00Z&sp=r
Exemple pour les droits sur un objet container:
Connect-AzAccount
$ctx = New-AzStorageContext -ConnectionString
"DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>;EndpointSuffix=core.windows.net"
New-AzStorageContainerSASToken -Container "<container>" -Permission r -context $ctx -StartTime "2019-01-01" -ExpiryTime "2030-01-01"
--output ?sv=2019-02-02&sr=c&sig=TFTCDZ0E2fqiOKssdqzdqzdqzdqm6yHyssqzzPEG%2FBoas%3D&st=2018-12-31T23%3A00%3A00Z&se=2029-12-31T23%3A00%3A00Z&sp=r
Il ne restera plus qu’à concaténer la chaîne retournée au chemin complet du fichier et vous aurez votre accès à base de SAS Token.