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

问题描述

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

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

解决方法

据我所知,我们无法在SAS中为目录创建Azure Data Lake Storage Gen2键,但是您可以使用access control lists来设置文件和目录级别的权限。

.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,other::rw-");

    directoryClient.SetAccessControlList(accessControlList);

}

有关具体做法和说明,您可以参考此官方document