Freigeben über


Sichern, Aktualisieren und rotieren eines Geheimnisses in Azure Key Vault mit JavaScript

Erstellen Sie den SecretClient mit den entsprechenden Anmeldeinformationen für die programmgesteuerte Authentifizierung, und verwenden Sie dann den Client, um ein Geheimnis in Azure Key Vault festzulegen, zu aktivieren und zu rotieren.

Festlegen eines Geheimnisses

Verwenden Sie zum Festlegen eines Geheimnisses in Azure Key Vault die setSecret-Methode der SecretClient-Klasse.

Der Geheimniswerttyp ist eine Zeichenfolge. Der Anfangswert kann ein beliebiger Wert sein, der in eine Zeichenfolge serialisiert werden kann, z. B. JSON- oder BASE64-codierte Daten. Sie müssen die Serialisierung bereitstellen, bevor Sie das Geheimnis im Key Vault festlegen, und deserialisieren, nachdem Sie das Geheimnis aus dem Key Vault abgerufen haben.

const name = 'mySecret';
const value = 'mySecretValue'; // or JSON.stringify({'key':'value'})

const { name, value, properties } = await client.setSecret(
    secretName,
    secretValue
); 

Wenn Sie das Geheimnis erstellen, enthält die KeyVaultSecret-Antwort ein SecretProperties-Objekt , das die Metadaten des Geheimnisses enthält, z. B.:

  • createdOn: Datum und Uhrzeit der Geheimniserstellung (UTC-Format).
  • id: Vollständige URL des Geheimnisses.
  • recoverableDays: Anzahl der Tage, an denen das Geheimnis nach dem Löschen wiederhergestellt werden kann.
  • recoveryLevel: Zu den Werten gehören: „Löschbar“, „Wiederherstellbar+Löschbar“, „Wiederherstellbar“, „Wiederherstellbar+ProtectedSubscription“.
  • updatedOn: Datum und Uhrzeit der letzten Aktualisierung des Geheimnisses (UTC-Format).
  • version: Version des Geheimnisses.

Festlegen eines Geheimnisses mit Eigenschaften

Verwenden Sie die setSecret-Methode der SecretClient-Klasse mit SetSecretOptions, um optionale Parameter einzuschließen, die Teil des Geheimnisses sind, z. B.:

  • contentType: Ihre Darstellung und Ihr Verständnis des Inhaltstyps des Geheimnisses. Vorschläge für die Verwendung umfassen einen nativen Typ, Ihren eigenen benutzerdefinierten TypeScript-Typ oder einen MIME-Typ. Dieser Wert wird im Azure-Portal angezeigt.
  • enabled: Die Standardeinstellung ist „true“.
  • expiresOn: UTC-Datum und -Uhrzeit, zu der das Geheimnis abläuft.
  • notBefore: UTC-Datum und -Uhrzeit, vor denen das Geheimnis nicht verwendet werden kann.
  • tags: Benutzerdefinierte Namen-/Wert-Paare, die Sie dem Geheimnis zuordnen können.
const name = 'mySecret';
const value = JSON.stringify({
    'mykey':'myvalue', 
    'myEndpoint':'https://myendpoint.com'
});
const secretOptions = {
    // example options
    contentType: 'application/json',
    tags: { 
        project: 'test-cluster', 
        owner: 'jmclane',
        team: 'devops'
    }
};

const { name, value, properties } = await client.setSecret(
    secretName,
    secretValue, 
    secretOptions
);

Diese Methode gibt das KeyVaultSecret-Objekt zurück.

Aktualisieren des Geheimniswerts

Verwenden Sie zum Aktualisieren eines Geheimniswerts die Methode setSecret, die im vorherigen Abschnitt dargestellt wurde. Stellen Sie sicher, dass Sie den neuen Wert als Zeichenfolge und alle Eigenschaften übergeben, die Sie aus der aktuellen Version des Geheimnisses beibehalten möchten. Alle aktuellen Eigenschaften, die nicht in zusätzlichen Aufrufen von setSecret festgelegt wurden, gehen verloren.

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

Aktualisieren der Geheimniseigenschaften

Die Eigenschaften eines Geheimnisses aktualisieren Sie mithilfe der Methode updateSecretProperties der SecretClient-Klasse. Eigenschaften, die nicht in der Anforderung angegeben sind, bleiben unverändert. Der Wert eines geheimen Schlüssels selbst kann nicht geändert werden. Dieser Vorgang erfordert die „secrets/set“-Berechtigung.

const name = 'mySecret';

// Update tags
const updatedTagName = 'existingTag';
const updatedTagValue = secret.properties.version.tags[updatedTagName] + ' additional information';

// Use version from existing secret
const version = secret.properties.version;

// Options to update
const secretOptions = {
    tags: {
        'newTag': 'newTagValue', // Set new tag
        'updatedTag': updatedTagValue // Update existing tag
    },
    enabled: false
}

// Update secret's properties - doesn't change secret name or value
const properties = await client.updateSecretProperties(
    secretName,
    secretVersion,
    secretOptions,
);

Diese Methode gibt das SecretProperties-Objekt zurück.

Rotieren eines Geheimnisses

Um ein Geheimnis zu rotieren, müssen Sie ein Event Grid-Ereignisabonnement für das SecretNearExpiry-Ereignis erstellen und die Rotationsfunktionalität bereitstellen, die mit den Ereignistriggern aufgerufen werden sollte. Verwenden Sie eines der folgenden Tutorials Automatisieren der Rotation eines Geheimnisses für Ressourcen, die Folgendes verwenden:

Nächste Schritte