Add-AzureKeyVaultKey
在金鑰保存庫中建立金鑰,或將金鑰匯入金鑰保存庫。
警告
自 2024 年 2 月 29 日起,AzureRM PowerShell 模組已正式淘汰。 建議使用者從 AzureRM 遷移至 Az PowerShell 模組,以確保持續支援和更新。
雖然 AzureRM 模組可能仍可運作,但不再維護或支援它,但會根據用戶的判斷權和風險放置任何繼續使用。 如需轉換至 Az 模組的指引,請參閱我們的 移轉資源 。
語法
Add-AzureKeyVaultKey
[-VaultName] <String>
[-Name] <String>
-Destination <String>
[-Disable]
[-KeyOps <String[]>]
[-Expires <DateTime>]
[-NotBefore <DateTime>]
[-Tag <Hashtable>]
[-Size <Int32>]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Add-AzureKeyVaultKey
[-VaultName] <String>
[-Name] <String>
-KeyFilePath <String>
[-KeyFilePassword <SecureString>]
[-Destination <String>]
[-Disable]
[-KeyOps <String[]>]
[-Expires <DateTime>]
[-NotBefore <DateTime>]
[-Tag <Hashtable>]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Add-AzureKeyVaultKey
[-InputObject] <PSKeyVault>
[-Name] <String>
-Destination <String>
[-Disable]
[-KeyOps <String[]>]
[-Expires <DateTime>]
[-NotBefore <DateTime>]
[-Tag <Hashtable>]
[-Size <Int32>]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Add-AzureKeyVaultKey
[-InputObject] <PSKeyVault>
[-Name] <String>
-KeyFilePath <String>
[-KeyFilePassword <SecureString>]
[-Destination <String>]
[-Disable]
[-KeyOps <String[]>]
[-Expires <DateTime>]
[-NotBefore <DateTime>]
[-Tag <Hashtable>]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Add-AzureKeyVaultKey
[-ResourceId] <String>
[-Name] <String>
-Destination <String>
[-Disable]
[-KeyOps <String[]>]
[-Expires <DateTime>]
[-NotBefore <DateTime>]
[-Tag <Hashtable>]
[-Size <Int32>]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Add-AzureKeyVaultKey
[-ResourceId] <String>
[-Name] <String>
-KeyFilePath <String>
[-KeyFilePassword <SecureString>]
[-Destination <String>]
[-Disable]
[-KeyOps <String[]>]
[-Expires <DateTime>]
[-NotBefore <DateTime>]
[-Tag <Hashtable>]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Add-AzureKeyVaultKey Cmdlet 會在 Azure 金鑰保存庫 的密鑰保存庫中建立密鑰,或將密鑰匯入金鑰保存庫。 使用此 Cmdlet 使用下列任一方法新增金鑰:
- 在 金鑰保存庫 服務的硬體安全性模組 (HSM) 中建立金鑰。
- 在 金鑰保存庫 服務中建立軟體中的金鑰。
- 將金鑰從您自己的硬體安全性模組 (HSM) 匯入 金鑰保存庫 服務中的 HSM。
- 從電腦上的 .pfx 檔案匯入金鑰。
- 將電腦上的 .pfx 檔案中的密鑰匯入 金鑰保存庫 服務的硬體安全性模組(HSM)。 針對任何這些作業,您可以提供索引鍵屬性或接受預設設定。 如果您建立或匯入金鑰保存庫中現有金鑰名稱相同的金鑰,原始金鑰會以您為新金鑰指定的值進行更新。 您可以使用該金鑰版本的版本特定 URI 來存取先前的值。 若要瞭解金鑰版本和 URI 結構,請參閱關於 金鑰保存庫 REST API 檔中的金鑰和秘密。 注意:若要從您自己的硬體安全性模組匯入密鑰,您必須先使用 Azure 金鑰保存庫 BYOK 工具組產生 BYOK 套件(擴展名為 .byok 的檔案)。 如需詳細資訊,請參閱如何為 Azure 金鑰保存庫 產生和傳輸受 HSM 保護的密鑰。 最佳做法是,使用Backup-AzureKeyVaultKey Cmdlet 在建立或更新密鑰之後備份密鑰。 沒有無法刪除的功能,因此,如果您不小心刪除密鑰或刪除金鑰,然後變更主意,除非您有可還原的備份密鑰,否則無法復原密鑰。
範例
範例 1:建立金鑰
PS C:\> Add-AzureKeyVaultKey -VaultName 'contoso' -Name 'ITSoftware' -Destination 'Software'
Vault Name : contoso
Name : ITSoftware
Version : 67da57e9cadf48a2ad8d366b115843ab
Id : https://contoso.vault.azure.net:443/keys/ITSoftware/67da57e9cadf48a2ad8d366b115843ab
Enabled : True
Expires :
Not Before :
Created : 5/21/2018 11:10:58 PM
Updated : 5/21/2018 11:10:58 PM
Purge Disabled : False
Tags :
此命令會在名為 Contoso 的金鑰保存庫中建立名為 ITSoftware 的軟體保護密鑰。
範例 2:建立受 HSM 保護的金鑰
PS C:\> Add-AzureKeyVaultKey -VaultName 'contoso' -Name 'ITHsm' -Destination 'HSM'
Vault Name : contoso
Name : ITHsm
Version : 67da57e9cadf48a2ad8d366b115843ab
Id : https://contoso.vault.azure.net:443/keys/ITSoftware/67da57e9cadf48a2ad8d366b115843ab
Enabled : True
Expires :
Not Before :
Created : 5/21/2018 11:10:58 PM
Updated : 5/21/2018 11:10:58 PM
Purge Disabled : False
Tags :
此命令會在名為 Contoso 的金鑰保存庫中建立受 HSM 保護的密鑰。
範例 3:建立具有非預設值的索引鍵
PS C:\> $KeyOperations = 'decrypt', 'verify'
PS C:\> $Expires = (Get-Date).AddYears(2).ToUniversalTime()
PS C:\> $NotBefore = (Get-Date).ToUniversalTime()
PS C:\> $Tags = @{'Severity' = 'high'; 'Accounting' = "true"}
PS C:\> Add-AzureKeyVaultKey -VaultName 'contoso' -Name 'ITHsmNonDefault' -Destination 'HSM' -Expires $Expires -NotBefore $NotBefore -KeyOps $KeyOperations -Disable -Tag $Tags
Vault Name : contoso
Name : ITHsmNonDefault
Version : 929bfc14db84439b823ffd1bedadaf5f
Id : https://contoso.vault.azure.net:443/keys/ITHsmNonDefault/929bfc14db84439b823ffd1bedadaf5f
Enabled : False
Expires : 5/21/2020 11:12:43 PM
Not Before : 5/21/2018 11:12:50 PM
Created : 5/21/2018 11:13:17 PM
Updated : 5/21/2018 11:13:17 PM
Purge Disabled : False
Tags : Name Value
Severity high
Accounting true
第一個命令會將值解密,並在$KeyOperations變數中驗證。
第二個命令會使用 Get-Date Cmdlet 建立以 UTC 定義的 DateTime 物件。
該物件會指定未來兩年的時間。 命令會將該日期儲存在$Expires變數中。 如需詳細資訊,請輸入 Get-Help Get-Date
。
第三個命令會使用 Get-Date Cmdlet 建立 DateTime 物件。 該物件會指定目前的UTC時間。 命令會將該日期儲存在 $NotBefore 變數中。
最後一個命令會建立名為 ITHsmNonDefault 且為 HSM 保護密鑰的金鑰。 命令會指定儲存$KeyOperations之允許索引鍵作業的值。 此命令會指定在先前命令中建立的 Expires 和 NotBefore 參數的時間,以及高嚴重性和 IT 的標記。 新的金鑰已停用。 您可以使用 Set-AzureKeyVaultKey Cmdlet 來啟用它。
範例 4:匯入受 HSM 保護的金鑰
PS C:\> Add-AzureKeyVaultKey -VaultName 'contoso' -Name 'ITByok' -KeyFilePath 'C:\Contoso\ITByok.byok' -Destination 'HSM'
Vault Name : contoso
Name : ITByok
Version : 67da57e9cadf48a2ad8d366b115843ab
Id : https://contoso.vault.azure.net:443/keys/ITByok/67da57e9cadf48a2ad8d366b115843ab
Enabled : True
Expires :
Not Before :
Created : 5/21/2018 11:10:58 PM
Updated : 5/21/2018 11:10:58 PM
Purge Disabled : False
Tags :
此命令會從 KeyFilePath 參數指定的位置匯入名為 ITByok 的金鑰。 匯入的金鑰是受 HSM 保護的金鑰。 若要從您自己的硬體安全性模組匯入密鑰,您必須先使用 Azure 金鑰保存庫 BYOK 工具組產生 BYOK 套件(擴展名為 .byok 的檔案)。 如需詳細資訊,請參閱如何為 Azure 金鑰保存庫 產生和傳輸受 HSM 保護的密鑰。
範例 5:匯入受軟體保護的金鑰
PS C:\> $Password = ConvertTo-SecureString -String 'Password' -AsPlainText -Force
PS C:\> Add-AzureKeyVaultKey -VaultName 'contoso' -Name 'ITPfx' -KeyFilePath 'C:\Contoso\ITPfx.pfx' -KeyFilePassword $Password
Vault Name : contoso
Name : ITPfx
Version : 67da57e9cadf48a2ad8d366b115843ab
Id : https://contoso.vault.azure.net:443/keys/ITPfx/67da57e9cadf48a2ad8d366b115843ab
Enabled : True
Expires :
Not Before :
Created : 5/21/2018 11:10:58 PM
Updated : 5/21/2018 11:10:58 PM
Purge Disabled : False
Tags :
第一個命令會使用 ConvertTo-SecureString Cmdlet 將字串轉換成安全字串,然後將該字串儲存在$Password變數中。 如需詳細資訊,請輸入 Get-Help ConvertTo-SecureString
。
第二個命令會在 Contoso 金鑰保存庫中建立軟體密碼。 命令會指定儲存在 $Password 中的金鑰和密碼的位置。
範例 6:匯入金鑰並指派屬性
PS C:\> $Password = ConvertTo-SecureString -String 'password' -AsPlainText -Force
PS C:\> $Expires = (Get-Date).AddYears(2).ToUniversalTime()
PS C:\> $Tags = @{ 'Severity' = 'high'; 'Accounting' = "true" }
PS C:\> Add-AzureKeyVaultKey -VaultName 'contoso' -Name 'ITPfxToHSM' -Destination 'HSM' -KeyFilePath 'C:\Contoso\ITPfx.pfx' -KeyFilePassword $Password -Expires $Expires -Tag $Tags
Vault Name : contoso
Name : ITPfxToHSM
Version : 929bfc14db84439b823ffd1bedadaf5f
Id : https://contoso.vault.azure.net:443/keys/ITPfxToHSM/929bfc14db84439b823ffd1bedadaf5f
Enabled : True
Expires : 5/21/2020 11:12:43 PM
Not Before :
Created : 5/21/2018 11:13:17 PM
Updated : 5/21/2018 11:13:17 PM
Purge Disabled : False
Tags : Name Value
Severity high
Accounting true
第一個命令會使用 ConvertTo-SecureString Cmdlet 將字串轉換成安全字串,然後將該字串儲存在$Password變數中。 第二個命令會使用 Get-Date Cmdlet 建立 DateTime 對象,然後將該物件儲存在$Expires 變數中。 第三個命令會建立$tags變數,以設定高嚴重性和IT的標記。 最後一個命令會從指定的位置匯入金鑰作為 HSM 金鑰。 命令會指定儲存在 $Password 中$Expires和密碼中儲存的到期時間,並套用儲存在 $tags 中的標記。
參數
-Confirm
執行 Cmdlet 之前先提示您確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DefaultProfile
用於與 azure 通訊的認證、帳戶、租用戶和訂用帳戶
類型: | IAzureContextContainer |
別名: | AzureRmContext, AzureCredential |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Destination
指定將金鑰新增為受軟體保護的金鑰,還是 金鑰保存庫 服務中受 HSM 保護的金鑰。 有效值為:HSM 和軟體。 注意:若要使用 HSM 作為目的地,您必須擁有支援 HSM 的密鑰保存庫。 如需 Azure 金鑰保存庫的服務層級和功能的詳細資訊,請參閱 Azure 金鑰保存庫價格 網站。 當您建立新的金鑰時,需要此參數。 如果您使用 KeyFilePath 參數匯入金鑰,此參數是選擇性的:
- 如果您未指定此參數,而且此 Cmdlet 會匯入擴展名為 .byok 的金鑰,它會將該金鑰匯入為受 HSM 保護的金鑰。 Cmdlet 無法將該金鑰匯入為軟體保護的金鑰。
- 如果您未指定此參數,而且此 Cmdlet 會匯入擴展名為 .pfx 的金鑰,它會將金鑰匯入為軟體保護的金鑰。
類型: | String |
接受的值: | HSM, Software, HSM, Software |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Disable
表示您要新增的金鑰會設定為停用的初始狀態。 任何使用金鑰的嘗試都會失敗。 如果您要預先載入想要稍後啟用的金鑰,請使用此參數。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Expires
指定此 Cmdlet 所新增之索引鍵的到期時間做為 DateTime 物件。 此參數使用國際標準時間 (UTC)。 若要取得 DateTime 物件,請使用 Get-Date Cmdlet。 如需詳細資訊,請輸入 Get-Help Get-Date
。 如果您未指定此參數,則金鑰不會過期。
類型: | Nullable<T>[DateTime] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
Vault 物件。
類型: | PSKeyVault |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-KeyFilePassword
指定匯入檔案的密碼做為 SecureString 物件。 若要取得 SecureString 物件,請使用 ConvertTo-SecureString Cmdlet。 如需詳細資訊,請輸入 Get-Help ConvertTo-SecureString
。 您必須指定此密碼,才能匯入擴展名為 .pfx 的檔案。
類型: | SecureString |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-KeyFilePath
指定本機檔案的路徑,其中包含此 Cmdlet 匯入的金鑰數據。 有效的擴展名為 .byok 和 .pfx。
- 如果檔案是 .byok 檔案,在匯入之後,金鑰會自動受到 HSM 的保護,而且您無法覆寫此預設值。
- 如果檔案是 .pfx 檔案,則密鑰會在匯入之後自動受到軟體的保護。 若要覆寫此預設值,請將 Destination 參數設定為 HSM,讓金鑰受到 HSM 保護。 當您指定此參數時, Destination 參數是選擇性的。
類型: | String |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-KeyOps
指定可以使用這個 Cmdlet 新增的索引鍵來執行的作業陣列。 如果您未指定此參數,則可以執行所有作業。 此參數可接受的值是 JSON Web 金鑰 (JWK) 規格所定義的索引鍵作業逗號分隔清單:
- Encrypt
- 解密
- 換行
- 解除包裝
- 符號
- Verify
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Name
指定要新增至金鑰保存庫的金鑰名稱。 此 Cmdlet 會根據此參數指定的名稱、金鑰保存庫的名稱,以及您目前的環境,建構密鑰的完整功能變數名稱 (FQDN)。 名稱必須是長度為 1 到 63 個字元的字串,長度只有 0-9、a-z、A-Z 和 - (虛線符號)。
類型: | String |
別名: | KeyName |
Position: | 1 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-NotBefore
指定時間,做為 DateTime 物件,此物件之前無法使用索引鍵。 此參數使用UTC。 若要取得 DateTime 物件,請使用 Get-Date Cmdlet。 如果您未指定此參數,則可以立即使用金鑰。
類型: | Nullable<T>[DateTime] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ResourceId
保存庫資源標識碼。
類型: | String |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Size
RSA 金鑰大小,以位為單位。 如果未指定,服務會提供安全的預設值。
類型: | Nullable<T>[Int32] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Tag
哈希表形式的索引鍵/值組。 例如:@{key0=“value0”;key1=$null;key2=“value2”}
類型: | Hashtable |
別名: | Tags |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-VaultName
指定此 Cmdlet 新增金鑰的金鑰儲存庫名稱。 此 Cmdlet 會根據此參數指定的名稱和您目前的環境,建構密鑰保存庫的 FQDN。
類型: | String |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-WhatIf
顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
參數:InputObject (ByValue)