Inicio rápido: Creación de un almacén de claves de Azure mediante una plantilla de ARM

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

Una plantilla Azure Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define la infraestructura y la configuración del proyecto. La plantilla usa sintaxis declarativa. Usted describe la implementación deseada sin escribir la secuencia de comandos de programación necesaria para crearla.

Si su entorno cumple los requisitos previos y está familiarizado/a con el uso de plantillas de ARM, seleccione el botón Implementar en Azure. La plantilla se abrirá en el portal de Azure.

Botón para implementar la plantilla de Resource Manager en Azure.

Prerequisites

Para completar este artículo:

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Revisión de la plantilla

La plantilla usada en este inicio rápido forma parte de las plantillas de inicio rápido de Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.42.1.51946",
      "templateHash": "5424899472990749957"
    }
  },
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "enabledForDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
      }
    },
    "enabledForDiskEncryption": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
      }
    },
    "enabledForTemplateDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the secret that you want to create."
      }
    },
    "secretValue": {
      "type": "securestring",
      "metadata": {
        "description": "Specifies the value of the secret that you want to create."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "enableRbacAuthorization": true,
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]",
      "properties": {
        "value": "[parameters('secretValue')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    }
  ],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('keyVaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
    }
  }
}

En la plantilla, se define un recurso de Azure:

  • Microsoft.KeyVault/vaults: cree un almacén de claves de Azure. La plantilla habilita la autorización RBAC de Azure (enableRbacAuthorization: true), la eliminación temporal y la protección contra purgas.

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

Implementación de la plantilla

  1. Seleccione la imagen siguiente para iniciar sesión en Azure y abrir una plantilla. La plantilla crea un almacén de claves.

    Botón para implementar la plantilla de Resource Manager en Azure.

  2. Seleccione o escriba los siguientes valores. A menos que se especifique, use el valor predeterminado.

    • Suscripción: seleccione una suscripción de Azure.
    • Grupo de recursos: seleccione Crear nuevo, escriba un nombre único para el grupo de recursos y, a continuación, seleccione Aceptar.
    • Región: seleccione una ubicación. Por ejemplo, Centro de EE. UU.
    • Nombre del almacén: escriba un nombre para el almacén de claves, que debe ser globalmente único dentro del vault.azure.net espacio de nombres.
    • Nombre de SKU: seleccione Estándar o Premium. El valor predeterminado es estándar.
  3. Seleccione Revisar y crear y, luego, Crear. Una vez implementado correctamente el almacén de claves, recibirá una notificación.

También puede usar Azure PowerShell, el CLI de Azure o la API REST para implementar la plantilla. Para obtener información sobre otros métodos de implementación, consulte Implementación de plantillas.

Asignar un rol de RBAC para Key Vault

El almacén de claves creado por esta plantilla usa Azure RBAC para la autorización. Para crear o leer claves, secretos o certificados a través del plano de datos, debe asignarse un rol adecuado. Por ejemplo, para administrar secretos, asígnese el rol Responsable de secretos de Key Vault:

echo "Enter your key vault name:" &&
read keyVaultName &&
az role assignment create --role "Key Vault Secrets Officer" \
    --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \
    --scope $(az keyvault show --name $keyVaultName --query id -o tsv)

Nota:

Para conocer otros roles integrados, consulte roles integrados de Azure para las operaciones del plano de datos de Key Vault. Las asignaciones de roles pueden tardar un minuto o dos en propagarse.

Revisión de los recursos implementados

Puede usar el portal de Azure para comprobar el almacén de claves o usar el siguiente script de CLI de Azure o Azure PowerShell:

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault show --name $keyVaultName

Limpieza de recursos

Otros tutoriales y guías de inicio rápido de Key Vault se basan en esta guía de inicio rápido. Si tiene pensado seguir trabajando en otros inicios rápido y tutoriales, considere la posibilidad de dejar estos recursos activos. Cuando ya no sea necesario, elimine el grupo de recursos, que elimina el almacén de claves y los recursos relacionados.

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName

Nota:

Al eliminar el grupo de recursos también se elimina el almacén de claves, pero el almacén, a continuación, entra en un estado eliminado temporalmente y permanece recuperable durante el período de retención (90 días de forma predeterminada). El nombre del almacén permanece reservado globalmente durante ese período y, dado que la protección contra purgas está habilitada, el almacén no se puede eliminar definitivamente de forma anticipada. En el caso de los almacenes de claves estándar, los almacenes eliminados temporalmente no incurren en cargos. Para obtener más información, consulte Información general de la eliminación temporal de Key Vault.

Más plantillas de Resource Manager para Key Vault

Otras guías de inicio rápido le guiarán en el proceso de rellenar un almacén de claves con secretos, claves o certificados:

Secretos Keys Certificados

Puede encontrar más plantillas para Key Vault aquí: Administrador de recursos para Key Vault.

Pasos siguientes