View a markdown version of this page

Repository-Richtlinien - 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.

Repository-Richtlinien

CodeArtifact verwendet ressourcenbasierte Berechtigungen, um den Zugriff zu kontrollieren. Resource-basedMithilfe von Berechtigungen können Sie angeben, wer Zugriff auf ein Repository hat und welche Aktionen damit ausgeführt werden können. Standardmäßig hat nur der Repository-Besitzer Zugriff auf das Repository. Sie können ein Richtliniendokument anwenden, das anderen IAM-Prinzipalen den Zugriff auf Ihr Repository ermöglicht.

Weitere Informationen finden Sie unter Resource-Based Richtlinien und Richtlinien und Identity-Based Resource-Based Richtlinien.

Erstellen Sie eine Ressourcenrichtlinie, um Lesezugriff zu gewähren

Eine Ressourcenrichtlinie ist eine Textdatei im JSON-Format. Die Datei muss einen Principal (Akteur), eine oder mehrere Aktionen und einen Effekt (AllowoderDeny) angeben. Die folgende Ressourcenrichtlinie gewährt dem Konto beispielsweise die 123456789012 Erlaubnis, Pakete aus dem Repository herunterzuladen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Resource": "*" } ] }

Da die Richtlinie nur für Operationen mit dem Repository ausgewertet wird, an das sie angehängt ist, müssen Sie keine Ressource angeben. Da es sich bei der Ressource um eine implizite Ressource handelt, können Sie den Wert Resource auf setzen*. Damit ein Paketmanager ein Paket aus diesem Repository herunterladen kann, muss außerdem eine Domänenrichtlinie für den kontoübergreifenden Zugriff erstellt werden. Die Domänenrichtlinie muss dem Prinzipal zumindest die codeartifact:GetAuthorizationToken Erlaubnis gewähren. Ein Beispiel für eine vollständige Domänenrichtlinie für die Gewährung von kontoübergreifendem Zugriff finden Sie hierBeispiel für eine Domänenrichtlinie.

Anmerkung

Die codeartifact:ReadFromRepository Aktion kann nur für eine Repository-Ressource verwendet werden. Sie können den Amazon-Ressourcennamen (ARN) eines Pakets nicht als Ressource angeben, um den Lesezugriff auf eine Teilmenge von Paketen in einem Repository zu ermöglichen. codeartifact:ReadFromRepository Ein bestimmter Principal kann entweder alle Pakete in einem Repository lesen oder keines von ihnen.

Da die einzige im Repository angegebene Aktion darin bestehtReadFromRepository, dass Benutzer und Rollen aus dem Konto Pakete aus dem Repository herunterladen 1234567890 können. Sie können jedoch keine anderen Aktionen an ihnen ausführen (z. B. Paketnamen und Versionen auflisten). In der Regel gewähren Sie Berechtigungen in der folgenden Richtlinie zusätzlich dazu, ReadFromRepository weil ein Benutzer, der Pakete aus einem Repository herunterlädt, auch auf andere Weise damit interagieren muss.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "codeartifact:DescribePackageVersion", "codeartifact:DescribeRepository", "codeartifact:GetPackageVersionReadme", "codeartifact:GetRepositoryEndpoint", "codeartifact:ListPackages", "codeartifact:ListPackageVersions", "codeartifact:ListPackageVersionAssets", "codeartifact:ListPackageVersionDependencies", "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Resource": "*" } ] }

Legen Sie eine Richtlinie fest

Nachdem Sie ein Richtliniendokument erstellt haben, verwenden Sie den put-repository-permissions-policy Befehl, um es an ein Repository anzuhängen:

aws codeartifact put-repository-permissions-policy --domain my_domain --domain-owner 111122223333 \ --repository my_repo --policy-document file:///PATH/TO/policy.json

Wenn Sie aufrufenput-repository-permissions-policy, wird die Ressourcenrichtlinie für das Repository bei der Bewertung der Berechtigungen ignoriert. Dadurch wird sichergestellt, dass sich der Besitzer einer Domain nicht aus dem Repository aussperren kann, was ihn daran hindern würde, die Ressourcenrichtlinie zu aktualisieren.

Anmerkung

Sie können einem anderen AWS Konto keine Berechtigungen gewähren, um die Ressourcenrichtlinie in einem Repository mithilfe einer Ressourcenrichtlinie zu aktualisieren, da die Ressourcenrichtlinie beim Aufruf von put-repository-permissions-policy ignoriert wird.

Beispielausgabe:

{ "policy": { "resourceArn": "arn:aws:codeartifact:region-id:111122223333:repository/my_domain/my_repo", "document": "{ ...policy document content...}", "revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx=" } }

