Início Rápido: Criar um cofre de chaves do Azure e uma chave com o modelo do ARM

O Azure Key Vault é um serviço cloud que fornece um arquivo seguro para segredos, como chaves, palavras-passe e certificado. Este início rápido centra-se no processo de implementação de um modelo do Azure Resource Manager (modelo arm) para criar um cofre de chaves e uma chave.

Pré-requisitos

Para concluir este artigo:

  • Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • O utilizador teria de ter uma função incorporada do Azure atribuída, contribuidor de função recomendado. Saiba mais aqui

Rever o modelo

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "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": "2021-11-01-preview",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "accessPolicies": [],
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": "90",
        "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": "2021-11-01-preview",
      "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')))]"
    }
  }
}

São definidos dois recursos no modelo:

Pode encontrar mais exemplos de modelos do Azure Key Vault em Modelos de Início Rápido do Azure.

Parâmetros e definições

Parâmetro Definição
keyOps Especifica operações que podem ser executadas com a chave. Se não especificar este parâmetro, todas as operações podem ser realizadas. Os valores aceitáveis para este parâmetro são uma lista separada por vírgulas das operações principais, conforme definido pela especificação JSON Web Key (JWK):
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName Nome da curva elíptica (EC) para o tipo de chave EC. Consulte JsonWebKeyCurveName
Kty O tipo de chave a criar. Para valores válidos, veja JsonWebKeyType
Etiquetas Metadados específicos da aplicação na forma de pares chave-valor.
nbf Especifica a hora, como um objeto DateTime, antes do qual a chave não pode ser utilizada. O formato seria carimbo de data/hora Unix (o número de segundos após Unix Epoch em 1 de janeiro de 1970 às UTC).
exp Especifica a hora de expiração, como um objeto DateTime. O formato seria carimbo de data/hora Unix (o número de segundos após Unix Epoch em 1 de janeiro de 1970 às UTC).

Implementar o modelo

Pode utilizar portal do Azure, Azure PowerShell, CLI do Azure ou API REST. Para saber mais sobre os métodos de implementação, veja Implementar modelos.

Rever os recursos implementados

Pode utilizar o portal do Azure para verificar o cofre de chaves e a chave. Em alternativa, utilize a seguinte CLI do Azure ou Azure PowerShell script para listar a chave criada.

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault key list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."

A criação de chave com o modelo do ARM é diferente da criação de chave através do plano de dados

Criar uma chave através do ARM

  • Só é possível criar novas chaves. Não é possível atualizar chaves existentes nem criar novas versões de chaves existentes. Se a chave já existir, a chave existente é obtida do armazenamento e utilizada (não ocorrerão operações de escrita).

  • Para estar autorizado a utilizar esta API, o autor da chamada tem de ter a Ação de controlo de acesso baseado em funções (RBAC) "Microsoft.KeyVault/vaults/keys/write ". A função incorporada "Contribuidor Key Vault" é suficiente, uma vez que autoriza todas as Ações RBAC que correspondam ao padrão "Microsoft.KeyVault/*".

    Criar uma chave através do ARM 1Criar uma chave através do ARM 2

API existente (criar chave através do plano de dados)

  • É possível criar novas chaves, atualizar chaves existentes e criar novas versões de chaves existentes.
  • O autor da chamada tem de estar autorizado a utilizar esta API. Se o cofre utilizar políticas de acesso, o autor da chamada tem de ter a permissão de chave "criar"; Se o cofre estiver ativado para RBAC, o autor da chamada tem de ter a RBAC DataAction "Microsoft.KeyVault/vaults/keys/create/action".

Limpar os recursos

Outros inícios rápidos e tutoriais do Key Vault têm por base este início rápido. Se quiser continuar a trabalhar com os inícios rápidos e tutoriais subsequentes, pode manter estes recursos. Quando já não for necessário, elimine o grupo de recursos, que elimina o Key Vault e todos os recursos relacionados. Para eliminar o grupo de recursos com a CLI do Azure ou Azure PowerShell:

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

Passos seguintes

Neste início rápido, criou um cofre de chaves e uma chave com um modelo do ARM e validou a implementação. Para saber mais sobre Key Vault e Resource Manager do Azure, veja estes artigos.