View a markdown version of this page

Quellensteuerungen für Pakete bearbeiten - 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.

Quellensteuerungen für Pakete bearbeiten

In können Paketversionen zu einem Repository hinzugefügt werden AWS CodeArtifact, indem sie direkt veröffentlicht, von 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 einen Angriff zur Substitution von Abhängigkeiten. Weitere Informationen finden Sie unter Angriffe zur Substitution von Abhängigkeiten. Um sich vor einem Angriff zur Substitution von Abhängigkeiten zu schützen, können Sie Paketursprungkontrollen für ein Paket in einem Repository konfigurieren, um einzuschränken, wie Versionen dieses Pakets dem Repository hinzugefügt werden können.

Die Konfiguration der Paketursprungkontrollen sollte von jedem Team in Betracht gezogen werden, das zulassen möchte, dass neue Versionen verschiedener Pakete sowohl aus internen Quellen wie direkter Veröffentlichung als auch aus externen Quellen wie öffentlichen Repositorys stammen. Standardmäßig werden die Paketursprungskontrollen darauf basierend konfiguriert, wie die erste Version eines Pakets zum Repository hinzugefügt wird. Hinweise zu den Einstellungen der Paketursprungkontrolle und ihren Standardwerten finden Sie unterEinstellungen zur Kontrolle des Paketursprungs.

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

Allgemeine Szenarien zur Paketzugriffskontrolle

Dieser Abschnitt enthält einige gängige Szenarien, in denen eine Paketversion zu einem CodeArtifact Repository hinzugefügt wird. Die Einstellungen zur Paketherkunftskontrolle 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 existiert und über eine externe Verbindung in Ihr Repository aufgenommen werden kann.

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

Ziehen Sie in diesem Szenario ein internes Paket, PackageA, in Betracht. 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 Paketursprungskontrolle automatisch auf Veröffentlichen: Zulassen und Upstream: Blockieren gesetzt. Nachdem das Paket in Ihrem Repository existiert, 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 gegen das interne Paket sein, oder es könnte einfach ein Zufall sein. Unabhängig davon sind die Paketursprungkontrollen so konfiguriert, dass sie die Aufnahme der neuen externen Version blockieren, um sich selbst vor einem möglichen Angriff zu schützen.

In der folgenden Abbildung ist RepoA Ihr CodeArtifact Projektarchiv mit einer externen Verbindung zu einem öffentlichen Projektarchiv. 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 Block gesetzt ist, wird Version 3.0 nicht in Ihr CodeArtifact Projektarchiv aufgenommen und steht den damit verbundenen Paketmanagern nicht zur Verfügung.

Einfache Grafik, die zeigt, dass eine neue externe Paketversion in 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 zu deinem Repository hinzugefügt wurde, sind die Paketursprungseinstellungen auf Publish: BLOCK und Upstream: ALLOW konfiguriert. Später versuchst du, eine Version mit demselben Paketnamen im Repository zu veröffentlichen. Entweder sind Sie sich des öffentlichen Pakets nicht bewusst und versuchen, ein anderes Paket unter demselben Namen zu veröffentlichen, oder Sie versuchen, eine gepatchte Version zu veröffentlichen, oder Sie versuchen, direkt die genaue Paketversion zu veröffentlichen, die bereits extern existiert. 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önntest du Version 1.2 auf repOA veröffentlichen, aber da die Veröffentlichung auf Blockieren gesetzt ist, kann Version 1.2 nicht veröffentlicht werden.

Einfache Grafik, die zeigt, dass eine neue externe Paketversion in 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 zu deinem Repository hinzugefügt wurde, sind die Paketursprungseinstellungen auf Publish: BLOCK und Upstream: ALLOW konfiguriert. 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 Paketherkunftskontrolle auf 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 Paketursprungseinstellungen auf Publish: BLOCK und Upstream: ALLOW zurück.

Einstellungen zur Kontrolle des Paketursprungs

Mit den Paketursprungskontrollen 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 Paketursprungskontrolle.

Anmerkung

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

Veröffentlichen

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

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

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

Upstream

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

  • ZULASSEN: 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.

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

Standardeinstellungen für die Kontrolle des Paketursprungs

Die Standardeinstellungen für die Paketursprungkontrolle werden auf der Grundlage der Ursprungssteuerungseinstellungen der Paketgruppe konfiguriert, die dem Paket zugeordnet ist. Weitere Informationen zu Paketgruppen und Paketgruppen-Ursprungssteuerungen finden Sie unter Arbeiten mit Paketgruppen in CodeArtifact undUrsprungskontrollen für Paketgruppen.

Wenn ein Paket einer Paketgruppe mit Einschränkungseinstellungen ALLOW für jeden Einschränkungstyp zugeordnet ist, basieren die standardmäßigen Paketursprungkontrollen für ein Paket darauf, wie die erste Version dieses Pakets zum Repository hinzugefügt wird.

  • 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 wird, lauten die Einstellungen Publish: BLOCK und Upstream: ALLOW.

Anmerkung

