Bereichsbezogene API-Schlüssel

Sie können API-Schlüssel anhand von Bereichen einschränken, um NuGet eine sicherere Umgebung zur Verteilung von Paketen zu machen.

Wenn Sie Bereiche für Ihre API-Schlüssel festlegen können, können Sie Ihre APIs besser kontrollieren. Sie können Folgendes ausführen:

  • Sie können API-Schlüssel mit mehreren Bereichen erstellen, die für unterschiedliche Pakete mit verschiedenen Ablauffristen erstellt werden können.
  • Sie können API-Schlüssel sicher erhalten.
  • Sie können vorhandene API-Schlüssel bearbeiten, um die Anwendbarkeit des Pakets anzupassen.
  • Sie können vorhandene API-Schlüssel aktualisieren oder löschen, ohne Vorgänge mit anderen Schlüsseln zu beeinträchtigen.

Warum werden bereichsbezogene API-Schlüssel unterstützt?

Bereiche für API-Schlüssel werden unterstützt, damit Sie genauere Berechtigungen festlegen können. In der Vergangenheit hat NuGet einen API-Schlüssel für ein Konto zugelassen. Dieser Ansatz hatte mehrere Nachteile:

  • Ein API-Schlüssel für alle Pakete: Mit einem API-Schlüssel zum Verwalten aller Pakete ist es schwer, den Schlüssel sicher zu teilen, wenn mehrere Entwickler mit verschiedenen Paketen involviert sind und ein Herausgeberkonto gemeinsam verwenden.
  • Entweder alle oder keine Berechtigungen: Jeder Benutzer mit Zugriffsberechtigungen für den API-Schlüssel hat alle Berechtigungen (Veröffentlichen, Pushen und Aufheben der Auflistung). Das ist in Umgebungen mit mehreren Teams oft unerwünscht.
  • Einzelne Fehlerquelle. Ein einziger API-Schlüssel bedeutet auch ein Single Point of Failure. Wenn der Schlüssel kompromittiert wird, sind auch alle Pakete, die mit dem Konto verknüpft sind, potenziell kompromittiert. Diese Bedrohung kann nur durch eine Änderung des API-Schlüssels behoben werden. Zudem kann nur so eine Unterbrechung Ihres CI/CD-Workflows vermieden werden. Darüber hinaus kann es Fälle geben, in denen Sie den Zugriff auf den API-Schlüssel für eine Einzelperson widerrufen möchten (wenn z. B. ein Angestellter die Organisation verlässt). Das kann momentan noch nicht unkompliziert gelöst werden.

Mit bereichsbezogenen API-Schlüsseln möchten wir diese Probleme beheben und gleichzeitig sicherstellen, dass keine der bestehenden Workflows beeinträchtigt werden.

Erhalten eines API-Schlüssels

  1. Melden Sie sich bei Ihrem nuget.org-Konto an, oder erstellen Sie ein Konto, wenn Sie noch keines besitzen.

  2. Klicken Sie auf Ihren Benutzernamen (oben rechts) und anschließend auf API-Schlüssel.

  3. Wählen Sie Erstellen aus, und geben Sie dann einen Namen für Ihren Schlüssel an.

  4. Wählen Sie unter Bereiche auswählen die Option Push aus.

  5. Geben Sie unter Pakete auswählen>Glob-Muster * ein.

  6. Klicken Sie auf Erstellen.

  7. Wählen Sie Kopieren aus, um den neuen Schlüssel zu kopieren.

    Screenshot that shows the new API key with the Copy link.

Wichtig

  • Halten Sie Ihren API-Schlüssel grundsätzlich geheim! Der API-Schlüssel ist wie ein Kennwort, mit dem jeder Benutzer Pakete in Ihrem Namen verwalten kann. Löschen Sie Ihren API-Schlüssel oder generieren Sie ihn neu, wenn er versehentlich offengelegt wird.
  • Speichern Sie den Schlüssel an einem sicheren Ort; Sie können den Schlüssel später nicht erneut kopieren. Wenn Sie auf die Seite „API-Schlüssel“ zurückkehren, müssen Sie den Schlüssel erneut generieren, um ihn zu kopieren. Sie können den API-Schlüssel auch entfernen, wenn Sie Pakete nicht mehr mithilfe von Push übertragen möchten.

Mit der Bereichsauswahl können Sie separate API-Schlüssel für verschiedene Zwecke erstellen. Jeder Schlüssel hat seinen Ablaufzeitraum und kann auf bestimmte Pakete (oder Globmuster) festgelegt werden. Sie legen auch jeden Schlüssel auf bestimmte Vorgänge fest: Pushen sie neue Pakete und Paketversionen, pushen Sie nur neue Paketversionen oder heben Sie die Liste auf.

Durch das Festlegen des Gültigkeitsbereichs können Sie API-Schlüssel für verschiedene Personen erstellen, die Pakete für Ihre Organisation so verwalten, dass sie nur über die erforderlichen Berechtigungen verfügen.

Erstellen eines bereichsbezogenen API-Schlüssels

Sie können mehrere API-Schlüssel basierend auf Ihren Umgebungen erstellen. Ein API-Schlüssel kann für eines oder mehrere Pakete gelten, mehrere Bereiche mit bestimmten Berechtigungen aufweisen und ein Ablaufdatum haben.

Im folgenden Beispiel wird der API-Schlüssel Contoso service CI verwendet, mit dem Pakete für bestimmte Contoso.Service-Pakete gepusht werden können und der 365 Tage gültig ist. Das ist ein typisches Beispiel, bei dem verschiedene Teams in derselben Organisation an verschiedenen Paketen arbeiten und die Teammitglieder den Schlüssel bereitstellen, durch den sie Berechtigungen für das Paket haben, an dem sie arbeiten. Durch die Ablauffrist werden alte oder vergessene Schlüssel vermieden.

