Предоставить доступ к отдельным папкам Data Lake Gen 2 для разных пользователей с помощью PowerShell - PullRequest
0 голосов
/ 14 января 2020

Хотя я могу предоставить доступ различным пользователям в Azure Data Lake Gen 2, используя Powershell , я хотел бы иметь возможность предоставить доступ, чтобы каждый пользователь имел доступ к своим собственным отдельным папкам с каждый контейнер Data Lake Gen 2, например, в контейнере 1, пользователь A имеет доступ к подпапке A, а пользователь B имеет доступ к подпапке B. Это возможно с помощью пользовательского интерфейса проводника хранилища, но я не могу сделать это с помощью команд PowerShell.

1 Ответ

1 голос
/ 15 января 2020

Вы можете использовать приведенный ниже скрипт, чтобы дать разрешение пользователю.

В моем примере у меня есть контейнер 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

enter image description here

Для другого пользователя просто используйте сценарий, чтобы дать разрешение на 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

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...