Не уверен, что вы на самом деле имеете в виду access keyvault
, в azure keyvault есть Management plane
и Data plane
, они используют разные механизмы контроля доступа.
Если вы хотите, чтобы ваш принципал службы выполните операции Management plane
(например, установите тег хранилища ключей), вам нужно назначить ему роль в Access control (IAM)
хранилища ключей на портале. Если вы хотите выполнять операции Data plane
(например, работать с ключами, секретами, сертификатами в хранилище ключей), вам необходимо добавить участника службы с правильными разрешениями в Access policies
хранилища ключей.
Для Для получения дополнительных сведений об управлении доступом к хранилищу ключей вы можете проверить - Безопасный доступ к хранилищу ключей .
Поэтому убедитесь, что у вашего субъекта-службы уже есть правильные разрешения, затем используйте команду ниже.
$azureAplicationId ="<application-id>"
$azureTenantId= "<tenant-id>"
$azurePassword = ConvertTo-SecureString "<client-secret>" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Connect-AzAccount -Credential $psCred -TenantId $azureTenantId -ServicePrincipal
Затем вы можете выполнять операции Management plane
, например Update-AzKeyVault
, или операции Data plane
, например Get-AzKeyVaultSecret
.
Чтобы получить доступ к хранилищу ключей в другой подписке, просто используйте команду ниже, чтобы выбрать подписку.
Set-AzContext -Subscription <subscription-id>
И я заметил, что вы используете старый модуль AzureRm
, он устарел и будет больше не обновляться, я рекомендую вам использовать новый модуль Az
, следуйте инструкциям Migrate Azure PowerShell из AzureRM в Az .