Share via


Eigenschappen van een sleutel maken, draaien en bijwerken in Azure Key Vault met JavaScript

Maak de KeyClient met de juiste programmatische verificatiereferenties en gebruik vervolgens de client om een sleutel in Azure Key Vault in te stellen, bij te werken en te roteren.

Een sleutel roteren betekent een nieuwe versie van de sleutel maken en die versie instellen als de meest recente versie. De vorige versie wordt niet verwijderd, maar is niet langer de actieve versie.

Een sleutel maken met een rotatiebeleid

Als u een sleutel wilt maken in Azure Key Vault, gebruikt u de methode createKey van de klasse KeyClient. Stel eigenschappen in met het optionele createKeyOptions-object . Nadat de sleutel is gemaakt, werkt u de sleutel bij met een rotatiebeleid.

Er wordt een KeyVaultKey geretourneerd. Werk de sleutel bij met behulp van updateKeyRotationPolicy met een beleid, dat meldingen bevat.

Methoden voor het maken van gemak zijn beschikbaar voor de volgende sleuteltypen, waarmee eigenschappen worden ingesteld die zijn gekoppeld aan dat sleuteltype:

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

Sleutel handmatig draaien

Wanneer u de sleutel moet draaien, gebruikt u de methode rotateKey . Hiermee maakt u een nieuwe versie van de sleutel en stelt u die versie in als de actieve versie.

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

Sleuteleigenschappen bijwerken

Werk de eigenschappen van de nieuwste versie van de sleutel bij met de updateKeyProperties of werk een specifieke versie van een sleutel bij met updateKeyProperties. Eventuele UpdateKeyPropertiesOptions-eigenschappen die niet zijn opgegeven, blijven ongewijzigd. Hiermee wordt de sleutelwaarde niet gewijzigd.

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

Sleutelwaarde bijwerken

Gebruik de methode rotateKey om een sleutelwaarde bij te werken. Zorg ervoor dat u de nieuwe waarde doorgeeft met alle eigenschappen die u wilt behouden van de huidige versie van de sleutel. Alle huidige eigenschappen die niet zijn ingesteld in extra aanroepen naar rotateKey, gaan verloren.

Hiermee wordt een nieuwe versie van een sleutel gegenereerd. Het geretourneerde KeyVaultKey-object bevat de nieuwe versie-id.

Volgende stappen