共用方式為


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之允許索引鍵作業的值。 此命令會指定在先前命令中建立的 ExpiresNotBefore 參數的時間,以及高嚴重性和 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

輸入

PSKeyVault

參數:InputObject (ByValue)

String

輸出

PSKeyVaultKey