Командлет Set-AzKeyVaultAccessPolicy предоставляет или изменяет существующие разрешения для пользователя, приложения или группы безопасности для выполнения указанных операций с хранилищем ключей. Он не изменяет разрешения, которые имеют другие пользователи, приложения или группы безопасности в хранилище ключей.
Если вы задаете разрешения для группы безопасности, эта операция влияет только на пользователей в этой группе безопасности.
Следующие каталоги должны быть одинаковыми каталогами Azure:
Каталог по умолчанию подписки Azure, в которой находится хранилище ключей.
Каталог Azure, содержащий пользователя или группу приложений, которым вы предоставляете разрешения.
Примеры сценариев, когда эти условия не выполнены, и этот командлет не будет работать:
Авторизация пользователя из другой организации для управления хранилищем ключей.
У каждой организации есть собственный каталог.
У вашей учетной записи Azure несколько каталогов.
Если вы регистрируете приложение в каталоге, отличном от каталога по умолчанию, вы не можете авторизовать это приложение для использования хранилища ключей.
Приложение должно находиться в каталоге по умолчанию.
Обратите внимание, что хотя указание группы ресурсов является необязательным для этого командлета, это необходимо сделать для повышения производительности.
Командлет может вызвать ниже API Microsoft Graph в соответствии с входным параметрами:
GET /directoryObjects/{id}
GET /users/{id}
GET /users
GET /servicePrincipals/{id}
GET /servicePrincipals
GET /groups/{id}
Замечание
При использовании субъекта-службы для предоставления разрешений политики доступа необходимо использовать -BypassObjectIdValidation параметр.
Примеры
Пример 1. Предоставление пользователю разрешений для хранилища ключей и изменение разрешений
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -UserPrincipalName '[email protected]' -PermissionsToKeys create,import,delete,list -PermissionsToSecrets set,delete -PassThru
Vault Name : Contoso03Vault
Resource Group Name : myrg
Location : westus
Resource ID : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myrg/providers
/Microsoft.KeyVault/vaults/contoso03vault
Vault URI : https://contoso03vault.vault.azure.net/
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
SKU : Standard
Enabled For Deployment? : True
Enabled For Template Deployment? : False
Enabled For Disk Encryption? : False
Soft Delete Enabled? : True
Access Policies :
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Application ID :
Display Name : User Name ([email protected])
Permissions to Keys : create, import, delete, list
Permissions to Secrets : set, delete
Permissions to Certificates :
Permissions to (Key Vault Managed) Storage :
Tags :
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -UserPrincipalName '[email protected]' -PermissionsToSecrets set,delete,get -PassThru
Vault Name : Contoso03Vault
Resource Group Name : myrg
Location : westus
Resource ID : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myrg/providers
/Microsoft.KeyVault/vaults/contoso03vault
Vault URI : https://contoso03vault.vault.azure.net/
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
SKU : Standard
Enabled For Deployment? : True
Enabled For Template Deployment? : False
Enabled For Disk Encryption? : False
Soft Delete Enabled? : True
Access Policies :
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Application ID :
Display Name : User Name ([email protected])
Permissions to Keys : create, import, delete, list
Permissions to Secrets : set, delete, get
Permissions to Certificates :
Permissions to (Key Vault Managed) Storage :
Tags :
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -UserPrincipalName '[email protected]' -PermissionsToKeys @() -PassThru
Vault Name : Contoso03Vault
Resource Group Name : myrg
Location : westus
Resource ID : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myrg/providers
/Microsoft.KeyVault/vaults/contoso03vault
Vault URI : https://contoso03vault.vault.azure.net/
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
SKU : Standard
Enabled For Deployment? : True
Enabled For Template Deployment? : False
Enabled For Disk Encryption? : False
Soft Delete Enabled? : True
Access Policies :
Tenant ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Application ID :
Display Name : User Name ([email protected])
Permissions to Keys :
Permissions to Secrets : set, delete, get
Permissions to Certificates :
Permissions to (Key Vault Managed) Storage :
Tags :
Первая команда предоставляет разрешения для пользователя в идентификаторе Microsoft Entra, [email protected]чтобы выполнять операции с ключами и секретами с хранилищем ключей с именем Contoso03Vault. Параметр PassThru приводит к возврату обновленного объекта командлетом.
Вторая команда изменяет разрешения, предоставленные [email protected] в первой команде, чтобы теперь разрешить получение секретов в дополнение к настройке и удалению. Разрешения для операций с ключами остаются неизменными после этой команды.
Последняя команда дополнительно изменяет существующие разрешения для [email protected] удаления всех разрешений для ключевых операций. Разрешения для секретных операций остаются неизменными после этой команды.
Пример 2. Предоставление разрешений субъекту-службе приложений для чтения и записи секретов
Эта команда предоставляет разрешения для приложения для хранилища ключей с именем Contoso03Vault.
Параметр ServicePrincipalName указывает приложение. Приложение должно быть зарегистрировано в идентификаторе Microsoft Entra. Значение параметра ServicePrincipalName должно быть либо именем субъекта-службы приложения, либо идентификатором GUID приложения.
В этом примере указывается имя http://payroll.contoso.comсубъекта-службы, а команда предоставляет приложению разрешения на чтение и запись секретов.
Пример 3. Предоставление разрешений для приложения с помощью идентификатора объекта
Эта команда предоставляет приложениям разрешения на чтение и запись секретов.
В этом примере указывается приложение с помощью идентификатора объекта субъекта-службы приложения.
Пример 4. Предоставление разрешений для имени участника-пользователя
Эта команда предоставляет разрешения на получение, перечисление и задание разрешений для указанного имени участника-пользователя для доступа к секретам.
Пример 5. Включение извлечения секретов из хранилища ключей поставщиком ресурсов Microsoft.Compute
Эта команда предоставляет разрешения для получения секретов из хранилища ключей Contoso03Vault поставщиком ресурсов Microsoft.Compute.
Пример 6. Предоставление разрешений группе безопасности
Get-AzADGroup
Set-AzKeyVaultAccessPolicy -VaultName 'myownvault' -ObjectId (Get-AzADGroup -SearchString 'group2')[0].Id -PermissionsToKeys get, set -PermissionsToSecrets get, set
Первая команда использует командлет Get-AzADGroup для получения всех групп Active Directory. В выходных данных отображаются 3 группы, возвращенные с именем group1, group2 и group3. Несколько групп могут иметь одно и то же имя, но всегда иметь уникальный ObjectId. Если возвращается несколько групп с одинаковым именем, используйте ObjectId в выходных данных для идентификации нужного.
Затем вы используете выходные данные этой команды с Set-AzKeyVaultAccessPolicy для предоставления разрешений на группирование2 для хранилища ключей с именем myownvault. В этом примере перечисляются группы с именем group2 в одной командной строке.
В возвращаемом списке может быть несколько групп, которые называются group2.
В этом примере выбирается первая, указанная индексом [0] в возвращаемом списке.
Пример 7. Предоставление Azure Information Protection доступа к ключу клиента, управляемому клиентом (BYOK)
Эта команда разрешает Azure Information Protection использовать управляемый клиентом ключ (сценарий с собственным ключом или BYOK) в качестве ключа клиента Azure Information Protection.
При выполнении этой команды укажите собственное имя хранилища ключей, но необходимо указать параметр ServicePrincipalName и указать разрешения в примере.
Позволяет указать идентификатор объекта без проверки того, что объект существует в идентификаторе Microsoft Entra.
Используйте этот параметр, только если вы хотите предоставить доступ к хранилищу ключей идентификатору объекта, который ссылается на делегированную группу безопасности из другого клиента Azure.
Указывает адрес электронной почты пользователя, которому необходимо предоставить разрешения.
Этот адрес электронной почты должен существовать в каталоге, связанном с текущей подпиской, и быть уникальным.
Позволяет поставщику ресурсов Microsoft.Compute извлекать секреты из этого хранилища ключей, когда это хранилище ключей ссылается на создание ресурсов, например при создании виртуальной машины.
Указывает идентификатор объекта пользователя или субъекта-службы в идентификаторе Microsoft Entra ID, для которого необходимо предоставить разрешения. Его значение имеет формат GUID.
Задает массив разрешений на сертификат для предоставления пользователю или субъекту-службе.
"Все" предоставит все разрешения, кроме "Очистка" Допустимые значения для этого параметра:
Задает массив разрешений на операцию ключа для предоставления пользователю или субъекту-службе.
"Все" предоставит все разрешения, кроме "Очистка" Допустимые значения для этого параметра:
Задает массив разрешений на секретную операцию для предоставления пользователю или субъекту-службе.
"Все" предоставит все разрешения, кроме "Очистка" Допустимые значения для этого параметра:
Указывает управляемые учетные записи хранения и разрешения на операции определения SaS для предоставления пользователю или субъекту-службе.
"Все" предоставит все разрешения, кроме "Очистка" Допустимые значения для этого параметра:
Указывает имя субъекта-службы приложения, которому необходимо предоставить разрешения.
Укажите идентификатор приложения, также известный как идентификатор клиента, зарегистрированный для приложения в идентификаторе Microsoft Entra. Приложение с именем субъекта-службы, которое указывает этот параметр, необходимо зарегистрировать в каталоге Azure, который содержит текущую подписку.
Идентификатор подписки.
По умолчанию командлеты выполняются в подписке, заданной в текущем контексте. Если пользователь указывает другую подписку, текущий командлет выполняется в подписке, указанной пользователем.
Переопределение подписок действует только в течение жизненного цикла текущего командлета. Он не изменяет подписку в контексте и не влияет на последующие командлеты.
Указывает имя участника-пользователя, которому необходимо предоставить разрешения.
Это имя участника-пользователя должно существовать в каталоге, связанном с текущей подпиской.
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.