Share via


Skapa, rotera och uppdatera egenskaper för en nyckel i Azure Key Vault med JavaScript

Skapa KeyClient med lämpliga autentiseringsuppgifter för programmering och använd sedan klienten för att ange, uppdatera och rotera en nyckel i Azure Key Vault.

Att rotera en nyckel innebär att skapa en ny version av nyckeln och ange den versionen som den senaste versionen. Den tidigare versionen tas inte bort, men den är inte längre den aktiva versionen.

Skapa en nyckel med en rotationsprincip

Om du vill skapa en nyckel i Azure Key Vault använder du metoden createKey i klassen KeyClient. Ange eventuella egenskaper med det valfria createKeyOptions-objektet . När nyckeln har skapats uppdaterar du nyckeln med en rotationsprincip.

En KeyVaultKey returneras. Uppdatera nyckeln med hjälp av updateKeyRotationPolicy med en princip, som innehåller meddelanden.

Metoder för att skapa bekvämlighet är tillgängliga för följande nyckeltyper, som anger egenskaper som är associerade med den nyckeltypen:

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

Rotera tangenten manuellt

När du behöver rotera nyckeln använder du metoden rotateKey . Detta skapar en ny version av nyckeln och anger den versionen som den aktiva versionen.

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

Uppdatera nyckelegenskaper

Uppdatera egenskaperna för den senaste versionen av nyckeln med updateKeyProperties eller uppdatera en specifik version av en nyckel med updateKeyProperties. Alla UpdateKeyPropertiesOptions-egenskaper som inte har angetts lämnas oförändrade. Detta ändrar inte nyckelvärdet.

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

Uppdatera nyckelvärde

Om du vill uppdatera ett nyckelvärde använder du metoden rotateKey . Se till att skicka det nya värdet med alla egenskaper som du vill behålla från den aktuella versionen av nyckeln. Alla aktuella egenskaper som inte har angetts i ytterligare anrop till rotateKey går förlorade.

Detta genererar en ny version av en nyckel. Det returnerade KeyVaultKey-objektet innehåller det nya versions-ID:t.

Nästa steg