Azure PowerShell Set-AzKeyVaultAccessPolicy настройка параметров политики доступа к фабрике данных - PullRequest
0 голосов
/ 12 марта 2020

Когда я пытаюсь передать политику доступа (Azure key valut) к моей azure фабрике данных через powershell, я получаю сообщение об ошибке ниже

Set-AzKeyVaultAccessPolicy: операция вернула недопустимый статус код 'BadRequest' В строке: 64 символа: 1 + Set-AzKeyVaultAccessPolicy -VaultName $ keyvaultname -ServicePrincipal ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: CloseError: ( :) [Set-AzKeyVaultAccessPolicy], Gr aphErrorException + FullyQualifiedErrorId: Microsoft. Azure .Commands.KeyVault.SetAzureKeyVau ltAccessPolicy

Любая помощь будет очень признательна Спасибо *

* 1008 заранее

Это скрипт, который я пытаюсь выполнить

## select subcription

$subcription='Visual Studio Enterprise – MPN'

Select-AzSubscription $subcription


## create a new resource group

$resourcegroupname=”gho-rg-dev”
$location="eastus"

$rg=New-AzResourceGroup `
        -Name $resourcegroupname `
        -Location $location


## create the storage account


$storageAccountName = "ghostoragelab"
$skuName = "Standard_LRS"

$storageAccount = New-AzStorageAccount -ResourceGroupName $resourcegroupname `
                     -Name $storageAccountName `
                     -Location $location `
                     -SkuName $skuName

$storageaccountkey=(Get-AzStorageAccountkey -ResourceGroupName $resourcegroupname -Name $storageAccount.StorageAccountName).Value[0]


##create azure data factory

$datafactoryname='lab-factory-dev'

$df= New-AzDataFactoryV2 `
        -ResourceGroupName $resourcegroupname -Name $datafactoryname -Location $location




## creating the azure key vault

$keyvaultname="labkeydev"

$keyvault=New-AzKeyVault -ResourceGroupName $resourcegroupname -Name $keyvaultname `
        -Location $location

# creating the secret key in keyvault

Set-AzKeyVaultSecret -VaultName $keyvaultname -Name "secret-access-key"`
 -SecretValue(ConvertTo-SecureString -String $storageaccountkey -AsPlainText -Force)

#Give access policy to the datafactory thorugh keyvault

*## this is where script is failing*

Set-AzKeyVaultAccessPolicy -VaultName $keyvaultname -ServicePrincipalName $df.DataFactoryId -PermissionsToSecrets Get

1 Ответ

0 голосов
/ 13 марта 2020

Полагаю, вы хотите добавить MSI фабрики данных к Access policies вашего ключевого вальта.

Вы получили ошибку, потому что вы использовали -ServicePrincipalName $df.DataFactoryId в этой команде Set-AzKeyVaultAccessPolicy, $df.DataFactoryId - это resource id фабрики данных, вам нужен Application ID(Client ID) MSI.

Поэтому, если вы хотите использовать параметр -ServicePrincipalName, ваша команда должна быть:

$appId = (Get-AzADServicePrincipal -ObjectId $df.Identity.PrincipalId).ApplicationId
Set-AzKeyVaultAccessPolicy -VaultName joykeyvault -ServicePrincipalName $appId -PermissionsToSecrets get

Приведенной выше команде требуется разрешение на получение участника службы в вашей Azure AD, если у вас нет этого разрешения, вы можете использовать команду (я рекомендую вам используйте этот):

Set-AzKeyVaultAccessPolicy -VaultName joykeyvault -ObjectId $df.Identity.PrincipalId -PermissionsToSecrets get -BypassObjectIdValidation

Если ваша фабрика данных уже создана, вы можете использовать Get-AzDataFactoryV2, чтобы получить ее, а затем добавить ее в политики доступа.

$datafactory = Get-AzDataFactoryV2 -ResourceGroupName <group name> -Name <factory name>
Set-AzKeyVaultAccessPolicy -VaultName joykeyvault -ObjectId $datafactory.Identity.PrincipalId -PermissionsToSecrets get -BypassObjectIdValidation

enter image description here

...