你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Add-AzureKeyVaultKey
在密钥保管库中创建密钥或将密钥导入密钥保管库。
警告
AzureRM PowerShell 模块已自 2024 年 2 月 29 日起正式弃用。 为了确保持续获得支持和更新,建议用户从 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>]
说明
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 文件,则导入后软件会自动保护密钥。 若要替代此默认值,请将 目标 参数设置为 HSM,以便密钥受 HSM 保护。 指定此参数时, 目标 参数是可选的。
类型: | String |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-KeyOps
指定可以使用此 cmdlet 添加的键执行的操作数组。 如果未指定此参数,则可以执行所有操作。 此参数的可接受值是 JSON Web 密钥 (JWK) 规范中定义的一个以逗号分隔的密钥操作列表:
- 加密
- 解密
- 包装
- 解包
- 签名
- 验证
类型: | 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
保管库资源 ID。
类型: | 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)