News

openai-node 7.13.0: Der initiale Servicekonto-Schlüssel kann befristet werden

OpenAIs offizielle TypeScript-Bibliothek kann beim Anlegen eines Projekt-Servicekontos nun die Laufzeit des dabei erzeugten ersten API-Schlüssels festlegen. Eine Rotation übernimmt sie nicht.

openai-node ist OpenAIs offizielle JavaScript- und TypeScript-Bibliothek für die OpenAI API. Ein Servicekonto ist eine maschinelle Identität innerhalb eines Projekts. Version 7.13.0 ergänzt beim Erstellen eines solchen Kontos expires_in_seconds: Der gleichzeitig erzeugte erste API-Schlüssel kann damit von Anfang an befristet werden.

expires_in_seconds setzt beim Anlegen die Laufzeit. Im zurückgegebenen initialen Schlüssel meldet expires_at den Ablaufzeitpunkt als Unix-Zeitstempel, also als Zahl der Sekunden seit dem 1. Januar 1970. Wer Schlüssel bislang nur per Kalendereintrag rotieren wollte, kann die Frist damit in die Zugangsdaten selbst verlagern. Ein Kalendereintrag kann übersehen werden; die API ist in solchen Dingen weniger sentimental.

Ein befristeter erster Schlüssel in TypeScript

Für diesen Verwaltungsendpunkt ist bereits ein Organisations-Admin-Schlüssel erforderlich. Das Beispiel erzeugt ein Projekt-Servicekonto samt erstem Schlüssel mit einer Laufzeit von 30 Tagen:

import OpenAI from "openai";

const adminKey = process.env.OPENAI_ADMIN_KEY;
if (!adminKey) throw new Error("OPENAI_ADMIN_KEY fehlt");

const client = new OpenAI({ apiKey: adminKey });

const serviceAccount =
  await client.admin.organization.projects.serviceAccounts.create(
    "proj_123",
    {
      name: "CI-Verwaltung",
      expires_in_seconds: 30 * 24 * 60 * 60,
    },
  );

const expiresAt = serviceAccount.api_key?.expires_at;

console.log({
  serviceAccountId: serviceAccount.id,
  expiresAt: expiresAt == null
    ? null
    : new Date(expiresAt * 1000).toISOString(),
});

Der ungekürzte Schlüsselwert steht nur beim Erstellen in serviceAccount.api_key?.value. Er gehört unmittelbar in einen Secret Store, also eine besonders geschützte Ablage für Zugangsdaten, und niemals in Protokolle oder Build-Artefakte.

Neu ist genau dieser Erstellungsweg

Bereits zuvor konnte openai-node beim späteren Anlegen eines zusätzlichen Schlüssels für ein bestehendes Servicekonto eine Laufzeit setzen; auch Organisations-Admin-Schlüssel besaßen bereits eine Ablaufoption. Neu ist die Option für den initialen Schlüssel, der bei der Kontoerstellung entsteht. Version 7.13.0 macht also einen bisher unbefristeten Erstellungsweg befristbar, nicht sämtliche OpenAI-Schlüssel erstmals zeitlich begrenzbar.

Ohne expires_in_seconds läuft der Schlüssel grundsätzlich nicht ab, sofern keine wirksame Organisations- oder Projektrichtlinie eine Frist verlangt. Setzt eine solche Richtlinie eine Höchstlaufzeit, darf der angegebene Wert sie nicht überschreiten. Wer mit create_service_account_only: true ausdrücklich nur das Konto ohne ersten Schlüssel anlegt, darf gleichzeitig keine Laufzeit angeben.

Ablauf ist noch keine Rotation

Ein befristeter Schlüssel reduziert die Zeit, in der vergessene Zugangsdaten verwendbar bleiben. Er ersetzt aber weder die rechtzeitige Ausstellung eines Nachfolgers noch dessen sichere Verteilung. Für produktive Systeme bleibt der saubere Ablauf:

  1. neuen Schlüssel mit begrenzter Laufzeit erzeugen,
  2. im Secret Store hinterlegen,
  3. Anwendung umstellen und prüfen,
  4. bisherigen Schlüssel löschen,
  5. den nächsten Wechsel überwachen oder automatisieren.

Das neue Feld löst also nicht das gesamte Schlüsselmanagement. Es macht den initialen Schlüssel nun immerhin befristbar, wenn der Aufrufer die Laufzeit ausdrücklich setzt.

Quellen

Quellenstand: 10. September 2026.