Что означает LinkedAuthorizationFailed в PowerShell? - PullRequest
1 голос
/ 13 марта 2020

Я пытаюсь добавить правила виртуальной сети в базу данных космоса, используя PowerShell. В сети существуют разные арендаторы. Я сделал то же самое для учетных записей хранения, и он работал нормально. Я получаю следующую ошибку. Может ли кто-нибудь дать мне несколько советов о том, где я иду не так? возможно ли сделать это в базе данных cosmos db?

Set-AzureRmResource: LinkedAuthorizationFailed: у клиента есть разрешение на выполнение действия 'Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action' в области действия '/ подписки / идентификатор подписки на Cosmos DB / resourceGroups / nbspreprd3 / provider / Microsoft.DocumentDb / databaseAccounts / nbspreprd3-config-document-db ', однако текущий владелец' 'не авторизован для доступа к связанной подписке' '. В строке: 8 символов: 5 + Set-AzureRmResource -ResourceType $ ResourceType -ResourceGroupNam ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo: CloseError: (:) [Set-AzureRmResource], ErrorResponseMessageException + FullyQualifiedErrorId: LinkedAuthorizationFailed, Microsoft. Azure .Commands.ResourceManager.Cmdlets.Implementation.SetAzureResourceCmdlet

Это сценарий PowerShell * 100 * * 100 * 100 * 100 * 100 * *1000* 1000 $ResourceGroupName = "*******" $accountname = "*******" $ResourceType = "Microsoft.DocumentDb/databaseAccounts" $cosmosAccount = Get-AzureRMResource -ResourceType $ResourceType -ResourceGroupName $resourceGroupName -Name $accountName $VnrID1 = "/subscriptions/*******/resourceGroups/build-agents/providers/Microsoft.Network/virtualNetworks/build-agents-vnet/subnets/build-2-subnet" $VnrID2 = "/subscriptions/*******/resourceGroups/build-agents/providers/Microsoft.Network/virtualNetworks/build-agents-vnet/subnets/build-3-subnet" $VnrID3 = "/subscriptions/*******/resourceGroups/build-agents/providers/Microsoft.Network/virtualNetworks/build-agents-vnet/subnets/=build1-subnet" function setCosmosRule { Param($ResourceGroupName, $accountname, $ResourceType, $cosmosAccount, $VnrID1) $vnetrules = $cosmosAccount.Properties.virtualNetworkRules $existsCosmos =($cosmosAccount.Properties.virtualNetworkRules | Where-Object {$_.id -eq $VnrID1} | Measure-Object).Count -ne 0 if(-not($existsCosmos)){ $ourObject = New-Object -TypeName psobject $ourObject | Add-Member -MemberType NoteProperty -Name id -Value $VnrID1 $ourObject | Add-Member -MemberType NoteProperty -Name ignoreMissingVNetServiceEndpoint -Value True $newVnetRules = $vnetrules, $ourObject $cosmosAccount.Properties.virtualNetworkRules = $newVnetRules $CosmosDBProperties = $cosmosAccount.Properties Set-AzureRmResource -ResourceType $ResourceType -ResourceGroupName $ResourceGroupName -ResourceName $accountname -Properties $cosmosDBProperties -Force } } 1009 *1009* 1009 * Советы очень ценятся

Спасибо

1 Ответ

1 голос
/ 17 марта 2020

Мы решили аналогичную проблему, предоставив нашей учетной записи службы развертывания Network Contributor для внешней подписки.

Мы столкнулись с той же ошибкой практически в том же сценарии при развертывании составного шаблона ARM с помощью Key Vault, Service. Шина, учетная запись хранения и учетная запись Cosmos DB. Первые три успешно развернуты, и брандмауэры были настроены с ожидаемыми виртуальными сетями / подсетями из отдельной подписки, привязанной к целевой подписке развертывания VNet. Все с RBA C во внешней подписке выглядело нормально. Поиск в документации Microsoft для конечных точек службы привел меня к следующему:

"После добавления конечных точек службы VNet в учетную запись Azure Cosmos для внесения любых изменений в настройки учетной записи вам нужен доступ к действию Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action для всех VNET, настроенных для вашей учетной записи Azure Cosmos. Это разрешение требуется, поскольку процесс авторизации проверяет доступ к ресурсам (таким как база данных и ресурсы виртуальной сети) перед оценкой каких-либо свойств. "

Источник: https://docs.microsoft.com/en-us/azure/cosmos-db/vnet-service-endpoint?toc=%2Fazure%2Fvirtual-network%2Ftoc.json#are -дополнительный -rba c -permissions-required-for- azure -cosmos-account-with- vnet -service-endpoints

На самом деле не имело смысла добавлять явное разрешение для учетной записи Cosmos DB, тем более что другие типы ресурсов были в порядке. После добавления дополнительной политики доступа учетная запись Cosmos DB успешно развернута.

...