使用 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
,有两个文件夹,folder1
和 folder2
。我将 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
尽管我可以使用 Powershell 向 Azure Data Lake Gen 2 中的不同用户授予访问权限,但我希望能够授予访问权限,以便每个用户都可以访问他们自己的文件夹和每个数据Lake Gen 2 容器,例如在容器 1 中,用户 A 可以访问子文件夹 A,用户 B 可以访问子文件夹 B。这可以使用存储资源管理器 UI 但我无法使用 PowerShell 命令执行此操作。
您可以使用下面的脚本来授予用户权限。
在我的示例中,我有一个容器 test
,有两个文件夹,folder1
和 folder2
。我将 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