Azure Data Lake第2代默认访问控制列表未应用于新文件

Azure Data Lake第2代默认访问控制列表未应用于新文件,azure,azure-storage,azure-data-lake,azure-data-lake-gen2,Azure,Azure Storage,Azure Data Lake,Azure Data Lake Gen2,Azure Data Lake Gen 2具有两级访问控制;基于角色的访问控制RBAC和访问控制列表ACL。RBAC在容器级别上起作用,ACL可以在目录和文件级别上起作用。要使目录的子对象继承父目录的ACL,需要指定与父目录的访问权限相同的默认权限 见: 我的问题是,我看到的行为是子目录继承其父目录的ACL,但子文件不继承 因此,我的步骤是: 创建一个AAD组,类似于消费者 在Microsoft Azure Storage Explorer中,创建一个新目录foo,右键单击foo,选择管理访问,

Azure Data Lake Gen 2具有两级访问控制;基于角色的访问控制RBAC和访问控制列表ACL。RBAC在容器级别上起作用,ACL可以在目录和文件级别上起作用。要使目录的子对象继承父目录的ACL,需要指定与父目录的访问权限相同的默认权限

见:

我的问题是,我看到的行为是子目录继承其父目录的ACL,但子文件不继承

因此,我的步骤是:

创建一个AAD组,类似于消费者 在Microsoft Azure Storage Explorer中,创建一个新目录foo,右键单击foo,选择管理访问,选择添加,将消费者组添加到列表中,用[x]读取和[x]执行选中[x]访问。用[x]读取和[x]执行选中[x]默认值。 编写一个Azure函数,将blob从容器复制到具有托管访问权限的容器中的foo/dataset/2020/05/myblob.csv之类的内容。 深入目录;dataset目录具有与foo相同的ACL,如2020和05。但是myblob.csv在其ACL中根本不包括消费者组。 这是一种意外的行为还是我遗漏了一些基本的东西

这似乎是函数或函数中使用的Azure Data Lake Gen 2 SDK C的问题

使用Azure Storage Explorer,当我在已将消费者组添加到的目录下手动添加文件时,它将应用预期的ACL。当我添加一个包含文件的目录时,它也可以工作——子目录中的文件和子目录都需要ACL

谢谢

[edit]这与使用C SDK写入文件时的umask有关吗?我是否需要覆盖默认掩码以允许文件继承其父文件的权限


[edit2]我认为这与使用DataLakeffileClient.Rename来移动blob有关。我怀疑blob保留了其原始ACL,而不是从其新父级继承ACL。写测试…

这个问题解决了吗?@HemantChandurkar,有点像。事实证明,我的直觉在第二次编辑中是正确的。使用DataLakeFileClient.Rename不会保留原始ACL。我在六月份创建了一个功能请求:我有一个类似的问题,还没有找到解决方案。我的问题是,我创建的所有文件都继承默认ACL,但任何文件夹的掩码除外,一切正常。由于掩码的原因,所有其他服务主体权限都有一个警告,指出以下访问权限超出此实体的掩码界限:Execute。我不确定这会产生什么样的影响,但无论我对父文件夹做什么,我都无法更改此行为。添加的任何文件都会有所有这些警告。@FabianVal有解决方案吗?“我也面临着同样的问题。这个问题解决了吗?”赫曼昌杜卡,有点像。事实证明,我的直觉在第二次编辑中是正确的。使用DataLakeFileClient.Rename不会保留原始ACL。我在六月份创建了一个功能请求:我有一个类似的问题,还没有找到解决方案。我的问题是,我创建的所有文件都继承默认ACL,但任何文件夹的掩码除外,一切正常。由于掩码的原因,所有其他服务主体权限都有一个警告,指出以下访问权限超出此实体的掩码界限:Execute。我不确定这会产生什么样的影响,但无论我对父文件夹做什么,我都无法更改此行为。添加的任何文件都会有所有这些警告。@FabianVal有解决方案吗?我也面临同样的问题