Die Ausgabe des Befehls enthält den Amazon-Ressourcennamen (ARN) der Repository-Ressource, den vollständigen Inhalt des Richtliniendokuments und eine Revisionskennung. Sie können die Revisionskennung put-repository-permissions-policy mithilfe der --policy-revision Option an übergeben. Dadurch wird sichergestellt, dass eine bekannte Revision des Dokuments überschrieben wird und nicht eine neuere Version, die von einem anderen Autor festgelegt wurde.

Lesen Sie eine Richtlinie

Verwenden Sie den get-repository-permissions-policy Befehl, um eine vorhandene Version eines Richtliniendokuments zu lesen. Um die Ausgabe aus Gründen der Lesbarkeit zu formatieren, verwenden Sie das --output und --query policy.document zusammen mit dem json.tool Python-Modul.

aws codeartifact get-repository-permissions-policy --domain my_domain --domain-owner 111122223333 \ --repository my_repo --output text --query policy.document | python -m json.tool

Beispielausgabe:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": [ "codeartifact:DescribePackageVersion", "codeartifact:DescribeRepository", "codeartifact:GetPackageVersionReadme", "codeartifact:GetRepositoryEndpoint", "codeartifact:ListPackages", "codeartifact:ListPackageVersions", "codeartifact:ListPackageVersionAssets", "codeartifact:ListPackageVersionDependencies", "codeartifact:ReadFromRepository" ], "Resource": "*" } ] }

Löschen Sie eine Richtlinie

Verwenden Sie den delete-repository-permissions-policy Befehl, um eine Richtlinie aus einem Repository zu löschen.

aws codeartifact delete-repository-permissions-policy --domain my_domain --domain-owner 111122223333 \ --repository my_repo

Das Format der Ausgabe entspricht dem des get-repository-permissions-policy Befehls.

Gewähren Sie Prinzipalen Lesezugriff

Wenn Sie in einem Richtliniendokument den Root-Benutzer eines Kontos als Principal angeben, gewähren Sie allen Benutzern und Rollen in diesem Konto Zugriff. Um den Zugriff auf ausgewählte Benutzer oder Rollen zu beschränken, verwenden Sie deren ARN im Principal Abschnitt der Richtlinie. Verwenden Sie beispielsweise Folgendes, um dem IAM-Benutzer bob im Konto 123456789012 Lesezugriff zu gewähren.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/bob" }, "Resource": "*" } ] }

Gewähren Sie Schreibzugriff auf Pakete

Die codeartifact:PublishPackageVersion Aktion wird verwendet, um die Erlaubnis zum Veröffentlichen neuer Versionen eines Pakets zu steuern. Bei der für diese Aktion verwendeten Ressource muss es sich um ein Paket handeln. Das Format der CodeArtifact Paket-ARNs lautet wie folgt.

arn:aws:codeartifact:region-id:111122223333:package/my_domain/my_repo/package-format/package-namespace/package-name

Das folgende Beispiel zeigt den ARN für ein npm-Paket mit Gültigkeitsbereich @parity und Namen ui im my_repo Repository in der Domäne. my_domain

arn:aws:codeartifact:region-id:111122223333:package/my_domain/my_repo/npm/parity/ui

Der ARN für ein NPM-Paket ohne Gültigkeitsbereich enthält die leere Zeichenfolge für das Namespace-Feld. Das Folgende ist beispielsweise der ARN für ein Paket ohne Gültigkeitsbereich und mit dem Namen react im my_repo Repository in der Domäne. my_domain

arn:aws:codeartifact:region-id:111122223333:package/my_domain/my_repo/npm//react

Die folgende Richtlinie gewährt dem Konto die 123456789012 Erlaubnis, Versionen von @parity/ui im my_repo Repository zu veröffentlichen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "codeartifact:PublishPackageVersion" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Resource": "arn:aws:codeartifact:us-east-1:111122223333:package/my_domain/my_repo/npm/parity/ui" } ] }
Wichtig

Um die Erlaubnis zur Veröffentlichung von Maven- und NuGet Paketversionen zu gewähren, fügen Sie zusätzlich zu codeartifact:PublishPackageVersion die folgenden Berechtigungen hinzu.

  1. NuGet: codeartifact:ReadFromRepository und geben Sie die Repository-Ressource an

  2. Maven: codeartifact:PutPackageMetadata

Da diese Richtlinie eine Domain und ein Repository als Teil der Ressource festlegt, erlaubt sie die Veröffentlichung nur, wenn sie an dieses Repository angehängt ist.

Gewähren Sie Schreibzugriff auf ein Repository

