Set-AzKeyVaultAccessPolicy

授與或修改使用者、應用程式或安全組的現有許可權,以使用金鑰保存庫執行作業。

Syntax

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>]

Description

Set-AzKeyVaultAccessPolicy Cmdlet 會授與或修改使用者、應用程式或安全組的現有許可權,以使用密鑰保存庫執行指定的作業。 它不會修改其他使用者、應用程式或安全組在密鑰保存庫上擁有的許可權。 如果您要設定安全組的許可權,此作業只會影響該安全組中的使用者。 下列目錄全都必須是相同的 Azure 目錄:

  • 金鑰保存庫所在的 Azure 訂用帳戶預設目錄。
  • Azure 目錄,其中包含您要授與許可權的使用者或應用程式群組。 不符合這些條件且此 Cmdlet 無法運作的案例範例如下:
  • 授權來自不同組織的使用者管理您的金鑰保存庫。 每個組織都有自己的目錄。
  • 您的 Azure 帳戶有多個目錄。 如果您在預設目錄以外的目錄中註冊應用程式,則無法授權該應用程式使用密鑰保存庫。 應用程式必須位於預設目錄中。 請注意,雖然指定此 Cmdlet 的資源群組是選擇性的,但您應該這麼做以提升效能。

Cmdlet 可能會根據輸入參數呼叫下列 Microsoft Graph 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 參數的值必須是應用程式的服務主體名稱或應用程式識別碼 GUID。 此範例會指定服務主體名稱 http://payroll.contoso.com,而 命令會授與應用程式讀取和寫入秘密的許可權。

範例 3:使用其物件標識碼授與應用程式的許可權

Set-AzKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -ObjectId 34595082-9346-41b6-8d6b-295a2808b8db -PermissionsToSecrets Get,Set

此命令會授與應用程式讀取和寫入秘密的許可權。 此範例會使用應用程式服務主體的物件標識碼來指定應用程式。

範例 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

供日後使用。

Type:Nullable<T>[Guid]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-BypassObjectIdValidation

可讓您指定物件標識碼,而不驗證物件存在於 Microsoft Entra ID 中。 只有當您想要將金鑰保存庫的存取權授與參考另一個 Azure 租使用者委派安全組的物件識別元時,才使用此參數。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

執行 Cmdlet 之前先提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

用於與 azure 通訊的認證、帳戶、租用戶和訂用帳戶

Type:IAzureContextContainer
Aliases:AzContext, AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EmailAddress

指定要授與許可權之使用者的使用者電子郵件位址。 此電子郵件地址必須存在於與目前訂用帳戶相關聯的目錄中,而且是唯一的。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-EnabledForDeployment

當建立資源時參考此密鑰保存庫時,可讓 Microsoft.Compute 資源提供者從此密鑰保存庫擷取秘密,例如建立虛擬機時。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnabledForDiskEncryption

可讓 Azure 磁碟加密服務從此金鑰保存庫取得秘密和解除包裝密鑰。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnabledForTemplateDeployment

當範本部署中參考此金鑰保存庫時,可讓 Azure Resource Manager 從此密鑰保存庫取得秘密。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

金鑰保存庫物件

Type:PSKeyVaultIdentityItem
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ObjectId

指定要授與許可權的 Microsoft Entra ID 中使用者或服務主體的物件識別碼。 其值的格式為 GUID。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

會傳回 物件,代表您正在使用的專案。 根據預設,此 Cmdlet 不會產生任何輸出。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PermissionsToCertificates

指定要授與用戶或服務主體的憑證許可權陣列。 'All' 會授與 'Purge' 以外的所有許可權:此參數可接受的值:

  • 全部
  • Get
  • 清單​​
  • 刪除
  • 建立​​
  • Import
  • 更新
  • Managecontacts
  • Getissuers
  • Listissuers
  • Setissuers
  • Deleteissuers
  • Manageissuers
  • 復原
  • Backup
  • 還原
  • 清除
Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PermissionsToKeys

指定要授與用戶或服務主體之金鑰作業許可權的陣列。 'All' 會授與 'Purge' 以外的所有許可權:此參數可接受的值:

  • 全部
  • 解密
  • Encrypt
  • UnwrapKey
  • WrapKey
  • Verify
  • 簽署
  • Get
  • 清單​​
  • 更新
  • 建立​​
  • Import
  • 刪除
  • Backup
  • 還原
  • 復原
  • 清除
  • Rotate
Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PermissionsToSecrets

指定要授與用戶或服務主體的秘密作業許可權陣列。 'All' 會授與 'Purge' 以外的所有許可權:此參數可接受的值:

  • 全部
  • Get
  • 清單​​
  • 設定
  • 刪除
  • Backup
  • 還原
  • 復原
  • 清除
Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PermissionsToStorage

指定要授與用戶或服務主體的受控記憶體帳戶和 SaS 定義作業許可權。 'All' 會授與 'Purge' 以外的所有許可權:此參數可接受的值:

  • 全部
  • get
  • 清單
  • delete
  • set
  • update
  • regeneratekey
  • 取得
  • listsas
  • deletesas
  • setsas
  • recover
  • 備份 (backup)
  • 還原
  • 清除
Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ResourceGroupName

指定資源群組的名稱。

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ResourceId

金鑰保存庫資源識別碼

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ServicePrincipalName

指定要授與許可權之應用程式的服務主體名稱。 在 Microsoft Entra ID 中指定為應用程式註冊的應用程式識別碼,也稱為用戶端識別碼。 具有此參數所指定之服務主體名稱的應用程式必須在包含您目前訂用帳戶的 Azure 目錄中註冊。

Type:String
Aliases:SPN
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-SubscriptionId

訂用帳戶的識別碼。 根據預設,Cmdlet 會在目前內容中設定的訂用帳戶中執行。 如果使用者指定另一個訂用帳戶,則會在使用者指定的訂用帳戶中執行目前的 Cmdlet。 覆寫訂閱只會在目前 Cmdlet 的生命週期內生效。 它不會變更內容中的訂用帳戶,而且不會影響後續的 Cmdlet。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-UserPrincipalName

指定要授與許可權之使用者的用戶主體名稱。 此用戶主體名稱必須存在於與目前訂用帳戶相關聯的目錄中。

Type:String
Aliases:UPN
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-VaultName

指定金鑰保存庫的名稱。 這個 Cmdlet 會修改此參數所指定之金鑰保存庫的存取原則。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

PSKeyVaultIdentityItem

String

輸出

PSKeyVault