Inicio rápido: Creación de un almacén de claves de Azure y una clave mediante una plantilla de Resource Manager

Azure Key Vault es un servicio en la nube que proporciona un lugar seguro para almacenar los secretos,como claves, contraseñas y certificados. Este inicio rápido se centra en el proceso de implementar una plantilla de Azure Resource Manager para crear un almacén de claves y una clave.

Requisitos previos

Para completar este artículo:

Revisión de la plantilla

{
  "$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')))]"
    }
  }
}

En la plantilla se definen dos recursos:

Puede encontrar más ejemplos de plantillas de Azure Key Vault en Plantillas de inicio rápido de Azure.

Parámetros y definiciones

Parámetro Definición
keyOps Especifica las operaciones que se pueden realizar utilizando esta clave. Si no se especifica este parámetro, se pueden realizar todas las operaciones. Los valores aceptables para este parámetro son una lista separada por comas de las operaciones con clave, tal y como se define en la especificación JSON Web Key (JWK):
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName Nombre de la curva elíptica (EC) para el tipo de clave EC. Consulte JsonWebKeyCurveName
Kty Tipo de clave que se va a crear. Para saber qué valores pueden usarse, consulte JsonWebKeyType
Etiquetas Metadatos específicos de la aplicación en forma de pares clave-valor.
nbf Especifica una fecha y hora como un objeto DateTime antes de la cual no se puede usar la clave. El formato sería una marca temporal de Unix (el número de segundos transcurridos en la época Unix, desde el 1 de enero de 1970 UTC).
exp Especifica la hora de vencimiento como un objeto DateTime. El formato sería una marca temporal de Unix (el número de segundos transcurridos en la época Unix, desde el 1 de enero de 1970 UTC).

Implementación de la plantilla

Puede utilizar Azure Portal, Azure PowerShell, CLI de Azure o API REST. Para obtener información sobre otros métodos de implementación, consulte Implementación de plantillas.

Revisión de los recursos implementados

Puede usar Azure Portal para comprobar el almacén de claves y la clave. Como alternativa, use el siguiente script de la CLI de Azure o Azure PowerShell para enumerar la clave creada.

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

Crear una clave con una plantilla de ARM es diferente de crear la clave mediante el plano de datos.

Creación de una clave mediante ARM

  • Solo es posible crear claves nuevas. No es posible actualizar las claves existentes ni crear nuevas versiones de las claves existentes. Si la clave ya existe, la clave existente se recupera del almacenamiento y se usa (no se realizarán operaciones de escritura).

  • Para poder usar esta API, el autor de llamada debe tener la acción "Microsoft.KeyVault/vaults/keys/write" del control de acceso basado en roles (RBAC). El rol integrado "Colaborador del almacén de claves" es suficiente, ya que autoriza todas las acciones de RBAC que coincidan con el patrón "Microsoft.KeyVault/*".

    En esta imagen se muestra el proceso de creación de una clave mediante ARM 1En esta imagen se muestra el proceso de creación de una clave mediante ARM 2

API existente (creación de la clave mediante el plano de datos)

  • Es posible crear nuevas claves, actualizar las claves existentes y crear nuevas versiones de las claves existentes.
  • El autor de llamada debe estar autorizado para usar esta API. Si el almacén usa directivas de acceso, el autor de llamada debe tener el permiso de clave "crear"; si el almacén está habilitado para RBAC, el autor de llamada debe tener la acción de datos "Microsoft.KeyVault/vaults/keys/create/action" de RBAC.

Limpieza de recursos

Otras guías de inicio rápido y tutoriales de Key Vault se basan en esta. Si tiene pensado seguir trabajando en otras guías de inicio rápido y tutoriales, considere la posibilidad de dejar estos recursos activos. Cuando ya no lo necesite, elimine el grupo de recursos; de este modo se eliminarán también Key Vault y los recursos relacionados. Para eliminar el grupo de recursos mediante la CLI de Azure o Azure PowerShell:

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

Pasos siguientes

En este inicio rápido, ha creado un almacén de claves y una clave mediante una plantilla de Resource Manager y ha validado la implementación. Para más información sobre Key Vault y Azure Resource Manager, consulte estos artículos.