Partilhar via


Criar, girar e atualizar propriedades de uma chave no Cofre de Chaves do Azure com JavaScript

Crie o KeyClient com as credenciais de autenticação programática apropriadas e, em seguida, use o cliente para definir, atualizar e girar uma chave no Cofre de Chaves do Azure.

Girar uma chave significa criar uma nova versão da chave e definir essa versão como a versão mais recente. A versão anterior não é excluída, mas não é mais a versão ativa.

Criar uma chave com uma política de rotação

Para criar uma chave no Cofre da Chave do Azure, use o método createKey da classe KeyClient . Defina quaisquer propriedades com o objeto opcional createKeyOptions . Depois que a chave for criada, atualize-a com uma política de rotação.

Uma KeyVaultKey é retornada. Atualize a chave usando updateKeyRotationPolicy com uma política, que inclui notificação.

Os métodos de criação de conveniência estão disponíveis para os seguintes tipos de chave, que definem propriedades associadas a esse tipo de chave:

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

Girar manualmente a chave

Quando precisar girar a chave, use o método rotateKey . Isso cria uma nova versão da chave e define essa versão como a versão ativa.

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

Atualizar propriedades da chave

Atualize as propriedades da versão mais recente da chave com updateKeyProperties ou atualize uma versão específica de uma chave com updateKeyProperties. Todas as propriedades UpdateKeyPropertiesOptions não especificadas são mantidas inalteradas. Isso não altera o valor da chave.

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

Atualizar valor da chave

Para atualizar um valor de chave, use o método rotateKey . Certifique-se de passar o novo valor com todas as propriedades que você deseja manter da versão atual da chave. Todas as propriedades atuais não definidas em chamadas adicionais para rotateKey serão perdidas.

Isso gera uma nova versão de uma chave. O objeto KeyVaultKey retornado inclui a nova ID de versão.

Próximos passos