Die Einstellungen zur Herkunft des Pakets werden bearbeitet - CodeArtifact

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die Einstellungen zur Herkunft des Pakets werden bearbeitet

In können Paketversionen einem Repository hinzugefügt werden AWS CodeArtifact, indem sie direkt veröffentlicht, aus einem Upstream-Repository heruntergeladen oder aus einem externen, öffentlichen Repository aufgenommen werden. Wenn Sie zulassen, dass Paketversionen eines Pakets sowohl durch direkte Veröffentlichung als auch durch Aufnahme aus öffentlichen Repositorys hinzugefügt werden, sind Sie anfällig für Angriffe, die Abhängigkeiten ersetzen. Weitere Informationen finden Sie unter Angriffe zur Substitution von Abhängigkeiten. Um sich vor einem Angriff durch die Substitution von Abhängigkeiten zu schützen, können Sie die Kontrolle des Paketursprungs für ein Paket in einem Repository konfigurieren, um einzuschränken, wie Versionen dieses Pakets dem Repository hinzugefügt werden können.

Die Konfiguration von Kontrollen zur Paketherkunft sollte von jedem Team in Betracht gezogen werden, das zulassen möchte, dass neue Versionen verschiedener Pakete sowohl aus internen Quellen wie Direktveröffentlichungen als auch aus externen Quellen wie öffentlichen Repositorien stammen. Standardmäßig werden die Kontrollen für den Paketursprung darauf konfiguriert, wie die erste Version eines Pakets zum Repository hinzugefügt wird. Hinweise zu den Einstellungen für die Steuerung des Paketursprungs und deren Standardwerte finden Sie unterEinstellungen für die Kontrolle des Paketursprungs.

Um den Paketdatensatz nach der Ausführung des put-package-origin-configuration API Vorgangs zu entfernen, verwenden Sie delete-package (sieheLöschen Sie ein Paket oder eine Paketversion).

Allgemeine Szenarien zur Paketzugriffskontrolle

Dieser Abschnitt enthält einige allgemeine Szenarien, wenn eine Paketversion zu einem CodeArtifact Repository hinzugefügt wird. Die Einstellungen zur Kontrolle des Paketursprungs werden für neue Pakete festgelegt, je nachdem, wie die erste Paketversion hinzugefügt wird.

In den folgenden Szenarien ist ein internes Paket ein Paket, das direkt von einem Paketmanager in Ihrem Repository veröffentlicht wird, z. B. ein Paket, das Sie oder Ihr Team erstellen und verwalten. Ein externes Paket ist ein Paket, das in einem öffentlichen Repository vorhanden ist und über eine externe Verbindung in Ihr Repository aufgenommen werden kann.

Eine externe Paketversion wird für ein vorhandenes internes Paket veröffentlicht

Stellen Sie sich in diesem Szenario ein internes Paket, PackageA, vor. Ihr Team veröffentlicht die erste Paketversion für PackageA in einem Repository. CodeArtifact Da dies die erste Paketversion für dieses Paket ist, werden die Einstellungen für die Kontrolle des Paketursprungs automatisch auf Veröffentlichen: Zulassen und Upstream: Blockieren gesetzt. Sobald das Paket in Ihrem Repository vorhanden ist, wird ein Paket mit demselben Namen in einem öffentlichen Repository veröffentlicht, das mit Ihrem CodeArtifact Repository verbunden ist. Dies könnte ein versuchter Angriff zur Substitution von Abhängigkeiten auf das interne Paket sein, oder es könnte auch einfach ein Zufall sein. Unabhängig davon sind die Kontrollen zur Paketherkunft so konfiguriert, dass sie die Aufnahme der neuen externen Version blockieren, um sich vor einem möglichen Angriff zu schützen.

In der folgenden Abbildung ist RepoA Ihr CodeArtifact Repository mit einer externen Verbindung zu einem öffentlichen Repository. Ihr Repository enthält die Versionen 1.1 und 2.1 von PackageA, aber Version 3.0 ist im öffentlichen Repository veröffentlicht. Normalerweise würde RepoA Version 3.0 aufnehmen, nachdem das Paket von einem Paketmanager angefordert wurde. Da die Paketaufnahme auf Blockieren gesetzt ist, wird Version 3.0 nicht in Ihr CodeArtifact Repository aufgenommen und steht den damit verbundenen Paketmanagern nicht zur Verfügung.

Einfache Grafik, die zeigt, dass eine neue externe Paketversion aus einem öffentlichen Repository blockiert wird.

Eine interne Paketversion wird für ein vorhandenes externes Paket veröffentlicht

