Sdílet prostřednictvím


Vytváření, obměna a aktualizace vlastností klíče ve službě Azure Key Vault pomocí JavaScriptu

Vytvořte KeyClient s příslušnými přihlašovacími údaji pro programové ověřování a pak pomocí klienta nastavte, aktualizujte a obměňte klíč ve službě Azure Key Vault.

Pokud chcete klíč otočit, znamená to, že vytvoříte novou verzi klíče a nastavíte ji jako nejnovější verzi. Předchozí verze se neodstraní, ale už není aktivní verzí.

Vytvoření klíče pomocí zásad obměnky

K vytvoření klíče ve službě Azure Key Vault použijte metodu createKey třídy KeyClient. Nastavte všechny vlastnosti pomocí volitelného createKeyOptions objektu. Po vytvoření klíče aktualizujte klíč zásadami obměně.

Vrátí se klíč KeyVaultKey. Aktualizujte klíč pomocí updateKeyRotationPolicy pomocí zásady, která obsahuje oznámení.

Metody vytvoření pohodlí jsou k dispozici pro následující typy klíčů, které nastavují vlastnosti přidružené k tomuto typu klíče:

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

Ruční otočení klíče

Pokud potřebujete klíč otočit, použijte metodu rotateKey . Tím se vytvoří nová verze klíče a tato verze se nastaví jako aktivní verze.

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

Aktualizace vlastností klíče

Aktualizujte vlastnosti nejnovější verze klíče pomocí updateKeyProperties nebo aktualizujte konkrétní verzi klíče pomocí updateKeyProperties. Všechny vlastnosti UpdateKeyPropertiesOptions , které nejsou zadány, zůstanou beze změny. Tím se nezmění hodnota klíče.

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

Aktualizace hodnoty klíče

Chcete-li aktualizovat hodnotu klíče, použijte metodu rotateKey . Nezapomeňte předat novou hodnotu se všemi vlastnostmi, které chcete zachovat z aktuální verze klíče. Všechny aktuální vlastnosti, které nejsou nastaveny v dalších voláních rotateKey, budou ztraceny.

Tím se vygeneruje nová verze klíče. Vrácený objekt KeyVaultKey obsahuje nové ID verze.

Další kroky