Compartir a través de


Creación, rotación y actualización de propiedades de una clave en Azure Key Vault con JavaScript

Cree KeyClient con las credenciales de autenticación de programación adecuadas y, después, use la clave para establecer, actualizar y alternar una clave de Azure Key Vault.

Rotar una clave significa crear una nueva versión de la clave y establecer esa versión como la versión más reciente. La versión anterior no se elimina, pero ya no es la versión activa.

Creación de una clave con una directiva de rotación

Para crear una clave en Azure Key Vault, use el método createKey de la clase KeyClient. Establezca las propiedades con el objeto createKeyOptions opcional. Una vez creada la clave, actualice la clave con una directiva de rotación.

Se devuelve una keyVaultKey . Actualice la clave mediante updateKeyRotationPolicy con una directiva, que incluye la notificación.

Los métodos de creación útiles están disponibles para los siguientes tipos de clave, que establecen propiedades asociadas a ese tipo de clave:

// Azure client libraries
import { DefaultAzureCredential } from '@azure/identity';
import {
  CreateKeyOptions,
  KeyClient,
  KeyRotationPolicyProperties,
  KnownKeyOperations,
  KnownKeyTypes
} from '@azure/keyvault-keys';

// Day/time manipulation
import dayjs from 'dayjs';
import duration from 'dayjs/plugin/duration';
dayjs.extend(duration);

// Authenticate to Azure Key Vault
const credential = new DefaultAzureCredential();
const client = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
);

// Name of key
const keyName = `mykey-${Date.now().toString()}`;

// Set key options
const keyOptions: CreateKeyOptions = {
enabled: true,
expiresOn: dayjs().add(1, 'year').toDate(),
exportable: false,
tags: {
    project: 'test-project'
},
keySize: 2048,
keyOps: [
    KnownKeyOperations.Encrypt,
    KnownKeyOperations.Decrypt
    // KnownKeyOperations.Verify,
    // KnownKeyOperations.Sign,
    // KnownKeyOperations.Import,
    // KnownKeyOperations.WrapKey,
    // KnownKeyOperations.UnwrapKey
]
};

// Set key type
const keyType = KnownKeyTypes.RSA; //  'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct', 'oct-HSM'

// Create key
const key = await client.createKey(keyName, keyType, keyOptions);
if (key) {
    // Set rotation policy properties: KeyRotationPolicyProperties
    const rotationPolicyProperties: KeyRotationPolicyProperties = {
        expiresIn: 'P90D',
        lifetimeActions: [
        {
            action: 'Rotate',
            timeAfterCreate: 'P30D'
        },
        {
            action: 'Notify',
            timeBeforeExpiry: dayjs.duration({ days: 7 }).toISOString()
        }
    ]};
    
    // Set rotation policy: KeyRotationPolicy
    const keyRotationPolicy = await client.updateKeyRotationPolicy(
        key.name,
        rotationPolicyProperties
    );
    console.log(keyRotationPolicy);
}

Rotación manual de la clave

Cuando necesite rotar la clave, use el método rotateKey . Esto crea una nueva versión de la clave y establece esa versión como la versión activa.

// Azure client libraries
import { DefaultAzureCredential } from '@azure/identity';
import {
  KeyClient
} from '@azure/keyvault-keys';

// Authenticate to Azure Key Vault
const credential = new DefaultAzureCredential();
const client = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
);

// Get existing key
let key = await client.getKey(`MyKey`);
console.log(key);

if(key?.name){

    // rotate key
    key = await client.rotateKey(key.name);
    console.log(key);
}

Actualizar las propiedades de una clave

Actualice las propiedades de la versión más reciente de la clave con updateKeyProperties o actualice una versión específica de una clave con updateKeyProperties. Las propiedades UpdateKeyPropertiesOptions no especificadas se dejan sin cambios. Esto no cambia el valor de clave.

// Azure client libraries
import { DefaultAzureCredential } from '@azure/identity';
import {
  KeyClient
} from '@azure/keyvault-keys';

// Authenticate to Azure Key Vault
const credential = new DefaultAzureCredential();
const client = new KeyClient(
    `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
    credential
);

// Get existing key
const key = await client.getKey('MyKey');

if (key) {

    // 
    const updateKeyPropertiesOptions = {
        enabled: false,
        // expiresOn,
        // keyOps,
        // notBefore, 
        // releasePolicy, 
        tags: { 
            ...key.properties.tags, subproject: 'Health and wellness' 
        }
    }
    
    // update properties of latest version
    await client.updateKeyProperties(
        key.name,
        updateKeyPropertiesOptions
    );
    
    // update properties of specific version
    await client.updateKeyProperties(
        key.name,
        key?.properties?.version,
        {
            enabled: true
        }
    );
}

Actualización del valor de clave

Para actualizar un valor de clave, use el método rotateKey . Asegúrese de pasar el nuevo valor con todas las propiedades que desea mantener de la versión actual de la clave. Se perderán todas las propiedades actuales que no estén establecidas en llamadas adicionales para rotateKey.

Esto genera una nueva versión de una clave. El objeto KeyVaultKey devuelto incluye el nuevo Id. de versión.

Pasos siguientes