Pakete, die vor etwa Mai 2022 in CodeArtifact Repositorys existierten, werden standardmäßig über die Paketherkunft Publish: ALLOW und Upstream: ALLOW verfügen. Die Paketursprungkontrollen müssen für solche Pakete manuell festgelegt werden. Die aktuellen Standardwerte wurden seitdem für neue Pakete festgelegt und mit der Einführung der Funktion am 14. Juli 2022 eingeführt. Weitere Informationen zum Festlegen der Paketursprungskontrollen finden Sie unterDie Quellensteuerungen für Pakete bearbeiten.

Andernfalls, wenn ein Paket einer Paketgruppe zugeordnet ist, die mindestens eine Einschränkungseinstellung von BLOCK oder hatALLOW_SPECIFIC_REPOSITORIES, werden die standardmäßigen Ursprungssteuerungseinstellungen für dieses Paket auf Publish: ALLOW und Upstream: ALLOW gesetzt.

Wie die Paketursprungsteuerungen mit den Ursprungssteuerungen der Paketgruppen interagieren

Da Pakete Ursprungssteuerungseinstellungen haben und die zugehörigen Paketgruppen Ursprungssteuerungseinstellungen haben, ist es wichtig zu verstehen, wie diese beiden unterschiedlichen Einstellungen miteinander interagieren.

Die Interaktion 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 Paketursprungkontrolle Einstellung für die Quellcodeverwaltung für Paketgruppen Effektive Einstellung für die Herkunftskontrolle

VERÖFFENTLICHEN: ZULASSEN

UPSTREAM: ZULASSEN

VERÖFFENTLICHEN: ZULASSEN

UPSTREAM: ZULASSEN

VERÖFFENTLICHEN: ZULASSEN

UPSTREAM: ZULASSEN

VERÖFFENTLICHEN: BLOCKIEREN

UPSTREAM: ZULASSEN

VERÖFFENTLICHEN: ZULASSEN

UPSTREAM: ZULASSEN

VERÖFFENTLICHEN: BLOCKIEREN

UPSTREAM: ZULASSEN

VERÖFFENTLICHEN: ZULASSEN

UPSTREAM: ZULASSEN

VERÖFFENTLICHEN: ZULASSEN

FLUSSAUFWÄRTS: BLOCKIEREN

VERÖFFENTLICHEN: ZULASSEN

FLUSSAUFWÄRTS: BLOCKIEREN

Das bedeutet, dass, wenn ein Paket die Ursprungseinstellungen Publish: ALLOW und Upstream: ALLOW hat, es effektiv auf die Origin-Control-Einstellungen der zugehörigen Paketgruppe zurückgreift.

Die Quellensteuerungen für Pakete bearbeiten

Die Paketursprungskontrollen werden automatisch konfiguriert, je nachdem, wie die erste Paketversion eines Pakets zum Repository hinzugefügt wird. Weitere Informationen finden Sie unterStandardeinstellungen für die Kontrolle des Paketursprungs. Um Paketursprungskontrollen für ein Paket in einem CodeArtifact Repository hinzuzufügen oder zu bearbeiten, führen Sie die folgenden Schritte aus.

Um Paketursprungskontrollen 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 Repositorys und wählen Sie 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 Ursprungssteuerelemente bearbeiten die Paketursprungskontrollen aus, die Sie für dieses Paket festlegen möchten. Beide Einstellungen für die Paketursprungkontrolle, Publish und Upstream, müssen gleichzeitig festgelegt werden.

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

    • 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 das gesamte Ingestieren und Abrufen von Paketversionen aus externen Repositorys und Upstream-Repositorys zu blockieren, wählen Sie Blockieren.

Um Steuerelemente für die 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 Quellsteuerelemente für Pakete hinzuzufügen oder zu bearbeiten. Ersetzen Sie die folgenden Felder:

    • my_domainErsetzen Sie durch die CodeArtifact Domain, die das Paket enthält, das Sie aktualisieren möchten.

    • my_repoErsetzen Sie es durch das CodeArtifact Repository, das das Paket enthält, das Sie aktualisieren möchten.

    • npmErsetzen Sie es durch das Paketformat des Pakets, das Sie aktualisieren möchten.

    • my_packageErsetzen Sie es durch den Namen des Pakets, das Sie aktualisieren möchten.

    • Ersetzen Sie ALLOW und BLOCK durch die gewünschten Einstellungen für die Paketherkunftskontrolle.

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

Veröffentlichung und Upstream-Repositorys

CodeArtifact erlaubt keine Veröffentlichung 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 Paketursprungskontrolle com.mycompany.mypackage sind Publish: ALLOW und Upstream: ALLOW. Wenn com.mycompany.mypackage:1.0 es im Upstream-Repository oder in Maven Central vorhanden ist, CodeArtifact lehnt es jeden Versuch ab, dort zu veröffentlichen, und es wird ein 409-Konfliktfehler ausgegeben. myrepo Du könntest immer noch eine andere Version veröffentlichen, wie zum Beispiel. com.mycompany.mypackage:1.1

  2. Die Einstellungen für die Paketherkunftskontrolle com.mycompany.mypackage sind Publish: ALLOW und Upstream: BLOCK. Du kannst jede Version von com.mycompany.mypackage in deinem Repository veröffentlichen, die noch nicht existiert, weil Paketversionen nicht erreichbar sind.

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