我可以为 Azure Data Lake Storage Gen2 中的目录创建 Sas 密钥吗?

Can I create a Sas key for a directory in Azure Data Lake Storage Gen2?

在 azure blob 存储中,我可以为特定文件或容器创建具有读取权限的 Sas 密钥,但不能为目录执行此操作。

Azure Data Lake Storage Gen2 中是否有一种方法可以创建 Sas 密钥以允许访问目录及其中的所有文件?如果有办法,我该怎么做?

据我所知,我们无法为 Azure Data Lake Storage Gen2 中的目录创建 SAS 密钥,但您可以使用 access control lists.[= 设置文件和目录级别的权限。 18=] 以

.net为例,本例获取并设置名为my-directory的目录的ACL。字符串 user::rwx,group::r-x,other::rw- 赋予所属用户读取、写入和执行权限,仅赋予所属组读取和执行权限,并赋予所有其他人读取和写入权限。

public async Task ManageDirectoryACLs(DataLakeFileSystemClient fileSystemClient)
{
    DataLakeDirectoryClient directoryClient =
        fileSystemClient.GetDirectoryClient("my-directory");

    PathAccessControl directoryAccessControl =
        await directoryClient.GetAccessControlAsync();

    foreach (var item in directoryAccessControl.AccessControlList)
    {
        Console.WriteLine(item.ToString());
    }


    IList<PathAccessControlItem> accessControlList
        = PathAccessControlExtensions.ParseAccessControlList
        ("user::rwx,group::r-x,other::rw-");

    directoryClient.SetAccessControlList(accessControlList);

}

具体做法和说明可以参考这位官方document.