Compartilhar via


Criar, girar e atualizar as propriedades de uma chave no Azure Key Vault com JavaScript

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

Girar uma chave significa criar uma nova versão da chave e definir essa versão como a 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 Azure Key Vault, 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.

É retornada uma KeyVaultKey. Atualize a chave usando updateKeyRotationPolicy com uma política que inclua notificação.

Os métodos de criação de conveniência estão disponíveis para os seguintes tipos de chave, que definem as 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 a chave manualmente

Quando você 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 as 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 permanecem 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 de chave

Para atualizar o valor de uma 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 ao rotateKey serão perdidas.

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

Próximas etapas