我可以为 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.
在 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.