Create API keys

Verwenden von Globmustern

Wenn Sie mit mehreren Paketen arbeiten und eine lange Liste mit Paketen verwalten müssen, können sie Globmuster verwenden, um mehrere Pakete auf einmal auszuwählen. Wenn sie z. B. einem Schlüssel für alle Pakete, deren ID mit Fabrikam.Service beginnt, bestimmte Bereiche zuweisen möchten, können Sie dazu fabrikam.service.* im Textfeld Glob pattern (Globmuster) angeben.

Create API keys - 2

Das Verwenden von Globmustern zum Bestimmen von API-Schlüssel-Berechtigungen gilt auch für neue Pakete, die mit dem Globmuster übereinstimmen. Wenn Sie z. B. versuchen, ein neues Paket mit dem Namen Fabrikam.Service.Framework zu pushen, können Sie dies mit dem vormals erstellten Schlüssel tun, da das Paket mit dem Globmuster fabrikam.service.* übereinstimmt.

Sicheren Abrufen von API-Schlüsseln

Aus Sicherheitsgründen wird ein neu erstellter Schlüssel niemals angezeigt und kann nur über die Schaltfläche Copy (Kopieren) verwendet werden. Gleichfalls können Sie nicht mehr auf den Schlüssel zugreifen, nachdem die Seite aktualisiert wurde.

Create API keys - 3

Bearbeiten vorhandener API-Schlüssel

Sie sollten auch die Schlüsselberechtigungen und Bereiche aktualisieren, ohne den Schlüssel an sich zu ändern. Wenn Sie einen Schlüssel mit einem bestimmten Bereich oder bestimmten Bereichen für ein einzelnes Paket haben, können Sie denselben Bereich oder dieselben Bereichen auf eines oder mehrere andere Pakete anwenden.

Create API keys - 4

Aktualisieren oder Löschen vorhandener API-Schlüssel

Der Kontobesitzer kann den Schlüssel aktualisieren. In diesem Fall bleiben die Berechtigungen der Pakete, der Bereich und das Ablaufdatum dieselben, aber es wird ein neuer Schlüssel erstellt, sodass der alte nicht mehr verwendet werden kann. Das ist beim Verwalten veralteter Schlüssel oder bei einem potenziellen API-Schlüsselverlust nützlich.

Create API keys - 5

Sie können diese Schlüssel auch löschen, wenn Sie sie nicht mehr benötigen. Wenn Sie den Schlüssel löschen, kann er nicht mehr verwendet werden.

Häufig gestellte Fragen

Was geschieht mit meinem alten (Legacy-)API-Schlüssel?

Ihr alter (Legacy-)API-Schlüssel funktioniert auch weiterhin, solange Sie Ihn benötigen. Diese Schlüssel werden entfernt, wenn sie mehr als 365 Tage nicht mehr zum Pushen von Paketen verwendet wurden. Weitere Informationen finden Sie im Blogbeitrag Changes to expiring API keys (Änderungen an ablaufenden API-Schlüsseln). Sie können diesen Schlüssel nicht mehr aktualisieren. Sie müssen den Legacyschlüssel löschen oder stattdessen einen bereichsbezogenen Schlüssel erstellen.

Hinweis

Dieser Schlüssel hat alle Berechtigungen für alle Pakete, und er läuft nicht ab. Überlegen Sie sich, ob Sie diesen Schlüssel löschen und neue Schlüssel mit bereichsbezogenen Berechtigungen und Ablauffristen erstellen möchten.

Wie viele API-Schlüssel kann ich erstellen?

Sie können unendlich viele API-Schlüssel erstellen. Es wird jedoch empfohlen, es bei einer übersichtlichen Anzahl zu belassen, damit Sie sich nicht um zu viele veraltete Schlüssel kümmern müssen, ohne zu wissen, wo und von wem sie eingesetzt werden.

Kann ich meine Legacy-API-Schlüssel löschen oder aufhören, sie zu verwenden?

Ja. Sie können – und sollten – ihre Legacy-API-Schlüssel löschen.

Kann ich API-Schlüssel wiederherstellen, die ich versehentlich gelöscht habe?

Nein Wenn Sie einen Schlüssel gelöscht haben, können Sie nur neue Schlüssel erstellen. Es gibt keine Wiederherstellungsmöglichkeit für versehentlich gelöschte Schlüssel.

Funktioniert der alte API-Schlüssel weiterhin, wenn ich den API-Schlüssel aktualisiere?

Nein Wenn Sie einen Schlüssel aktualisieren, wird ein neuer Schlüssel mit demselben Bereich, denselben Berechtigungen und demselben Ablaufdatum wie der alte Schlüssel generiert. Der alte Schlüssel existiert nicht mehr.

Kann ich einem vorhandenen API-Schlüssel mehr Berechtigungen zuweisen?

Sie können den Bereich nicht anpassen, aber Sie können die Paketliste bearbeiten, für die er gilt.

Wie kann ich bestimmen, ob einer meiner Schlüssel abgelaufen ist oder bald abläuft?

Wenn ein Schlüssel abläuft, wird eine Warnmeldung am oberen Rand der Seite angezeigt. Außerdem erhält der Kontobesitzer zehn Tage vor Ablauf des Schlüssels eine Warnung per E-Mail, sodass er entsprechende Maßnahmen einleiten kann.