In diesem Szenario existiert ein Paket, PackageB, extern in einem öffentlichen Repository, das Sie mit Ihrem Repository verbunden haben. Wenn ein mit Ihrem Repository verbundener Paketmanager PackageB anfordert, wird die Paketversion aus dem öffentlichen Repository in Ihr Repository aufgenommen. Da dies die erste Paketversion von PackageB ist, die Ihrem Repository hinzugefügt wurde, sind die Einstellungen für den Paketursprung auf Publish: und Upstream: konfiguriert. BLOCK ALLOW Später versuchen Sie, eine Version mit demselben Paketnamen im Repository zu veröffentlichen. Entweder kennen Sie das öffentliche Paket nicht und versuchen, ein Paket, das nichts damit zu tun hat, unter demselben Namen zu veröffentlichen, oder Sie versuchen, eine gepatchte Version zu veröffentlichen, oder Sie versuchen, genau die Paketversion, die bereits extern existiert, direkt zu veröffentlichen. CodeArtifact lehnt die Version ab, die Sie veröffentlichen möchten, ermöglicht es Ihnen jedoch, die Ablehnung explizit zu überschreiben und die Version bei Bedarf zu veröffentlichen.

In der folgenden Abbildung ist RepoA Ihr CodeArtifact Repository mit einer externen Verbindung zu einem öffentlichen Repository. Ihr Repository enthält Version 3.0, die es aus dem öffentlichen Repository aufgenommen hat. Sie möchten Version 1.1 in Ihrem Repository veröffentlichen. Normalerweise könnten Sie Version 1.2 in RepoA veröffentlichen, aber da die Veröffentlichung auf Blockieren eingestellt ist, kann Version 1.2 nicht veröffentlicht werden.

Einfache Grafik, die zeigt, dass eine neue externe Paketversion aus einem öffentlichen Repository blockiert wird.

Veröffentlichung einer gepatchten Paketversion eines vorhandenen externen Pakets

In diesem Szenario existiert ein Paket, PackageB, extern in einem öffentlichen Repository, das Sie mit Ihrem Repository verbunden haben. Wenn ein mit Ihrem Repository verbundener Paketmanager PackageB anfordert, wird die Paketversion aus dem öffentlichen Repository in Ihr Repository aufgenommen. Da dies die erste Paketversion von PackageB ist, die Ihrem Repository hinzugefügt wurde, sind die Einstellungen für den Paketursprung auf Publish: und Upstream: konfiguriert. BLOCK ALLOW Ihr Team entscheidet, dass es gepatchte Paketversionen dieses Pakets im Repository veröffentlichen muss. Um Paketversionen direkt veröffentlichen zu können, ändert Ihr Team die Einstellungen zur Kontrolle des Paketursprungs in Publish: ALLOW und Upstream: BLOCK. Versionen dieses Pakets können jetzt direkt in Ihrem Repository veröffentlicht und aus öffentlichen Repositorys aufgenommen werden. Nachdem Ihr Team die gepatchten Paketversionen veröffentlicht hat, setzt Ihr Team die Einstellungen für den Paketursprung auf Veröffentlichen: und Upstream: BLOCK zurück. ALLOW

Einstellungen für die Kontrolle des Paketursprungs

Mit den Steuerelementen für den Paketursprung können Sie konfigurieren, wie Paketversionen zu einem Repository hinzugefügt werden können. Die folgenden Listen enthalten die verfügbaren Einstellungen und Werte für die Steuerung des Paketursprungs.

Anmerkung

Die verfügbaren Einstellungen und Werte unterscheiden sich bei der Konfiguration der Ursprungskontrollen für Paketgruppen. Weitere Informationen finden Sie unter Herkunftskontrollen für Paketgruppen.

Veröffentlichen

Diese Einstellung konfiguriert, ob Paketversionen mithilfe von Paketmanagern oder ähnlichen Tools direkt im Repository veröffentlicht werden können.

  • ALLOW: Paketversionen können direkt veröffentlicht werden.

  • BLOCK: Paketversionen können nicht direkt veröffentlicht werden.

Upstream

Diese Einstellung konfiguriert, ob Paketversionen aus externen, öffentlichen Repositorys aufgenommen oder von Upstream-Repositorys beibehalten werden können, wenn dies von einem Paketmanager angefordert wird.

  • ALLOW: Jede Paketversion kann aus anderen CodeArtifact Repositorys beibehalten werden, die als Upstream-Repositorys konfiguriert sind, oder aus einer öffentlichen Quelle mit einer externen Verbindung aufgenommen werden.

  • BLOCK: Paketversionen können nicht aus anderen CodeArtifact Repositorys aufbewahrt werden, die als Upstream-Repositorys konfiguriert sind, oder von einer öffentlichen Quelle mit einer externen Verbindung aufgenommen werden.

