Partager via


Créer et mettre à jour les propriétés d’une clé et assurer leur rotation dans Azure Key Vault avec JavaScript

Créez le KeyClient avec les informations d’identification d’authentification par programmation appropriées, puis utilisez le client pour définir ou mettre à jour une clé ou assurer sa rotation dans Azure Key Vault.

Assurer la rotation d’une clé signifie créer une nouvelle version de celle-ci et la définir comme version la plus récente. La version précédente n’est pas supprimée, mais elle n’est plus active.

Créer une clé avec une stratégie de rotation

Pour créer une clé dans Azure Key Vault, utilisez la méthode createKey de la classe KeyClient. Définissez toutes les propriétés avec l’objet createKeyOptions facultatif. Une fois la clé créée, mettez-la à jour avec une stratégie de rotation.

Un objet KeyVaultKey est retourné. À l’aide de la méthode updateKeyRotationPolicy, mettez à jour la clé en appliquant une stratégie, qui inclut une notification.

Des méthodes de création pratiques sont disponibles pour les types de clés suivants, qui définissent les propriétés associées à ce type de clé :

// 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);
}

Assurer la rotation manuelle d’une clé

Lorsque vous devez assurer la rotation de la clé, utilisez la méthode rotateKey. Cela crée une nouvelle version de la clé et définit celle-ci comme la version active.

// 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);
}

Mettre à jour les propriétés d’une clé

À l’aide de la méthode updateKeyProperties, mettez à jour les propriétés de la dernière version de la clé ou mettez à jour une version spécifique d’une clé. Toutes les propriétés UpdateKeyPropertiesOptions non spécifiées demeurent inchangées. Cela ne modifie pas la valeur de la clé.

// 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
        }
    );
}

Mettre à jour la valeur de la clé

Pour mettre à jour la valeur d’une clé, utilisez la méthode rotateKey. Veillez à transmettre la nouvelle valeur avec toutes les propriétés que vous souhaitez conserver à partir de la version actuelle de la clé. Toutes les propriétés actuelles qui ne sont pas définies dans les appels supplémentaires à rotateKey seront perdues.

Cela génère une nouvelle version d’une clé. L’objet KeyVaultKey retourné inclut le nouvel ID de version.

Étapes suivantes