Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Key Vault le ayuda a proteger las claves, los secretos y los certificados, como las claves de API y las cadenas de conexión de base de datos.
En este tutorial, configurará una aplicación de Node.js para leer información de Azure Key Vault mediante identidades administradas para recursos de Azure. Aprenderá a:
- Crear una bóveda de claves
- Almacenar un secreto en Key Vault
- Crear una máquina virtual Linux de Azure
- Habilitar una identidad administrada para la máquina virtual
- Conceder los permisos necesarios para que la aplicación de consola lea datos de Key Vault
- Recuperar un secreto del almacén de claves
Antes de empezar, lea los conceptos básicos de Key Vault.
Si no tiene una suscripción a Azure, cree una cuenta gratuita.
Prerequisites
Para Windows, Mac y Linux:
- Git
- Este tutorial requiere que se ejecute localmente la CLI de Azure. Debe tener instalada la versión 2.0.4 de la CLI de Azure o una versión posterior. Ejecute
az --versionpara encontrar la versión. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure 2.0.
Inicio de sesión en Azure
Para iniciar sesión en Azure mediante la CLI de Azure, escriba:
az login
Creación de un grupo de recursos y de un almacén de claves
En este inicio rápido se usa un almacén de claves de Azure creado previamente. Puede crear un almacén de claves siguiendo los pasos descritos en estas guías rápidas:
Como alternativa, puede ejecutar estos comandos de la CLI de Azure.
Important
Cada almacén de claves debe tener un nombre único. Reemplace <unique-keyvault-name> por el nombre del almacén de claves en los ejemplos siguientes.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization true
Llena tu bóveda de claves con un secreto
Vamos a crear un secreto llamado mySecret cuyo valor sea ¡Correcto! . Un secreto puede ser una contraseña, una cadena de conexión SQL o cualquier otra información que necesite mantener segura y disponible para la aplicación.
Para agregar un secreto al almacén de claves recién creado, use el comando siguiente:
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"
Creación de una máquina virtual
Cree una máquina virtual llamada myVM utilizando uno de los siguientes métodos.
| Linux | Windows |
|---|---|
| Azure CLI | Azure CLI |
| PowerShell | PowerShell |
| Azure Portal | Portal de Azure |
Para crear una máquina virtual Linux mediante la CLI de Azure, use el comando az vm create. En el ejemplo siguiente se agrega una cuenta de usuario llamada azureuser. El parámetro --generate-ssh-keys se usa para generar automáticamente una clave SSH y colocarla en la ubicación de la clave predeterminada ( ~/.ssh).
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Anote el valor de publicIpAddress en la salida.
Asignación de una identidad a la máquina virtual
Cree una identidad asignada por el sistema para la máquina virtual mediante el comando az vm identity assign de la CLI de Azure:
az vm identity assign --name "myVM" --resource-group "myResourceGroup"
Tenga en cuenta la identidad asignada por el sistema que se muestra en el código siguiente. La salida del comando anterior sería:
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Asignación de permisos a la identidad de máquina virtual
Ahora puede asignar los permisos de la identidad creada anteriormente al almacén de claves mediante la ejecución del comando siguiente:
az role assignment create --role "Key Vault Secrets User" --assignee "<systemAssignedIdentity>" --scope /subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>
Inicio de sesión en la máquina virtual
Para iniciar sesión en la máquina virtual, siga las instrucciones que encontrará en el artículo en el que se explica la conexión y el inicio de sesión en una máquina virtual Linux en Azure, o bien en el que se explica la conexión y el inicio de sesión en una máquina virtual Windows en Azure.
Para iniciar sesión en una máquina virtual Linux, puede usar el comando ssh con el valor de <publicIpAddress> que se proporciona en el paso Creación de una máquina virtual:
ssh azureuser@<PublicIpAddress>
Instalación de Node.js y bibliotecas npm en la VM
En la máquina virtual, instale las dos bibliotecas npm que usaremos en nuestro script de JavaScript: @azure/keyvault-secrets y @azure/identity.
En el terminal SSH, instale Node.js y npm con los siguientes comandos:
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - && \ sudo apt-get install -y nodejsCree un directorio de aplicaciones e inicialice el paquete de Node.js:
mkdir app && cd app && npm init -yInstale los paquetes de servicio de Azure mediante
npm:npm install @azure/keyvault-secrets @azure/identity
Creación y edición del archivo Javascript de ejemplo
En la máquina virtual, en el directorio
app, cree un archivo JavaScript llamado index.js.touch index.jsAbra el archivo con un editor de texto Nano:
nano index.jsCopie el siguiente código, reemplazando <nombre-de-tu-almacén-de-claves-único> por el nombre de tu almacén de claves y pégalo en el editor Nano.
// index.js const { SecretClient } = require("@azure/keyvault-secrets"); const { DefaultAzureCredential } = require("@azure/identity"); // Your Azure Key Vault name and secret name const keyVaultName = "<your-unique-keyvault-name>"; const keyVaultUri = `https://${keyVaultName}.vault.azure.net`; const secretName = "mySecret"; // Authenticate to Azure const credential = new DefaultAzureCredential(); const client = new SecretClient(keyVaultUri, credential); // Get Secret with Azure SDK for JS const getSecret = async (secretName) => { return (await client.getSecret(secretName)).value; } getSecret(secretName).then(secretValue => { console.log(`The value of secret '${secretName}' in '${keyVaultName}' is: '${secretValue}'`); }).catch(err => { console.log(err); })Guarde el archivo con Ctrl + x.
Cuando aparezca la solicitud
Save modified buffer?, escriba y.Cuando aparezca la solicitud
File Name to Write: index.js, escriba Enter.
Ejecución de la aplicación Node.js de ejemplo
Por último, ejecute index.js. Si todo ha ido bien, debería devolver el valor de su secreto:
node index.js
The value of secret 'mySecret' in '<your-unique-keyvault-name>' is: 'Success!'
Limpieza de recursos
Cuando ya no son necesarios, elimine la máquina virtual y el almacén de claves. Puede hacerlo rápidamente, solo debe eliminar el grupo de recursos al que pertenecen:
az group delete -g myResourceGroup