Sie können Platzhalter verwenden, um Schreibberechtigungen für alle Pakete in einem Projektarchiv zu gewähren. Verwenden Sie beispielsweise die folgende Richtlinie, um einem Konto die Schreibberechtigung für alle Pakete im my_repo Projektarchiv zu gewähren.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "codeartifact:PublishPackageVersion" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Resource": "arn:aws:codeartifact:us-east-1:111122223333:package/my_domain/my_repo/*" } ] }

Interaktion zwischen Repository- und Domain-Richtlinien

CodeArtifact unterstützt Ressourcenrichtlinien für Domänen und Repositorys. Ressourcenrichtlinien sind optional. Jede Domain kann eine Richtlinie haben und jedes Repository in der Domain kann eine eigene Repository-Richtlinie haben. Wenn sowohl eine Domänenrichtlinie als auch eine Repository-Richtlinie vorhanden sind, werden beide ausgewertet, um festzustellen, ob eine Anfrage an ein CodeArtifact Repository zulässig oder abgelehnt ist. Domänen- und Repository-Richtlinien werden anhand der folgenden Regeln bewertet:

  • Bei der Ausführung von Vorgängen auf Kontoebene wie ListDomains oder werden keine Ressourcenrichtlinien evaluiert. ListRepositories

  • Bei der Ausführung von Vorgängen auf Domänenebene wie oder werden keine Repository-Richtlinien evaluiert. DescribeDomain ListRepositoriesInDomain

  • Die Domänenrichtlinie wird bei der Ausführung nicht bewertet. PutDomainPermissionsPolicy Beachten Sie, dass diese Regel Sperrungen verhindert.

  • Die Domänenrichtlinie wird bei der Ausführung ausgewertet PutRepositoryPermissionsPolicy, die Repository-Richtlinie wird jedoch nicht bewertet.

  • Eine ausdrückliche Ablehnung in einer Richtlinie überschreibt eine Zulassung in einer anderen Richtlinie.

  • Eine ausdrückliche Zulassung ist nur in einer Ressourcenrichtlinie erforderlich. Das Auslassen einer Aktion in einer Repository-Richtlinie führt nicht zu einer impliziten Ablehnung, wenn die Domänenrichtlinie die Aktion zulässt.

  • Wenn keine Ressourcenrichtlinie eine Aktion zulässt, ist das Ergebnis eine implizite Ablehnung, es sei denn, das Konto des aufrufenden Prinzipals ist das Konto des Domänenbesitzers oder des Repository-Administrators und eine identitätsbasierte Richtlinie erlaubt die Aktion.

Ressourcenrichtlinien sind optional, wenn sie verwendet werden, um den Zugriff in einem Szenario mit nur einem Konto zu gewähren, in dem das Anruferkonto, das für den Zugriff auf ein Repository verwendet wird, mit dem Konto des Domänenbesitzers und des Repository-Administrators identisch ist. Ressourcenrichtlinien sind erforderlich, um den Zugriff in einem kontoübergreifenden Szenario zu gewähren, in dem das Konto des Anrufers nicht mit dem Konto des Domänenbesitzers oder Repository-Administrators identisch ist. Cross-account Der Zugriff in CodeArtifact folgt den allgemeinen IAM-Regeln für den kontoübergreifenden Zugriff, wie im IAM-Benutzerhandbuch unter Feststellen, ob eine kontoübergreifende Anfrage zulässig ist, beschrieben wird.

  • Einem Principal im Konto des Domaininhabers kann durch eine identitätsbasierte Richtlinie Zugriff auf jedes Repository in der Domain gewährt werden. Beachten Sie, dass in diesem Fall in einer Domänen- oder Repository-Richtlinie keine ausdrückliche Genehmigung erforderlich ist.

  • Einem Principal im Konto des Domaininhabers kann über eine Domain- oder Repository-Richtlinie Zugriff auf jedes Repository gewährt werden. Beachten Sie, dass in diesem Fall in einer identitätsbasierten Richtlinie keine ausdrückliche Genehmigung erforderlich ist.

  • Einem Principal im Repository-Administratorkonto kann über eine identitätsbasierte Richtlinie Zugriff auf das Repository gewährt werden. Beachten Sie, dass in diesem Fall keine ausdrückliche Genehmigung in einer Domänen- oder Repository-Richtlinie erforderlich ist.

  • Einem Principal in einem anderen Konto wird nur dann Zugriff gewährt, wenn mindestens eine Ressourcenrichtlinie und mindestens eine identitätsbasierte Richtlinie dies zulassen, ohne dass eine Richtlinie die Aktion explizit verweigert.