Freigeben über


Erstellen, Rotieren und Aktualisieren von Schlüsseleigenschaften in Azure Key Vault mit JavaScript

Erstellen Sie den KeyClient mit den entsprechenden Anmeldeinformationen für die programmgesteuerte Authentifizierung, und verwenden Sie dann den Client, um einen Schlüssel in Azure Key Vault festzulegen, zu aktivieren und zu rotieren.

Wenn Sie einen Schlüssel rotieren möchten, müssen Sie eine neue Version des Schlüssels erstellen und diese Version als neueste Version festlegen. Die vorherige Version wird nicht gelöscht, ist aber nicht mehr aktiv.

Erstellen eines Schlüssels mit einer Rotationsrichtlinie

Verwenden Sie zum Erstellen eines Schlüssels in Azure Key Vault die createKey-Methode der KeyClient-Klasse. Legen Sie alle Eigenschaften mit dem optionalen createKeyOptions-Objekt fest. Nachdem der Schlüssel erstellt wurde, aktualisieren Sie den Schlüssel mit einer Rotationsrichtlinie.

Ein KeyVaultKey wird zurückgegeben. Aktualisieren Sie den Schlüssel mithilfe von updateKeyRotationPolicy mit einer Richtlinie, die Benachrichtigungen enthält.

Hilfsmethoden zur Erstellung sind für die folgenden Schlüsseltypen verfügbar, die Eigenschaften festlegen, die diesem Schlüsseltyp zugeordnet sind:

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

Schlüssel manuell drehen

Wenn Sie den Schlüssel rotieren müssen, verwenden Sie die rotateKey-Methode. Dadurch wird eine neue Version des Schlüssels erstellt und diese Version als aktive Version festgelegt.

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

Aktualisieren von Schlüsseleigenschaften

Aktualisieren Sie die Eigenschaften der neuesten Version des Schlüssels mit updateKeyProperties, oder aktualisieren Sie eine bestimmte Version eines Schlüssels mit updateKeyProperties. Alle nicht angegebenen UpdateKeyPropertiesOptions-Eigenschaften bleiben unverändert. Der Schlüsselwert wird dadurch nicht geändert.

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

Aktualisieren des Schlüsselwertpaars

Verwenden Sie zum Aktualisieren eines Schlüsselwerts die rotateKey-Methode. Stellen Sie sicher, dass Sie den neuen Wert mit allen Eigenschaften übergeben, die Sie aus der aktuellen Version des Schlüssels beibehalten möchten. Alle aktuellen Eigenschaften, die nicht in zusätzlichen Aufrufen von „rotatekey“ festgelegt wurden, gehen verloren.

Dadurch wird eine neue Version eines Schlüssels generiert. Das zurückgegebene KeyVaultKey-Objekt enthält die neue Versions-ID.

Nächste Schritte