Compartilhar via


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

O Azure Key Vault é um serviço de nuvem que fornece um repositório seguro para segredos, como chaves, senhas e certificados. Este guia de início rápido tem como foco o processo de implantação de um modelo do ARM (Azure Resource Manager) para a criação de um cofre de chaves e uma chave.

Pré-requisitos

Para concluir este artigo, será preciso:

  • Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
  • O usuário precisará ter uma função interna do Azure atribuída. A recomendada é a função colaborador. Saiba mais aqui

Examinar 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 estão definidos no modelo:

Encontre mais amostras de modelo do Azure Key Vault nos 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 você não especificar esse parâmetro, todas as operações poderão ser executadas. Os valores aceitáveis para esse parâmetro são uma lista separada por vírgula de operações de chave, conforme definido pela especificação de JWK (Chave Web JSON):
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName O nome da EC (curva elíptica) para o tipo de chave EC. Confira JsonWebKeyCurveName
Kty Tipo de chave a ser criado. Para obter valores válidos, confira JsonWebKeyType
Marcas Os metadados específicos a um 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 é um carimbo de data/hora do UNIX (o número de segundos após a época do Unix em 1º de janeiro de 1970, em UTC).
exp Especifica o tempo de expiração, como um objeto DateTime. O formato é um carimbo de data/hora do UNIX (o número de segundos após a época do Unix em 1º de janeiro de 1970, em UTC).

Implantar o modelo

Ou 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, confira Implantar modelos.

Examinar os recursos implantados

Você pode usar o portal do Azure para verificar o cofre de chaves e a chave. Como alternativa, use o script do Azure PowerShell ou da CLI do Azure a seguir 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 uma chave usando um modelo do ARM é diferente de fazê-lo por meio de um plano de dados

Criar uma chave por meio do ARM

  • Só é possível criar novas chaves. Não é possível atualizar chaves existentes nem criar outras versões de chaves existentes. Se a chave já existir, ela será recuperada do armazenamento e usada (nenhuma operação de gravação ocorrerá).

  • Para ter autorização para usar essa API, o chamador precisa ter a ação de RBAC (controle de acesso baseado em função) "Microsoft.KeyVault/vaults/keys/write". A função "Colaborador do Key Vault" interna é suficiente, pois autoriza todas as ações do RBAC que correspondem ao padrão "Microsoft.KeyVault/*".

    Criar uma chave por meio do ARM 1Criar uma chave por meio do ARM 2

API existente (criação de chave por meio do plano de dados)

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

Limpar os recursos

Outros tutoriais e inícios rápidos do Key Vault complementam este início rápido. Se você planeja continuar a trabalhar com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão. Quando não for mais necessário, exclua o grupo de recursos, que excluirá o Key Vault 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óximas etapas

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