ADLS Gen2 -->文件夹级别的 ACL



我有一个关于ADLS Gen2 权限的问题

简短描述:我有一个Gen2存储帐户并创建了一个容器。

文件夹结构看起来像这个

StorageAccount1
--->Container1
--->Folder1
--->Files 1....n

我还有一位客户的服务负责人。。现在我必须为客户提供只对Folder1的写权限(不应该能够删除Folder1内的文件(

我已经在访问控制列表中分配了以下权限的服务原则

Container1 --> Execute    
Folder1 --> Write , Execute

有了这个功能,客户现在可以将数据放入这个文件夹1……但我如何防止他删除其中的任何文件?(我不想使用SAS(或者除了ACL还有其他方式吗?

请帮助:(

ADLSgen2 的ACL

请检查下面是否可以工作。

  • ACL是控制对文件和文件夹级别不同于其他容器级别
  • 最佳做法是始终使用(Azure RBAC(限制访问在存储帐户/容器级别上,内置了几个Azure可以分配给用户、组、服务主体和托管身份,然后与具有更严格限制的ACL组合控制文件和文件夹级别

例如:存储Blob数据贡献者具有读/写/删除权限。分配Azure角色

  • 如果内置角色不能满足您组织,您可以创建自己的Azure自定义角色

参考

若要分配角色,必须为您分配具有角色分配写入权限的角色,例如您尝试分配角色的范围内的所有者或用户访问管理员。

创建具有自定义权限的自定义角色

创建一个新文件C:\CustomRoles\customrole1.json,如下所示。在作为则自动生成新的ID。

{
"Name": "Restrict user from  delete operation on Storage",
"ID": null,
"IsCustom": true,
"Description": "This role will restrict the user from delete operation on the storage account. However, customer will be able to see the storage account, container, blob.",
"Actions": [
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/blobServices/containers/read",
"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"
],
"NotActions": [
"Microsoft.Storage/storageAccounts/blobServices/containers/delete"
],
"DataActions": [
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action"
],
"NotDataActions": [   
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete",
],

"AssignableScopes": [
"/subscriptions/dxxxx7-xxxx"
]
}

使用上面的角色定义,通过运行下面的powershell脚本来创建自定义角色:

New-AzRoleDefinition -InputFile "C:CustomRolescustomrole1.json"

请参阅下面的参考资料:了解详细信息。

  1. 如何限制用户在中上传/下载或删除blob存储帐户-Microsoft技术社区
  2. Azure内置角色-Azure RBAC|Microsoft文档

如果角色具有删除权限,请尝试启用软删除以恢复删除操作。

虽然提到不用。以防万一。共享访问签名(SAS(可用于限制对blob容器或单个blob的访问。blob存储中的文件夹是虚拟的,而不是真实的文件夹。你可以参考这篇文章中提到的建议

参考

  1. 权限-重复删除目录和内容所需的权限
  2. 当通过专用端点连接时,无法从ADLS gen2删除Blob-Microsoft Q&A
  3. 使用Azure Active Directory(REST API(授权-Azure存储| Microsoft文档

最新更新