Azure 金鑰保存庫 是一種雲端服務,可為金鑰、密碼和憑證等秘密提供安全存放區。 本快速入門專注於部署 Azure Resource Manager 範本(ARM 範本)的過程,以建立金鑰保存庫和金鑰。
Azure Resource Manager 模板 是一個 JavaScript 物件符號(JSON)檔案,用來定義你專案的基礎架構與設定。 範本使用宣告式語法。 您可以描述預期的部署,而不需要撰寫程式設計命令順序來建立部署。
如果你的環境符合前提條件,且熟悉使用 ARM 範本,請選擇 部署到 Azure 按鈕。 範本會在 Azure 入口網站中開啟。
先決條件
以下是完成本文的步驟:
檢閱範本
本快速入門中使用的範本是來自 Azure 快速入門範本。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.42.1.51946",
"templateHash": "9113739717796369919"
}
},
"parameters": {
"vaultName": {
"type": "string",
"metadata": {
"description": "The name of the key vault to be created."
}
},
"keyName": {
"type": "string",
"metadata": {
"description": "The name of the key to be created."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location of the resources."
}
},
"skuName": {
"type": "string",
"defaultValue": "standard",
"allowedValues": [
"standard",
"premium"
],
"metadata": {
"description": "The SKU of the vault to be created."
}
},
"keyType": {
"type": "string",
"defaultValue": "RSA",
"allowedValues": [
"EC",
"EC-HSM",
"RSA",
"RSA-HSM"
],
"metadata": {
"description": "The JsonWebKeyType of the key to be created."
}
},
"keyOps": {
"type": "array",
"defaultValue": [],
"metadata": {
"description": "The permitted JSON web key operations of the key to be created."
}
},
"keySize": {
"type": "int",
"defaultValue": 2048,
"metadata": {
"description": "The size in bits of the key to be created."
}
},
"curveName": {
"type": "string",
"defaultValue": "",
"allowedValues": [
"",
"P-256",
"P-256K",
"P-384",
"P-521"
],
"metadata": {
"description": "The JsonWebKeyCurveName of the key to be created."
}
}
},
"resources": [
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2023-07-01",
"name": "[parameters('vaultName')]",
"location": "[parameters('location')]",
"properties": {
"enableRbacAuthorization": true,
"enableSoftDelete": true,
"softDeleteRetentionInDays": 90,
"enablePurgeProtection": true,
"enabledForDeployment": false,
"enabledForDiskEncryption": false,
"enabledForTemplateDeployment": false,
"tenantId": "[subscription().tenantId]",
"sku": {
"name": "[parameters('skuName')]",
"family": "A"
},
"networkAcls": {
"defaultAction": "Allow",
"bypass": "AzureServices"
}
}
},
{
"type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2023-07-01",
"name": "[format('{0}/{1}', parameters('vaultName'), parameters('keyName'))]",
"properties": {
"kty": "[parameters('keyType')]",
"keyOps": "[parameters('keyOps')]",
"keySize": "[parameters('keySize')]",
"curveName": "[parameters('curveName')]"
},
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
]
}
],
"outputs": {
"proxyKey": {
"type": "object",
"value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')), '2023-07-01')]"
},
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"name": {
"type": "string",
"value": "[parameters('vaultName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
}
}
}
範本中定義了兩個資源:
- Microsoft。KeyVault/vaults:建立一個Azure的金鑰保險庫。
- Microsoft。KeyVault/vaults/keys:建立一個金鑰庫金鑰。
範本會建立啟用 Azure RBAC 授權的金鑰庫。 這表示保存庫使用 Azure 角色型存取控制 (Azure RBAC) 進行資料平面授權,而非使用存取原則。
如需更多 Azure 金鑰保存庫範本範例,請參閱 Azure 快速入門範本。
範本參數
| 參數 | Description |
|---|---|
| 保存庫名稱 | 新鑰匙庫的名稱。 在 vault.azure.net 命名空間內必須是全域唯一的。 |
| 關鍵字名稱 | 要在保存庫中建立的金鑰名稱。 |
| 位置 | 資源所在的 Azure 區域。 預設是資源群組的位置。 |
| skuName | 保存庫 SKU。
standard (預設)或 premium。 |
| keyType | 要建立的金鑰類型。
RSA、RSA-HSM、EC、EC-HSM其中之一。 預設值為 RSA。 請參見 JsonWebKeyType。 |
| keySize | 以金鑰位元為單位的大小(僅限 RSA)。 預設值為 2048。 |
| curveName | 橢圓曲線名稱(僅適用於 EC 金鑰)。
P-256、P-256K、P-384、P-521其中之一。 請參見 JsonWebKeyCurveName。 |
| keyOps | 此金鑰允許執行的 JSON Web Key 作業 (例如 ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"])。 空陣列(預設)允許所有操作。 |
部署範本
選擇以下圖片登入 Azure 並開啟範本。 範本會建立一個金鑰庫和一個金鑰。
選取或輸入下列值。 除非特別指定,否則就用預設值。
- 訂用帳戶:選取 Azure 訂用帳戶。
- 資源群組:選取 [新建],輸入資源群組的唯一名稱,然後選取 [確認]。
- 區域:選擇地點。 例如,美國中部。
-
保險庫名稱:輸入金鑰保險庫名稱,且必須在命名空間內
vault.azure.net全域唯一。 - 金鑰名稱:輸入你存放在金鑰保險庫中的金鑰名稱。
- SKU 名稱:選擇 標準 或 高級。 預設是 標準。
- 金鑰類型:選擇一種金鑰類型。 預設是 RSA。
- 金鑰大小:輸入金鑰大小(RSA 鍵)。 預設是 2048。
- 曲線名稱:使用 EC 鍵,請選擇一條曲線。 RSA 金鑰請留空。
選取 [檢閱 + 建立],然後選取 [建立]。 當金鑰庫和金鑰成功部署後,你會收到通知。
你也可以使用 Azure PowerShell、Azure CLI 或 REST API 來部署範本。 若要了解其他部署方法,請參閱部署範本。
指派 金鑰保存庫 RBAC 角色
此範本所建立的金鑰庫使用Azure RBAC授權。 要透過資料平面存取金鑰(例如使用 Azure CLI 或 Azure PowerShell),你需要為自己指定一個適當的角色。
取得您的 Microsoft Entra 使用者物件 ID:
az ad signed-in-user show --query id -o tsv在金鑰保存庫上,將金鑰保存庫密碼編譯主管角色指派給自己:
echo "Enter your key vault name:" && read keyVaultName && az role assignment create --role "Key Vault Crypto Officer" \ --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \ --scope $(az keyvault show --name $keyVaultName --query id -o tsv)Note
角色指派可能需要一兩分鐘才會生效。
檢閱已部署的資源
您可以使用 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)動作。 內建的「金鑰保存庫 Contributor」角色已足夠,因為它授權所有符合「Microsoft.KeyVault/*」模式的 Azure RBAC 行動。
透過
現有的 API (透過資料平面建立金鑰)
- 您可以建立新金鑰、更新現有金鑰,以及建立現有金鑰的新版本。
- 呼叫端必須獲得使用此 API 的授權。 如果保存庫已啟用 Azure RBAC,則呼叫者必須具有 "Microsoft.KeyVault/vaults/keys/create/action" 這項 Azure RBAC DataAction。
清理資源
其他 金鑰保存庫 快速入門和教學課程會以此快速入門為基礎。 如果您打算繼續進行後續的快速入門和教學課程,您可以讓這些資源留在原處。 不再需要時,請刪除資源群組,這會刪除金鑰保存庫和相關資源。 若要使用 Azure CLI 或 Azure PowerShell 刪除資源群組:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Note
刪除資源群組也會刪除金鑰庫,但金庫會進入軟刪除狀態,並在保留期間(預設為 90 天)內仍可恢復。 在此期間,該保存庫名稱仍會在全域保留,而且因為已啟用清除保護,所以無法提前清除該保存庫。 對於標準金鑰保存庫,虛刪除的保存庫不會產生費用。 更多資訊請參見 金鑰保存庫 軟刪除概覽。
後續步驟
在本快速入門中,您使用 ARM 範本建立金鑰保存庫和金鑰,並驗證部署。 若要深入瞭解金鑰保存庫和 Azure Resource Manager,請參閱這些文章。
- 閱讀 Azure Key Vault 概觀
- 深入了解 Azure Resource Manager
- 請參閱 金鑰保存庫 安全性概觀