Inicio rápido: Establecer y recuperar un secreto de Azure Key Vault 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, certificados y otros secretos. 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 y un secreto.

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. Describes tu implementación deseada sin escribir la secuencia de comandos de programación para crearla.

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

Button para implementar la plantilla de Resource Manager en Azure.

Prerrequisitos

Para completar este artículo:

  • Si no tiene una suscripción de Azure, cree una cuenta free antes de comenzar.

  • La plantilla necesita el identificador de objeto de usuario Microsoft Entra para configurar los permisos. El procedimiento siguiente obtiene el identificador de objeto (GUID).

    1. Ejecute el siguiente comando Azure PowerShell o CLI de Azure seleccionando Try it y, a continuación, pegue el script en el panel de shell. Para pegar el script, haga clic con el botón derecho en el shell y, a continuación, seleccione Pegar.

      echo "Enter your email address that is used to sign in to Azure:" &&
      read upn &&
      az ad user show --id $upn --query "Id" &&
      echo "Press [ENTER] to continue ..."
      
    2. Anote el identificador de objeto. Lo necesitará en la sección siguiente de este inicio rápido.

Revisión de la plantilla

Importante

En este inicio rápido se usa una plantilla externa que crea un almacén con directivas de acceso heredadas. En el caso de las implementaciones de producción, use la autorización de Azure RBAC en su lugar. Consulte Crear un almacén de claves mediante una plantilla de ARM para obtener una plantilla que use enableRbacAuthorization: true o consulte Secure el Azure Key Vault para obtener instrucciones de seguridad completas.

La plantilla que se usa en este inicio rápido procede de Azure Plantillas de inicio rápido.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.26.54.24096",
      "templateHash": "8629186205194254058"
    }
  },
  "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."
      }
    },
    "objectId": {
      "type": "string",
      "metadata": {
        "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets."
      }
    },
    "keysPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge."
      }
    },
    "secretsPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge."
      }
    },
    "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')]",
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "accessPolicies": [
          {
            "objectId": "[parameters('objectId')]",
            "tenantId": "[parameters('tenantId')]",
            "permissions": {
              "keys": "[parameters('keysPermissions')]",
              "secrets": "[parameters('secretsPermissions')]"
            }
          }
        ],
        "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 definen dos Azure recursos:

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

Implementación de la plantilla

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

    Button para implementar la plantilla de Resource Manager en Azure.

  2. Seleccione o escriba los siguientes valores.

    plantilla Plantilla de Resource Manager, integración de Key Vault, portal de implementación

    A menos que se especifique otra cosa, utilice el valor predeterminado para crear el almacén de claves y un secreto.

    • Subscription: 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, haga clic en Aceptar.
    • Ubicación: seleccione una ubicación. Por ejemplo, Centro de EE. UU.
    • Key Vault Name: escriba un nombre para el key vault, que debe ser globalmente único dentro del espacio de nombres .vault.azure.net. Necesitará el nombre en la sección siguiente cuando valide la implementación.
    • Identificador de inquilino: la función de plantilla recupera automáticamente el identificador de inquilino. No cambie el valor predeterminado.
    • Identificador de usuario del anuncio: introduce el ID del objeto de usuario de Microsoft Entra que recuperaste de Prerrequisitos.
    • Nombre del secreto: escriba un nombre para el secreto que se almacena en el almacén de claves. Por ejemplo, adminpassword.
    • Valor secreto: escriba el valor del secreto. Si almacena una contraseña, se recomienda usar la contraseña generada que creó en Requisitos previos.
    • Acepto los términos y condiciones anteriores: Seleccionar.
  3. Seleccione Comprar. Una vez que el almacén de claves se haya implementado correctamente, recibirá una notificación:

    plantilla ARM, integración de Key Vault, notificación del portal de despliegue

El portal de Azure se usa para implementar la plantilla. Además del portal de Azure, también puede usar la API de REST, CLI de Azure y Azure PowerShell. Para obtener información sobre otros métodos de implementación, consulte Implementación de plantillas.

Revisión de los recursos implementados

Puede usar el portal de Azure para comprobar el almacén de claves y el secreto, o bien usar el siguiente script de CLI de Azure o Azure PowerShell para enumerar el secreto creado.

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

La salida es similar a esta:

Captura de pantalla que muestra la salida de validación del portal de implementación en la CLI.

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 Key Vault y los recursos relacionados. Para eliminar el grupo de recursos mediante 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 un secreto mediante una plantilla de Resource Manager y ha validado la implementación. Para obtener más información sobre Key Vault y Azure Resource Manager, continúe con los artículos siguientes.