Standardeinstellungen für die Kontrolle des Paketursprungs

Die Standardeinstellungen für die Kontrolle des Paketursprungs werden auf der Grundlage der Einstellungen für die Ursprungskontrolle der Paketgruppe konfiguriert, die dem Paket zugeordnet ist. Weitere Informationen zu Paketgruppen und zur Kontrolle der Herkunft von Paketgruppen finden Sie unter Arbeiten mit Paketgruppen in CodeArtifact undHerkunftskontrollen für Paketgruppen.

Wenn ein Paket mit einer Paketgruppe verknüpft ist, deren Einschränkungseinstellungen ALLOW für jeden Einschränkungstyp aktiviert sind, basieren die Standardsteuerungen für den Paketursprung für ein Paket darauf, wie die erste Version dieses Pakets dem Repository hinzugefügt wurde.

  • Wenn die erste Paketversion direkt von einem Paketmanager veröffentlicht wird, lauten die Einstellungen Publish: ALLOW und Upstream: BLOCK.

  • Wenn die erste Paketversion aus einer öffentlichen Quelle aufgenommen wurde, lauten die Einstellungen Publish: BLOCK und Upstream:. ALLOW

Anmerkung

Für Pakete, die vor etwa Mai 2022 in CodeArtifact Repositorys existierten, gelten standardmäßig die Einstellungen Publish: ALLOW und Upstream:. ALLOW Die Kontrolle des Paketursprungs muss für solche Pakete manuell festgelegt werden. Die aktuellen Standardwerte wurden seitdem für neue Pakete festgelegt und ab dem Start der Funktion am 14. Juli 2022 durchgesetzt. Weitere Informationen zur Einstellung von Kontrollen zur Herkunft von Paketen finden Sie unterDie Einstellungen für den Paketursprung werden bearbeitet.

Andernfalls, wenn ein Paket einer Paketgruppe zugeordnet ist, die mindestens eine Einschränkungseinstellung von BLOCK oder hatALLOW_SPECIFIC_REPOSITORIES, dann werden die Standardeinstellungen für die Ursprungskontrolle für dieses Paket auf Veröffentlichen: ALLOW und Upstream: gesetztALLOW.

Wie die Kontrollen zur Herkunft von Paketen mit den Ursprungskontrollen für Paketgruppen interagieren

Da Pakete über Einstellungen für die Ursprungskontrolle und die zugehörigen Paketgruppen über Einstellungen für die Ursprungskontrolle verfügen, ist es wichtig zu verstehen, wie diese beiden unterschiedlichen Einstellungen miteinander interagieren.

Die Wechselwirkung zwischen den beiden Einstellungen besteht darin, dass eine Einstellung von BLOCK immer Vorrang vor einer Einstellung von hatALLOW. In der folgenden Tabelle sind einige Beispielkonfigurationen und ihre effektiven Origin Control-Einstellungen aufgeführt.

Einstellung zur Kontrolle des Paketursprungs Einstellung zur Kontrolle des Ursprungs von Paketgruppen Effektive Einstellung für die Ursprungskontrolle

PUBLISH: ALLOW

UPSTREAM: ALLOW

PUBLISH: ALLOW

UPSTREAM: ALLOW

PUBLISH: ALLOW

UPSTREAM: ALLOW

PUBLISH: BLOCK

UPSTREAM: ALLOW

PUBLISH: ALLOW

UPSTREAM: ALLOW

PUBLISH: BLOCK

UPSTREAM: ALLOW

PUBLISH: ALLOW

UPSTREAM: ALLOW

PUBLISH: ALLOW

UPSTREAM: BLOCK

PUBLISH: ALLOW

UPSTREAM: BLOCK

Das bedeutet, dass ein Paket mit den Ursprungseinstellungen Publish: ALLOW und Upstream: ALLOW dann quasi auf die Ursprungseinstellungen der zugehörigen Paketgruppe zurückgestellt wird.

Die Einstellungen für den Paketursprung werden bearbeitet

Die Kontrollen zur Paketherkunft werden automatisch konfiguriert, je nachdem, wie die erste Paketversion eines Pakets zum Repository hinzugefügt wurde. Weitere Informationen finden Sie unterStandardeinstellungen für die Kontrolle des Paketursprungs. Gehen Sie wie folgt vor, um Steuerungen für den Paketursprung für ein Paket in einem CodeArtifact Repository hinzuzufügen oder zu bearbeiten.

