Como criar um cofre de chaves do Azure e uma política de acesso ao cofre usando um modelo do Resource Manager

O Azure Key Vault é um serviço de nuvem que fornece um repositório seguro para chaves, segredos e certificados. Este artigo descreve o processo de implantação de um modelo do Azure Resource Manager (modelo do ARM) para a criação de um cofre de chaves.

Um modelo ARM é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do projeto. O modelo usa a sintaxe declarativa. Na sintaxe declarativa, você descreve a implantação pretendida sem gravar a sequência de comandos de programação para criar a implantação.

Pré-requisitos

Para completar as etapas neste artigo:

Criar um cofre de chaves com um modelo do Resource Manager

O modelo a seguir mostra uma maneira básica de criar um cofre de chaves. Alguns valores são especificados no modelo.

{
  "$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"
        }
      }
    }
  ]
}

Para obter mais informações sobre as configurações do modelo do Key Vault, consulte referência de modelo do ARM do Key Vault.

Importante

Se um modelo for reimplantado, todas as políticas de acesso existentes no cofre de chaves serão substituídas. Recomendamos que você preencha a accessPolicies propriedade com as políticas de acesso existentes para evitar perder o acesso ao cofre de chaves.

Adicionar uma política de acesso a um modelo do Key Vault Resource Manager

Você pode implantar políticas de acesso a um cofre de chaves existente sem reimplantar o modelo inteiro do cofre de chaves. O modelo a seguir mostra uma maneira básica de criar políticas de acesso:

{
  "$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')]"
            }
          }
        ]
      }
    }
  ]
}

Para mais informações sobre as configurações do modelo de Key Vault, consulte referência de modelo do ARM do Key Vault.

Mais modelos do Key Vault Resource Manager

Há outros modelos do Resource Manager disponíveis para objetos do Key Vault:

Segredos simétricas Certificados
N/D N/D

Você pode encontrar mais modelos de Key Vault aqui: referência do Key Vault Resource Manager.

Implantar os modelos

Você pode usar o portal do Azure para implantar os modelos anteriores usando a opção criar seu próprio modelo no editor, conforme descrito aqui: Implantar recursos de um modelo personalizado.

Você também pode salvar os modelos anteriores em arquivos e usar estes comandos: New-AzResourceGroupDeployment e az 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

Limpar os recursos

Se você planeja continuar trabalhando com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão. Quando você não precisar mais dos recursos, exclua o grupo de recursos. Se você excluir o grupo, o cofre de chaves e os recursos relacionados também serão excluídos. Para excluir o grupo de recursos usando a CLI do Azure ou o Azure PowerShell, siga esses passos:

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

Recursos

Próximas etapas