Azure Key Vault是一种云服务,它为机密(如密钥、密码和证书)提供安全存储。 本快速入门重点介绍部署Bicep文件以创建密钥保管库和密钥的过程。
Bicep是一种特定于域的语言(DSL),它使用声明性语法来部署Azure资源。 它提供简明的语法、可靠的类型安全性以及对代码重用的支持。 Bicep为Azure中的基础结构即代码解决方案提供最佳创作体验。
先决条件
若要完成本文,需要做好以下准备:
查看Bicep文件
@description('The name of the key vault to be created.')
param vaultName string
@description('The name of the key to be created.')
param keyName string
@description('The location of the resources')
param location string = resourceGroup().location
@description('The SKU of the vault to be created.')
@allowed([
'standard'
'premium'
])
param skuName string = 'standard'
@description('The JsonWebKeyType of the key to be created.')
@allowed([
'EC'
'EC-HSM'
'RSA'
'RSA-HSM'
])
param keyType string = 'RSA'
@description('The permitted JSON web key operations of the key to be created.')
param keyOps array = []
@description('The size in bits of the key to be created.')
param keySize int = 2048
@description('The JsonWebKeyCurveName of the key to be created.')
@allowed([
''
'P-256'
'P-256K'
'P-384'
'P-521'
])
param curveName string = ''
resource vault 'Microsoft.KeyVault/vaults@2021-11-01-preview' = {
name: vaultName
location: location
properties: {
accessPolicies:[]
enableRbacAuthorization: true
enableSoftDelete: true
softDeleteRetentionInDays: 90
enabledForDeployment: false
enabledForDiskEncryption: false
enabledForTemplateDeployment: false
tenantId: subscription().tenantId
sku: {
name: skuName
family: 'A'
}
networkAcls: {
defaultAction: 'Allow'
bypass: 'AzureServices'
}
}
}
resource key 'Microsoft.KeyVault/vaults/keys@2021-11-01-preview' = {
parent: vault
name: keyName
properties: {
kty: keyType
keyOps: keyOps
keySize: keySize
curveName: curveName
}
}
output proxyKey object = key.properties
Bicep文件中定义了两个资源:
可以在 Azure 快速入门模板中找到更多Azure Key Vault模板示例。
参数和定义
| 参数 | 定义 |
|---|---|
| keyOps | 指定可使用该密钥执行的操作。 如果未指定此参数,则可以执行所有操作。 此参数的可接受值是 JSON Web 密钥 (JWK) 规范中定义的一个以逗号分隔的密钥操作列表:["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"] |
| CurveName | EC密钥类型的椭圆曲线名称。 请参阅 JsonWebKeyCurveName |
| Kty | 要创建的密钥类型。 有关有效值,请参阅 JsonWebKeyType |
| 标记 | 键值对形式的应用程序特定元数据。 |
| nbf | 将时间指定为 DateTime 对象,在该时间之前不能使用密钥。 格式为 Unix 时间戳(UTC 时间 1970 年 1 月 1 日 Unix 纪元之后的秒数)。 |
| exp | 指定过期时间作为 DateTime 对象。 格式为 Unix 时间戳(UTC 时间 1970 年 1 月 1 日 Unix 纪元之后的秒数)。 |
部署 Bicep 文件
将Bicep文件保存为 main.bicep 到本地计算机。
使用Azure CLI或Azure PowerShell部署Bicep文件。
az group create --name exampleRG --location chinaeast az deployment group create --resource-group exampleRG --template-file main.bicep --parameters vaultName=<vault-name> keyName=<key-name>注意
将
<vault-name>替换为密钥保管库的名称。 将<vault-name>替换为密钥保管库的名称,将<key-name>替换为密钥的名称。部署完成后,应会看到一条指出部署成功的消息。
查看已部署的资源
可以使用Azure门户检查密钥保管库和密钥。 或者,使用以下Azure CLI或Azure PowerShell脚本列出创建的密钥。
echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault key list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."
通过 ARM 模板创建密钥不同于通过数据平面创建密钥
通过 ARM 创建密钥
只能创建新密钥。 不能更新现有密钥,也不能创建新版现有密钥。 如果该密钥已存在,则从存储中检索并使用现有密钥(不会执行任何写入操作)。
若要获得使用此 API 的授权,调用方需要具有 “Microsoft。KeyVault/vaults/keys/write“基于角色的访问控制(Azure RBAC)操作。 内置的“Key Vault Contributor”角色已经足够,因为它授权了所有与模式“Microsoft.KeyVault/*”匹配的Azure RBAC操作。
现有 API(通过数据平面创建密钥)
- 可以创建新密钥、更新现有密钥,以及创建新版现有密钥。
- 调用方必须有权使用此 API。 如果保管库使用访问策略,则调用方必须具有“创建”密钥权限,如果为 Azure RBAC 启用了保管库,则调用方必须具有“Microsoft.KeyVault/vaults/keys/create/action” Azure RBAC DataAction。
清理资源
其他密钥保管库的快速入门和教程都是基于本快速入门构建的。 如果打算继续使用后续的快速入门和教程,则可能需要保留这些资源。 不再需要时,请删除资源组,该资源组会删除Key Vault和相关资源。 若要使用Azure CLI或Azure PowerShell删除资源组,请执行以下操作:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
后续步骤
在本快速入门中,你使用Bicep文件创建了密钥保管库和密钥,并验证了部署。 若要详细了解Key Vault和Azure Resource Manager,请参阅以下文章。
- 查看 Azure Key Vault 概述
- 详细了解 Azure Resource Manager
- 查看 Key Vault 安全概述