你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Set-AzKeyVaultAccessPolicy
授予或修改用户、应用程序或安全组使用密钥保管库执行操作的现有权限。
语法
Set-AzKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
-UserPrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
-ObjectId <String>
[-ApplicationId <Guid>]
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-BypassObjectIdValidation]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
-ServicePrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
-EmailAddress <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
[-EnabledForDeployment]
[-EnabledForTemplateDeployment]
[-EnabledForDiskEncryption]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
-ObjectId <String>
[-ApplicationId <Guid>]
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-BypassObjectIdValidation]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
-ServicePrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
-UserPrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
-EmailAddress <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
[-EnabledForDeployment]
[-EnabledForTemplateDeployment]
[-EnabledForDiskEncryption]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-ResourceId] <String>
-ObjectId <String>
[-ApplicationId <Guid>]
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-BypassObjectIdValidation]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-ResourceId] <String>
-ServicePrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-ResourceId] <String>
-UserPrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-ResourceId] <String>
-EmailAddress <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
Set-AzKeyVaultAccessPolicy
[-ResourceId] <String>
[-EnabledForDeployment]
[-EnabledForTemplateDeployment]
[-EnabledForDiskEncryption]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[-SubscriptionId <String>]
[<CommonParameters>]
说明
Set-AzKeyVaultAccessPolicy cmdlet 授予或修改用户、应用程序或安全组的现有权限,以使用密钥保管库执行指定的操作。 它不会修改其他用户、应用程序或安全组对密钥保管库的权限。 如果要为安全组设置权限,此操作仅影响该安全组中的用户。 以下目录必须全部是相同的 Azure 目录:
- 密钥保管库所在的 Azure 订阅的默认目录。
- 包含要向其授予权限的用户或应用程序组的 Azure 目录。 如果未满足这些条件,并且此 cmdlet 无法正常工作,则方案示例如下:
- 授权来自其他组织的用户管理密钥保管库。 每个组织都有自己的目录。
- Azure 帐户有多个目录。 如果在默认目录以外的目录中注册应用程序,则无法授权该应用程序使用密钥保管库。 应用程序必须位于默认目录中。 请注意,尽管为此 cmdlet 指定资源组是可选的,但应该这样做以提高性能。
cmdlet 可以根据输入参数调用以下Microsoft图形 API:
- GET /directoryObjects/{id}
- GET /users/{id}
- GET /users
- GET /servicePrincipals/{id}
- GET /servicePrincipals
- GET /groups/{id}
注意
使用服务主体授予访问策略权限时,必须使用此参数 -BypassObjectIdValidation
。
示例
示例 1:向用户授予密钥保管库的权限并修改权限
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -UserPrincipalName 'PattiFuller@contoso.com' -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 (username@microsoft.com)
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 'PattiFuller@contoso.com' -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 (username@microsoft.com)
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 'PattiFuller@contoso.com' -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 (username@microsoft.com)
Permissions to Keys :
Permissions to Secrets : set, delete, get
Permissions to Certificates :
Permissions to (Key Vault Managed) Storage :
Tags :
第一个命令授予Microsoft Entra ID 中的用户的权限, PattiFuller@contoso.com以使用名为 Contoso03Vault 的密钥保管库对密钥和机密执行操作。 PassThru 参数导致 cmdlet 返回更新的对象。 第二个命令修改在第一个命令中授予 PattiFuller@contoso.com 的权限,现在除了设置和删除机密之外,还允许获取机密。 此命令后对密钥操作的权限保持不变。 最后一个命令进一步修改现有权限,以 PattiFuller@contoso.com 删除对密钥操作的所有权限。 此命令后对机密操作的权限保持不变。
示例 2:授予应用程序服务主体读取和写入机密的权限
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -ServicePrincipalName 'http://payroll.contoso.com' -PermissionsToSecrets Get,Set
此命令为名为 Contoso03Vault 的密钥保管库的应用程序授予权限。
ServicePrincipalName 参数指定应用程序。 必须在Microsoft Entra ID 中注册应用程序。 ServicePrincipalName 参数的值必须是应用程序的服务主体名称或应用程序 ID GUID。
此示例指定服务主体名称 http://payroll.contoso.com
,命令授予应用程序读取和写入机密的权限。
示例 3:使用应用程序对象 ID 授予应用程序的权限
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -ObjectId 34595082-9346-41b6-8d6b-295a2808b8db -PermissionsToSecrets Get,Set
此命令授予应用程序读取和写入机密的权限。 此示例使用应用程序的服务主体的对象 ID 指定应用程序。
示例 4:授予用户主体名称的权限
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -UserPrincipalName 'PattiFuller@contoso.com' -PermissionsToSecrets Get,List,Set
此命令授予访问机密的指定用户主体名称的获取、列出和设置权限。
示例 5:启用 Microsoft.Compute 资源提供程序从密钥保管库检索机密
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -ResourceGroupName 'Group14' -EnabledForDeployment
此命令授予 Microsoft.Compute 资源提供程序从 Contoso03Vault 密钥保管库检索机密的权限。
示例 6:向安全组授予权限
Get-AzADGroup
Set-AzKeyVaultAccessPolicy -VaultName 'myownvault' -ObjectId (Get-AzADGroup -SearchString 'group2')[0].Id -PermissionsToKeys get, set -PermissionsToSecrets get, set
第一个命令使用 Get-AzADGroup cmdlet 获取所有 Active Directory 组。 在输出中,你将看到返回的 3 个组,名为 group1、 group2 和 group3。 多个组可以具有相同的名称,但始终具有唯一的 ObjectId。 返回多个具有相同名称的组时,请使用输出中的 ObjectId 来标识要使用的组。 然后,将此命令的输出与 Set-AzKeyVaultAccessPolicy 配合使用,为名为 myownvault 的密钥保管库授予 group2 的权限。 此示例在同一命令行中枚举名为“group2”的组。 返回的列表中可能有多个组,这些组名为“group2”。 本示例选取返回列表中的索引 [0] 指示的第一个示例。
示例 7:授予 Azure 信息保护访问客户管理的租户密钥(BYOK)
Set-AzKeyVaultAccessPolicy -VaultName 'Contoso04Vault' -ServicePrincipalName 'MyServicePrincipal' -PermissionsToKeys decrypt,sign,get
此命令授权 Azure 信息保护使用客户管理的密钥(自带密钥或“BYOK”方案)作为 Azure 信息保护租户密钥。 运行此命令时,请指定自己的密钥保管库名称,但必须指定 ServicePrincipalName 参数,并在示例中指定权限。
参数
-ApplicationId
供将来使用。
类型: | Nullable<T>[Guid] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-BypassObjectIdValidation
使你能够指定对象 ID,而无需验证该对象存在于 Microsoft Entra ID 中。 仅当想要向引用另一个 Azure 租户的委托安全组的对象 ID 授予对密钥保管库的访问权限时,才使用此参数。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Confirm
提示你在运行 cmdlet 之前进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-DefaultProfile
用于与 azure 通信的凭据、帐户、租户和订阅
类型: | IAzureContextContainer |
别名: | AzContext, AzureRmContext, AzureCredential |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-EmailAddress
指定要向其授予权限的用户的用户电子邮件地址。 此电子邮件地址必须存在于与当前订阅关联的目录中,并且是唯一的。
类型: | String |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-EnabledForDeployment
在资源创建操作中引用此 Key Vault(例如,创建虚拟机)时,使 Microsoft.Compute 资源提供程序能够从此 Key Vault 中检索机密。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-EnabledForDiskEncryption
使 Azure 磁盘加密服务能够从此密钥保管库中获取机密和解包密钥。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-EnabledForTemplateDeployment
在模板部署中引用此 Key Vault 时,使 Azure 资源管理器能够从此 Key Vault 中获取机密。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-InputObject
密钥库 对象
类型: | PSKeyVaultIdentityItem |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-ObjectId
指定要向其授予权限的Microsoft Entra ID 中用户或服务主体的对象 ID。 其值采用 GUID 格式。
类型: | String |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-PassThru
返回一个代表你所处理的项目的对象。 默认情况下,此 cmdlet 将不产生任何输出。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-PermissionsToCertificates
指定要授予用户或服务主体的证书权限数组。 “All”将授予除“清除”之外的所有权限:此参数的可接受值:
- All
- Get
- 列出
- 删除
- 创建
- 导入
- 更新
- Managecontacts
- Getissuers
- Listissuers
- Setissuers
- Deleteissuers
- Manageissuers
- 恢复
- 备份
- 还原
- 清除
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-PermissionsToKeys
指定要授予用户或服务主体的密钥操作权限的数组。 “All”将授予除“清除”之外的所有权限:此参数的可接受值:
- All
- Decrypt
- 加密
- UnwrapKey
- WrapKey
- Verify
- 签名
- Get
- 列出
- 更新
- 创建
- 导入
- 删除
- 备份
- 还原
- 恢复
- 清除
- 旋转
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-PermissionsToSecrets
指定要授予用户或服务主体的机密操作权限数组。 “All”将授予除“清除”之外的所有权限:此参数的可接受值:
- All
- Get
- 列出
- 设置
- 删除
- 备份
- 还原
- 恢复
- 清除
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-PermissionsToStorage
指定向用户或服务主体授予的托管存储帐户和 SaS 定义操作权限。 “All”将授予除“清除”之外的所有权限:此参数的可接受值:
- 全部
- get
- 列表
- delete
- set
- update
- regeneratekey
- getsas
- listsas
- deletesas
- setsas
- recover
- backup
- 还原
- purge
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ResourceGroupName
指定资源组的名称。
类型: | String |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ResourceId
密钥库资源 ID
类型: | String |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-ServicePrincipalName
指定要向其授予权限的应用程序的服务主体名称。 指定在 Microsoft Entra ID 中为应用程序注册的应用程序 ID(也称为客户端 ID)。 具有此参数指定的服务主体名称的应用程序必须在包含当前订阅的 Azure 目录中注册。
类型: | String |
别名: | SPN |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-SubscriptionId
订阅 ID。 默认情况下,cmdlet 在当前上下文中设置的订阅中执行。 如果用户指定另一个订阅,则当前 cmdlet 在用户指定的订阅中执行。 重写订阅仅在当前 cmdlet 的生命周期内生效。 它不会更改上下文中的订阅,并且不会影响后续 cmdlet。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-UserPrincipalName
指定要向其授予权限的用户的用户主体名称。 此用户主体名称必须存在于与当前订阅关联的目录中。
类型: | String |
别名: | UPN |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-VaultName
指定密钥保管库的名称。 此 cmdlet 修改此参数指定的密钥保管库的访问策略。
类型: | String |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |