使用 PowerShell 为不同的用户授予对单独的 Data Lake Gen 2 文件夹的访问权限

Grant access to separate Data Lake Gen 2 folders for different users using PowerShell

尽管我可以使用 Powershell 向 Azure Data Lake Gen 2 中的不同用户授予访问权限,但我希望能够授予访问权限,以便每个用户都可以访问他们自己的文件夹和每个数据Lake Gen 2 容器,例如在容器 1 中,用户 A 可以访问子文件夹 A,用户 B 可以访问子文件夹 B。这可以使用存储资源管理器 UI 但我无法使用 PowerShell 命令执行此操作。

您可以使用下面的脚本来授予用户权限。

在我的示例中,我有一个容器 test,有两个文件夹,folder1folder2。我将 rwx 权限授予 folder1 中的用户。

$storageAccount = Get-AzStorageAccount -ResourceGroupName "xxxxx" -AccountName "joygen"
$ctx = $storageAccount.Context

$filesystemName = "test"
$dirname = "folder1/"
$objectid = "<object-id of the user in Azure AD>"
$acl = New-AzDataLakeGen2ItemAclObject -AccessControlType user -EntityId $objectid -Permission rwx
Update-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Acl $acl

授予权限后,我们可以检查:

$dir = Get-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
$dir.ACL

对于另一个用户,只需使用脚本授予 folder2 权限即可。

更新:

是的,你可以。只需使用下面的脚本,$objectid1$objectid2 是两个用户,$objectid3 是一个 Azure AD 安全组。在命令中,注意 -AccessControlType-InputObject.

的用法
$storageAccount = Get-AzStorageAccount -ResourceGroupName "xxxx" -AccountName "joygen"
$ctx = $storageAccount.Context

$filesystemName = "test"
$dirname = "folder1/"
$objectid1 = "<object-id of the user1 in Azure AD>"
$objectid2 = "<object-id of the user2 in Azure AD>"
$objectid3 = "<object-id of the group in Azure AD>"
$acl = New-AzDataLakeGen2ItemAclObject -AccessControlType user -EntityId $objectid1 -Permission rwx
$acl = New-AzDataLakeGen2ItemAclObject -AccessControlType user -EntityId $objectid2 -Permission rwx -InputObject $acl
$acl = New-AzDataLakeGen2ItemAclObject -AccessControlType group -EntityId $objectid3 -Permission rwx -InputObject $acl
Update-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Acl $acl