Set-AzureRmKeyVaultAccessPolicy
授與或修改使用者、應用程式或安全組的現有許可權,以使用金鑰保存庫執行作業。
警告
自 2024 年 2 月 29 日起,AzureRM PowerShell 模組已正式淘汰。 建議使用者從 AzureRM 遷移至 Az PowerShell 模組,以確保持續支援和更新。
雖然 AzureRM 模組可能仍可運作,但不再維護或支援它,但會根據用戶的判斷權和風險放置任何繼續使用。 如需轉換至 Az 模組的指引,請參閱我們的 移轉資源 。
語法
Set-AzureRmKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
-UserPrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
-ObjectId <String>
[-ApplicationId <Guid>]
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-BypassObjectIdValidation]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
-ServicePrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
-EmailAddress <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-VaultName] <String>
[[-ResourceGroupName] <String>]
[-EnabledForDeployment]
[-EnabledForTemplateDeployment]
[-EnabledForDiskEncryption]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
-ObjectId <String>
[-ApplicationId <Guid>]
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-BypassObjectIdValidation]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
-ServicePrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
-UserPrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
-EmailAddress <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-InputObject] <PSKeyVaultIdentityItem>
[-EnabledForDeployment]
[-EnabledForTemplateDeployment]
[-EnabledForDiskEncryption]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-ResourceId] <String>
-ObjectId <String>
[-ApplicationId <Guid>]
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-BypassObjectIdValidation]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-ResourceId] <String>
-ServicePrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-ResourceId] <String>
-UserPrincipalName <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-ResourceId] <String>
-EmailAddress <String>
[-PermissionsToKeys <String[]>]
[-PermissionsToSecrets <String[]>]
[-PermissionsToCertificates <String[]>]
[-PermissionsToStorage <String[]>]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AzureRmKeyVaultAccessPolicy
[-ResourceId] <String>
[-EnabledForDeployment]
[-EnabledForTemplateDeployment]
[-EnabledForDiskEncryption]
[-PassThru]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Set-AzureRmKeyVaultAccessPolicy Cmdlet 會授與或修改使用者、應用程式或安全組的現有許可權,以使用密鑰保存庫執行指定的作業。 它不會修改其他使用者、應用程式或安全組在密鑰保存庫上擁有的許可權。 如果您要設定安全組的許可權,此作業只會影響該安全組中的使用者。 下列目錄全都必須是相同的 Azure 目錄:
- 金鑰保存庫所在的 Azure 訂用帳戶預設目錄。
- Azure 目錄,其中包含您要授與許可權的使用者或應用程式群組。 不符合這些條件且此 Cmdlet 無法運作的案例範例如下:
- 授權來自不同組織的使用者管理您的金鑰保存庫。 每個組織都有自己的目錄。
- 您的 Azure 帳戶有多個目錄。 如果您在預設目錄以外的目錄中註冊應用程式,則無法授權該應用程式使用密鑰保存庫。 應用程式必須位於預設目錄中。 請注意,雖然指定此 Cmdlet 的資源群組是選擇性的,但您應該這麼做以提升效能。
範例
範例 1:將金鑰保存庫的許可權授與使用者,並修改許可權
PS C:\> Set-AzureRmKeyVaultAccessPolicy -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 :
PS C:\> Set-AzureRmKeyVaultAccessPolicy -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 :
PS C:\> Set-AzureRmKeyVaultAccessPolicy -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:授與應用程式服務主體讀取和寫入秘密的許可權
PS C:\> Set-AzureRmKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -ServicePrincipalName 'http://payroll.contoso.com' -PermissionsToSecrets Get,Set
此命令會授與名為 Contoso03Vault 之金鑰保存庫的應用程式許可權。
ServicePrincipalName 參數會指定應用程式。 應用程式必須在您的 Microsoft Entra ID 中註冊。 ServicePrincipalName 參數的值必須是應用程式的服務主體名稱或應用程式識別碼 GUID。
此範例會指定服務主體名稱 http://payroll.contoso.com
,而 命令會授與應用程式讀取和寫入秘密的許可權。
範例 3:使用其物件標識碼授與應用程式的許可權
PS C:\> Set-AzureRmKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -ObjectId 34595082-9346-41b6-8d6b-295a2808b8db -PermissionsToSecrets Get,Set
此命令會授與應用程式讀取和寫入秘密的許可權。 此範例會使用應用程式服務主體的物件標識碼來指定應用程式。
範例 4:授與用戶主體名稱的許可權
PS C:\> Set-AzureRmKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -UserPrincipalName 'PattiFuller@contoso.com' -PermissionsToSecrets Get,List,Set
此命令會授與取得、列出和設定指定用戶主體名稱的許可權,以存取秘密。
範例 5:讓Microsoft.Compute 資源提供者從密鑰保存庫擷取秘密
PS C:\> Set-AzureRmKeyVaultAccessPolicy -VaultName 'Contoso03Vault' -ResourceGroupName 'Group14' -EnabledForDeployment
此命令會授與Microsoft.Compute 資源提供者從 Contoso03Vault 金鑰保存庫擷取之秘密的許可權。
範例 6:將許可權授與安全組
PS C:\> Get-AzureRmADGroup
PS C:\> Set-AzureRmKeyVaultAccessPolicy -VaultName 'myownvault' -ObjectId (Get-AzureRmADGroup -SearchString 'group2')[0].Id -PermissionsToKeys get, set -PermissionsToSecrets get, set
第一個命令會使用 Get-AzureRmADGroup Cmdlet 來取得所有 Active Directory 群組。 從輸出中,您會看到傳回的 3 個群組,名為 group1、group2 和 group3。 多個群組可以有相同的名稱,但一律有唯一的 ObjectId。 傳回多個具有相同名稱的群組時,請使用輸出中的 ObjectId 來識別您想要使用的群組。 然後使用此命令的輸出搭配 Set-AzureRmKeyVaultAccessPolicy,將名為 myownvault 之密鑰保存庫的 group2 許可權授與許可權。 這個範例會列舉相同命令行中名為 『group2』 的群組。 傳回的清單中可能會有多個名為 『group2』的群組。 本範例會挑選傳回清單中的索引 [0] 表示的第一個範例。
範例 7:授與 Azure 資訊保護 客戶管理的租使用者密鑰存取權 (BYOK)
PS C:\> Set-AzureRmKeyVaultAccessPolicy -VaultName 'Contoso04Vault' -ServicePrincipalName 00000012-0000-0000-c000-000000000000 -PermissionsToKeys decrypt,sign,get
此命令授權 Azure 資訊保護 使用客戶自控金鑰(自備密鑰或 “BYOK” 案例)作為 Azure 資訊保護 租使用者密鑰。 當您執行此命令時,請指定您自己的密鑰保存庫名稱,但您必須使用 GUID 000000012-00000-0000-000000000000-c000-00000000000000000000000000000-00000000000000000000000000000000000000000000000000-0000000000000000-0000-c000-0000000-000000000000000000000000000000 指定 ServicePrincipalName 參數,並在範例中指定許可權。
參數
-ApplicationId
供日後使用。
類型: | Nullable<T>[Guid] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-BypassObjectIdValidation
可讓您指定物件標識碼,而不驗證物件存在於 entra ID Microsoft。 只有當您想要將金鑰保存庫的存取權授與參考另一個 Azure 租使用者委派安全組的物件識別元時,才使用此參數。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Confirm
執行 Cmdlet 之前先提示您確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DefaultProfile
用於與 azure 通訊的認證、帳戶、租用戶和訂用帳戶
類型: | IAzureContextContainer |
別名: | AzureRmContext, AzureCredential |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-EmailAddress
指定要授與許可權之使用者的使用者電子郵件位址。 此電子郵件地址必須存在於與目前訂用帳戶相關聯的目錄中,而且是唯一的。
類型: | String |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-EnabledForDeployment
當資源建立中參考此密鑰保存庫時,可讓 Microsoft.Compute 資源提供者從此密鑰保存庫擷取秘密,例如建立虛擬機時。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-EnabledForDiskEncryption
可讓 Azure 磁碟加密服務從此金鑰保存庫取得秘密和解除包裝密鑰。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-EnabledForTemplateDeployment
當範本部署中參考此金鑰保存庫時,可讓 Azure Resource Manager 從此密鑰保存庫取得秘密。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
金鑰保存庫物件
類型: | PSKeyVaultIdentityItem |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-ObjectId
在要授與許可權的 entra ID Microsoft 中,指定要授與許可權之使用者或服務主體的對象標識碼。
類型: | String |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-PassThru
會傳回 物件,代表您正在使用的專案。 根據預設,此 Cmdlet 不會產生任何輸出。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-PermissionsToCertificates
指定要授與用戶或服務主體的憑證許可權陣列。 此參數可接受的值:
- 取得 Yammer
- 清單
- 刪除
- 建立
- Import
- 更新
- Managecontacts
- Getissuers
- Listissuers
- Setissuers
- Deleteissuers
- Manageissuers
- 復原
- Backup
- 還原
- 清除
類型: | String[] |
接受的值: | get, list, delete, create, import, update, managecontacts, getissuers, listissuers, setissuers, deleteissuers, manageissuers, recover, purge, backup, restore |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-PermissionsToKeys
指定要授與用戶或服務主體之金鑰作業許可權的陣列。 此參數可接受的值:
- 解密
- Encrypt
- UnwrapKey
- WrapKey
- Verify
- 簽署
- 取得 Yammer
- 清單
- 更新
- 建立
- Import
- 刪除
- Backup
- 還原
- 復原
- 清除
類型: | String[] |
接受的值: | decrypt, encrypt, unwrapKey, wrapKey, verify, sign, get, list, update, create, import, delete, backup, restore, recover, purge |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-PermissionsToSecrets
指定要授與用戶或服務主體的秘密作業許可權陣列。 此參數可接受的值:
- 取得 Yammer
- 清單
- 設定
- 刪除
- Backup
- 還原
- 復原
- 清除
類型: | String[] |
接受的值: | get, list, set, delete, backup, restore, recover, purge |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-PermissionsToStorage
指定要授與用戶或服務主體的受控記憶體帳戶和 SaS 定義作業許可權。
類型: | String[] |
接受的值: | get, list, delete, set, update, regeneratekey, getsas, listsas, deletesas, setsas, recover, backup, restore, purge |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ResourceGroupName
指定資源群組的名稱。
類型: | String |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ResourceId
金鑰保存庫資源識別碼
類型: | String |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-ServicePrincipalName
指定要授與許可權之應用程式的服務主體名稱。 指定應用程式識別碼,也稱為用戶端標識碼,已在 Microsoft Entra ID 中註冊應用程式。 具有此參數所指定之服務主體名稱的應用程式必須在包含您目前訂用帳戶的 Azure 目錄中註冊。
類型: | String |
別名: | SPN |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | 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 |
輸入
參數:InputObject (ByValue)