Partilhar via


Guia de início rápido: criar um cofre de chaves do Azure e uma chave usando o modelo ARM

O Azure Key Vault é um serviço de nuvem que fornece um armazenamento seguro para segredos, como chaves, senhas e certificados. Este guia de início rápido se concentra no processo de implantação de um modelo do Azure Resource Manager (modelo ARM) para criar um cofre de chaves e uma chave.

Pré-requisitos

Para completar este artigo:

  • Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • O utilizador precisaria ter uma função incorporada do Azure atribuída, sendo recomendada a função de contribuidor. 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')))]"
    }
  }
}

Dois recursos são definidos no modelo:

Mais exemplos de modelo do Azure Key Vault podem ser encontrados em Modelos de Início Rápido do Azure.

Parâmetros e definições

Parâmetro Definition
keyOps Especifica as operações que podem ser executadas usando a chave. Se você não especificar esse parâmetro, todas as operações poderão ser executadas. Os valores aceitáveis para este parâmetro são uma lista separada por vírgulas de operações de chave, 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 ser criada. Para valores válidos, consulte JsonWebKeyType
Etiquetas Metadados específicos do aplicativo na forma de pares chave-valor.
NBF Especifica a hora, como um objeto DateTime, antes da qual a chave não pode ser usada. O formato seria o Unix Timestamp (o número de segundos após o Unix Epoch em 1 de janeiro de 1970 em UTC).
exp Especifica a hora de expiração, como um objeto DateTime. O formato seria o Unix Timestamp (o número de segundos após o Unix Epoch em 1 de janeiro de 1970 em UTC).

Implementar o modelo

Você pode usar o portal do Azure, o Azure PowerShell, a CLI do Azure ou a API REST. Para saber mais sobre métodos de implantação, consulte Implantar modelos.

Analisar os recursos implementados

Você pode usar o portal do Azure para verificar o cofre de chaves e a chave. Como alternativa, use o seguinte script da CLI do Azure ou do Azure PowerShell 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 ..."

Criar chave usando o modelo ARM é diferente de criar chave via plano de dados

Criação de uma chave via 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 será recuperada do armazenamento e usada (nenhuma operação de gravação ocorrerá).

  • Para estar autorizado a usar esta API, o chamador precisa ter a ação de "controlo de acesso baseado em funções" "Microsoft.KeyVault/vaults/keys/write" (Azure RBAC). O papel incorporado de "Key Vault Contributor" é suficiente, pois autoriza todas as Ações RBAC do Azure que correspondem ao padrão "Microsoft.KeyVault/*".

    Criar uma chave via ARM 1 Criar uma chave via ARM 2

API existente (criação de chave via plano de dados)

  • É possível criar novas chaves, atualizar chaves existentes e criar novas versões de chaves existentes.
  • O chamador deve estar autorizado a usar essa API. Se o cofre usar políticas de acesso, o chamador deve ter permissão de "criar" chave; se o cofre estiver ativado para Azure RBAC, o chamador deve ter "Microsoft.KeyVault/vaults/keys/create/action" Azure RBAC DataAction.

Limpeza de recursos

Outros guias de início rápido e tutoriais do Key Vault se baseiam nesse início rápido. Se pretende continuar a trabalhar com os quickstarts e tutoriais subsequentes, poderá querer deixar estes recursos no lugar. Quando não for mais necessário, exclua o grupo de recursos, que exclui o Cofre da Chave e os recursos relacionados. Para excluir o grupo de recursos usando a CLI do Azure ou o Azure PowerShell:

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

Próximos passos

Neste início rápido, você criou um cofre de chaves e uma chave usando um modelo ARM e validou a implantação. Para saber mais sobre o Key Vault e o Azure Resource Manager, consulte estes artigos.