Um Steuerelemente für den Paketursprung hinzuzufügen oder zu bearbeiten (Konsole)
  1. Öffnen Sie die AWS CodeArtifact Konsole unter https://console.aws.amazon.com/codesuite/codeartifact/home.

  2. Wählen Sie im Navigationsbereich Repositories und dann das Repository aus, das das Paket enthält, das Sie bearbeiten möchten.

  3. Suchen Sie in der Tabelle Pakete nach dem Paket, das Sie bearbeiten möchten, und wählen Sie es aus.

  4. Wähle auf der Seite mit der Paketübersicht in Origin Controls die Option Bearbeiten aus.

  5. Wählen Sie unter „Ursprungskontrollen bearbeiten“ die Kontrollen für den Paketursprung aus, die Sie für dieses Paket festlegen möchten. Beide Einstellungen für die Steuerung des Paketursprungs, Publish und Upstream, müssen gleichzeitig festgelegt werden.

    • Um die direkte Veröffentlichung von Paketversionen zuzulassen, wählen Sie unter Veröffentlichen die Option Zulassen aus. Um die Veröffentlichung von Paketversionen zu blockieren, wählen Sie Blockieren aus.

    • Um die Aufnahme von Paketen aus externen Repositorys und das Abrufen von Paketen aus Upstream-Repositorys zuzulassen, wählen Sie unter Upstream-Quellen die Option Zulassen aus. Um die gesamte Aufnahme und das Abrufen von Paketversionen aus externen und Upstream-Repositorys zu blockieren, wählen Sie Blockieren.

Um Kontrollen zur Paketherkunft hinzuzufügen oder zu bearbeiten ()AWS CLI
  1. Falls nicht, konfigurieren Sie das, AWS CLI indem Sie die Schritte unter befolgenEinrichtung mit AWS CodeArtifact.

  2. Verwenden Sie den put-package-origin-configuration Befehl, um Steuerelemente für den Paketursprung hinzuzufügen oder zu bearbeiten. Ersetzen Sie die folgenden Felder:

    • Ersetzen my_domain mit der CodeArtifact Domain, die das Paket enthält, das Sie aktualisieren möchten.

    • Ersetzen my_repo mit dem CodeArtifact Repository, das das Paket enthält, das Sie aktualisieren möchten.

    • Ersetzen npm mit dem Paketformat des Pakets, das Sie aktualisieren möchten.

    • Ersetzen my_package mit dem Namen des Pakets, das Sie aktualisieren möchten.

    • Ersetzen ALLOW and BLOCK mit den gewünschten Einstellungen für die Kontrolle des Paketursprungs.

    aws codeartifact put-package-origin-configuration --domain my_domain \ --repository my_repo --format npm --package my_package \ --restrictions publish=ALLOW,upstream=BLOCK

Veröffentlichungs- und Upstream-Repositorys

CodeArtifact erlaubt nicht das Veröffentlichen von Paketversionen, die in erreichbaren Upstream-Repositorys oder öffentlichen Repositorys vorhanden sind. Nehmen wir zum Beispiel an, Sie möchten ein Maven-Paket com.mycompany.mypackage:1.0 in einem Repository myrepo veröffentlichen und myrepo haben ein Upstream-Repository mit einer externen Verbindung zu Maven Central. Betrachten Sie die folgenden Szenarien.

  1. Die Einstellungen für die Kontrolle des Paketursprungs com.mycompany.mypackage sind Publish: ALLOW und Upstream: aktiviert ALLOW. Wenn im Upstream-Repository oder in Maven Central vorhanden com.mycompany.mypackage:1.0 ist, CodeArtifact lehnt es jeden Versuch ab, dort zu veröffentlichen, myrepo mit einem 409-Konfliktfehler. Sie könnten immer noch eine andere Version veröffentlichen, z. B. com.mycompany.mypackage:1.1

  2. Die Einstellungen für die Kontrolle des Paketursprungs com.mycompany.mypackage sind „Veröffentlichen:“ ALLOW und „Upstream:BLOCK“ aktiviert. Sie können jede Version von com.mycompany.mypackage in Ihrem Repository veröffentlichen, die noch nicht existiert, da Paketversionen nicht erreichbar sind.

  3. Die Einstellungen zur Kontrolle des Paketursprungs com.mycompany.mypackage sind Publish: BLOCK und Upstream: aktiviert ALLOW. Sie können keine Paketversionen direkt in Ihrem Repository veröffentlichen.