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

O Azure Key Vault é um serviço de nuvem que fornece um armazenamento seguro para segredos como chaves, senhas e certificados. Este artigo descreve o processo de implantação de um modelo do Azure Resource Manager (modelo ARM) para criar um cofre de chaves.

Um modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo utiliza sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

Pré-requisitos

Para concluir as etapas neste artigo:

  • Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Criar um modelo do Key Vault 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 Key Vault, consulte Key Vault ARM template reference.

Importante

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

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

Você pode implantar políticas de acesso em um cofre de chaves existente sem reimplantar todo o modelo de 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 obter mais informações sobre as configurações do modelo do Cofre da Chave, consulte Referência do modelo ARM do Cofre da Chave.

Mais modelos do Key Vault Resource Manager

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

Segredos Chaves Certificados
N/A N/A

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

Implementar 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 a partir 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

Clean up resources (Limpar recursos)

Se você planeja continuar com os inícios rápidos e tutoriais subsequentes, você pode deixar esses recursos no lugar. Quando 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, conclua estas etapas:

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

Recursos

Próximos passos