你当前正在访问 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 个组,名为 group1group2group3。 多个组可以具有相同的名称,但始终具有唯一的 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

输入

PSKeyVaultIdentityItem

String

输出

PSKeyVault