如何使用 Resource Manager 範本,建立 Azure 金鑰保存庫與保存庫的存取原則

Azure Key Vault 是一種雲端服務,可安全地儲存機密訊息,例如金鑰、密碼和憑證。 本文說明下列事項的程序:部署 Azure Resource Manager 範本 (ARM 範本),以建立金鑰保存庫。

Azure Resource Manager 範本是 JavaScript 物件表示法 (JSON) 檔案,可定義專案的基礎結構和組態。 範本使用宣告式語法。 您不需要撰寫程式設計命令順序來建立部署,即可描述預定的部署。

必要條件

若要完成本文中的步驟:

  • 如果您沒有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

使用 Resource Manager 範本建立金鑰保存庫

下列說明範本載明建立金鑰保存庫的基本方法。 在範本中,有某些值是被指定的。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "Standard",
      "allowedValues": [
        "Standard",
        "Premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    }
   },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2019-09-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "enabledForDeployment": "false",
        "enabledForDiskEncryption": "false",
        "enabledForTemplateDeployment": "false",
        "tenantId": "[subscription().tenantId]",
        "accessPolicies": [],
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    }
  ]
}

如需關於金鑰保存庫範本設定的詳細資訊,請參閱金鑰保存庫 ARM 範本參考

重要

如果重新部署範本,則會覆寫金鑰保存庫中的任何現有存取原則。 我們建議您以現有的存取原則擴充 accessPolicies 屬性,以避免遺失金鑰保存庫的存取權。

將存取原則新增至金鑰保存庫 ARM 範本

您可以直接將存取原則部署到現有的金鑰保存庫,而不需要重新部署整個金鑰保存庫範本。 下列範本顯示建立存取原則的基本方式:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "objectId": {
      "type": "string",
      "metadata": {
        "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets."
      }
    },
    "keysPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge."
      }
    },
    "secretsPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge."
      }
    },
    "certificatePermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to certificates in the vault. Valid values are: all,  create, delete, update, deleteissuers, get, getissuers, import, list, listissuers, managecontacts, manageissuers,  recover, backup, restore, setissuers, and purge."
      }
    }
  },
  "resources": [
     {
      "type": "Microsoft.KeyVault/vaults/accessPolicies",
      "name": "[concat(parameters('keyVaultName'), '/add')]",
      "apiVersion": "2019-09-01",
      "properties": {
        "accessPolicies": [
          {
            "tenantId": "[subscription().tenantId]",
            "objectId": "[parameters('objectId')]",
            "permissions": {
              "keys": "[parameters('keysPermissions')]",
              "secrets": "[parameters('secretsPermissions')]",
              "certificates": "[parameters('certificatePermissions')]"
            }
          }
        ]
      }
    }
  ]
}

如需關於金鑰保存庫範本設定的詳細資訊,請參閱金鑰保存庫 ARM 範本參考

更多金鑰保存庫 Azure Resource Manager 範本

有其他 Azure Resource Manager 範本可供金鑰保存庫的物件使用:

密碼 索引鍵 憑證
N/A N/A

您可以在此找到更多金鑰保存庫的範本:Key Vault Azure Resource Manager 參考

部署範本

您可以使用 Microsoft Azure 入口網站來部署上述範本,方法為:使用 [在編輯器中建立自己的範本] 選項,其描述如下:從自訂範本中部署資源

您也可以將上述範本儲存至檔案,並使用下列命令:New-AzResourceGroupDeploymentaz deployment group create

New-AzResourceGroupDeployment -ResourceGroupName ExampleGroup -TemplateFile key-vault-template.json
az deployment group create --resource-group ExampleGroup --template-file key-vault-template.json

清除資源

如果您打算繼續進行後續的快速入門和教學課程,您可以把這些資源留在原處。 當您不再需要這些資源時,請刪除資源群組。 如果您將群組刪除,金鑰保存庫及相關資源也會被一併刪除。 使用 Azure CLI 或 Azure PowerShell 刪除資源群組時,請完成下列步驟:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

資源

下一步