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 usuário precisaria ter uma função interna 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')))]"
    }
  }
}

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 Definição
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 Unix timestamp (o número de segundos após Unix Epoch em 1 de janeiro de 1970 no UTC).
exp Especifica a hora de expiração, como um objeto DateTime. O formato seria Unix timestamp (o número de segundos após Unix Epoch em 1 de janeiro de 1970 no 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.

Rever 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 ser autorizado a usar essa API, o chamador precisa ter a ação de controle de acesso baseado em função (RBAC) "Microsoft.KeyVault/vaults/keys/write ". A função "Key Vault Contributor" integrada é suficiente, uma vez que autoriza todas as Ações RBAC que correspondem ao padrão "Microsoft.KeyVault/*".

    Crie uma chave via ARM 1Crie 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 chave "criar"; se o cofre estiver habilitado para RBAC, o chamador deverá ter "Microsoft.KeyVault/vaults/keys/create/action" RBAC DataAction.

Clean up resources (Limpar 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 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.