azure-functions - 是否可以为 DataLake Gen2 存储中的目录创建 SAS 令牌?
问题描述
我有一个 Azure 函数,它从嵌套在ADLS Gen 2 存储容器中的目录(命名空间)触发。
例子:
ADLS_AccountName/topLevelContainer/Directory1/Directory2/{name}
不幸的是,该函数需要Connection string
整个 DataLake 作为输入绑定(作为应用程序设置存储在 中local.settings.json
)。
对于一个函数来说,这太过分了。
如何为给定的嵌套命名空间生成 SAS 令牌并将其用作函数的应用程序设置?
解决方案
不幸的是,无法为 ADLS Gen2 存储帐户中的特定文件夹创建 SAS 令牌。但是您可以利用Access Control List
授予特定文件或目录的权限。
您可以将安全主体与应用程序中的目录和文件的访问级别相关联。(注意:ACL 仅适用于同一租户中的安全主体)
如果您仅使用 ACL(无 RBAC)授予权限,则要授予安全主体对文件夹的读取或写入权限,您需要授予安全主体对容器以及层次结构中每个文件夹的执行权限指向所需文件夹/文件的文件夹。
这是一个获取和设置名为 的目录的 ACL 的示例my-directory
。该字符串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);
}
更多细节,你可以参考这篇文章。
推荐阅读
- javascript - 创建一个在某些尝试后中断的while循环 - NodeJS
- angular - 在 datepicker 中添加 TODAY 和 TOMORROW 选项
- android - 应用链接路径Patten
- python - 无法使用 python xlsxwriter 在 excel 中更改字体颜色
- php - php - create_function 重构
- php - 如何在 wampserver 的 phpadmin 中将此数据数组插入 mysql
- vba - 单击报告背景时出现 MS Access 灰色框
- java - Jolokia 上每个线程的 CPU 使用率?
- java - 使用 MediatorLiveData 合并到 LiveData (Firestore) QuerySnapshot 流会产生奇怪的结果
- python - 如何在具有特定首字母和最后一个字母的字符串中查找子字符串?