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. Mit ressourcenbasierten Berechtigungen können Sie angeben, welche Benutzer auf ein Repository zugreifen können und welche Aktionen ausführbar sind. 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 Ressourcenbasierte Richtlinien und Identitätsbasierte Richtlinien und Ressourcenbasierte Richtlinien.
Erstellen Sie eine Ressourcenrichtlinie, um Lesezugriff zu gewähren
Eine Ressourcenrichtlinie ist eine Textdatei im JSON Format. In der Datei müssen ein Hauptdarsteller (Akteur), eine oder mehrere Aktionen und ein Effekt (Allow
oderDeny
) angegeben werden. Die folgende Ressourcenrichtlinie gewährt dem Konto beispielsweise die 123456789012
Erlaubnis, Pakete aus dem Repository herunterzuladen.
{ "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 die Ressource impliziert ist, können Sie den Wert Resource
auf *
setzen. Damit ein Paketmanager ein Paket aus diesem Repository herunterladen kann, muss auch eine Domänenrichtlinie für den kontoübergreifenden Zugriff erstellt werden. Die Domänenrichtlinie muss dem Prinzipal mindestens die codeartifact:GetAuthorizationToken
Erlaubnis erteilen. Ein Beispiel für eine vollständige Domänenrichtlinie zur Gewährung von kontenü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 angebencodeartifact:ReadFromRepository
, um Lesezugriff auf eine Teilmenge von Paketen in einem Repository zu gewähren. Ein bestimmter Prinzipal kann entweder alle Pakete in einem Repository lesen oder keines davon.
Weil 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. das Auflisten von Paketnamen und Versionen). In der Regel gewähren Sie in der folgenden Richtlinie außerdem Berechtigungen, ReadFromRepository
weil ein Benutzer, der Pakete aus einem Repository herunterlädt, auch auf andere Weise mit diesem interagieren muss.
{ "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-owner111122223333
\ --repositorymy_repo
--policy-documentfile:///PATH/TO/policy.json
Wenn Sie aufrufenput-repository-permissions-policy
, wird die Ressourcenrichtlinie für das Repository bei der Auswertung der Berechtigungen ignoriert. Dadurch wird sichergestellt, dass sich der Besitzer einer Domain nicht selbst 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 zur Aktualisierung der Ressourcenrichtlinie für ein Repository mithilfe einer Ressourcenrichtlinie gewähren, da die Ressourcenrichtlinie beim Aufrufen ignoriert wird put-repository-permissions-policy.
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 Revisions-ID. Sie können die Revisions-ID an die put-repository-permissions-policy
Verwendung der --policy-revision
Option übergeben. Dadurch wird sichergestellt, dass eine bekannte Version 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. Verwenden Sie das --output
und --query policy.document
zusammen mit dem json.tool
Python-Modul, um die Ausgabe lesbar zu formatieren.
aws codeartifact get-repository-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --repositorymy_repo
--output text --query policy.document | python -m json.tool
Beispielausgabe:
{ "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-owner111122223333
\ --repositorymy_repo
Das Format der Ausgabe entspricht dem des get-repository-permissions-policy
Befehls.
Gewähren Sie den Hauptbenutzern Lesezugriff
Wenn Sie in einem Richtliniendokument den Root-Benutzer eines Kontos als Hauptbenutzer 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 diese ARN im Principal
Abschnitt der Richtlinie. Verwenden Sie beispielsweise Folgendes, um dem IAM bob
Benutzerkonto Lesezugriff zu gewähren123456789012
.
{ "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 zur Veröffentlichung neuer Versionen eines Pakets zu kontrollieren. Bei der mit dieser Aktion verwendeten Ressource muss es sich um ein Paket handeln. Das Format des CodeArtifact Pakets ARNs ist wie folgt.
arn:aws:codeartifact:
region-id
:111122223333
:package/my_domain
/my_repo
/package-format
/package-namespace
/package-name
Das folgende Beispiel zeigt das ARN für ein npm-Paket mit Umfang @parity
und Namen ui
im my_repo
Repository in der Domänemy_domain
.
arn:aws:codeartifact:
region-id
:111122223333
:package/my_domain
/my_repo
/npm
/parity
/ui
Das ARN für ein npm-Paket ohne Gültigkeitsbereich enthält die leere Zeichenfolge für das Namespace-Feld. Das Folgende gilt beispielsweise ARN für ein Paket ohne Bereich und mit einem 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
Berechtigung, Versionen von @parity/ui
im my_repo
Repository zu veröffentlichen.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:PublishPackageVersion" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "arn:aws:codeartifact:region-id
:111122223333
:package/my_domain
/my_repo
/npm
/parity
/ui
" } ] }
Wichtig
Um die Erlaubnis zur Veröffentlichung von Maven- und NuGet Paketversionen zu erteilen, fügen Sie zusätzlich zu codeartifact:PublishPackageVersion
die folgenden Berechtigungen hinzu.
NuGet:
codeartifact:ReadFromRepository
und geben Sie die Repository-Ressource anMaven:
codeartifact:PutPackageMetadata
Da diese Richtlinie eine Domain und ein Repository als Teil der Ressource festlegt, erlaubt sie das Veröffentlichen nur, wenn sie an dieses Repository angehängt sind.
Gewähren Sie Schreibzugriff auf ein Repository
Sie können Platzhalter verwenden, um Schreibberechtigungen für alle Pakete in einem Repository zu erteilen. Verwenden Sie beispielsweise die folgende Richtlinie, um einem Konto die Berechtigung zu erteilen, in alle Pakete im my_repo
Repository zu schreiben.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:PublishPackageVersion" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "arn:aws:codeartifact:region-id
:111122223333
:package/my_domain
/my_repo
/*" } ] }
Interaktion zwischen Repository- und Domänenrichtlinien
CodeArtifact unterstützt Ressourcenrichtlinien für Domänen und Repositorys. Ressourcenrichtlinien sind optional. Jede Domäne kann über eine Richtlinie verfügen und jedes Repository in der Domäne kann über eine eigene Repository-Richtlinie verfügen. Wenn sowohl eine Domänenrichtlinie als auch eine Repository-Richtlinie vorhanden sind, werden beide bei der Entscheidung, ob eine Anfrage an ein CodeArtifact Repository zugelassen oder abgelehnt wird, bewertet. Domänen- und Repository-Richtlinien werden anhand der folgenden Regeln bewertet:
-
Bei der Ausführung von Vorgängen auf Kontoebene wie ListDomainsoder werden keine Ressourcenrichtlinien bewertet. ListRepositories
-
Bei Operationen auf Domänenebene wie oder werden keine Repository-Richtlinien bewertet. DescribeDomainListRepositoriesInDomain
-
Die Domänenrichtlinie wird bei der Ausführung nicht bewertet. PutDomainPermissionsPolicy Beachten Sie, dass diese Regel Aussperrungen verhindert.
-
Die Domänenrichtlinie wird bei der Ausführung bewertet PutRepositoryPermissionsPolicy, die Repository-Richtlinie jedoch nicht.
-
Eine ausdrückliche Ablehnung in einer Richtlinie hat Vorrang vor einer 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 Zugriff in einem Szenario mit einem einzigen Konto zu gewähren, in dem das für den Zugriff auf ein Repository verwendete Anruferkonto mit dem Domäneninhaber- und Repository-Administratorkonto identisch ist. Ressourcenrichtlinien sind erforderlich, um Zugriff in einem kontenübergreifenden Szenario zu gewähren, in dem das Konto des Anrufers nicht mit dem Konto des Domaininhabers oder des Repository-Administrators identisch ist. Für den kontenübergreifenden Zugriff gelten CodeArtifact die allgemeinen IAM Regeln für den kontenübergreifenden Zugriff, wie sie im Benutzerhandbuch unter Feststellen, ob eine kontoübergreifende Anfrage zulässig ist beschrieben. IAM
-
Einem Prinzipal im Domaininhaberkonto kann über eine identitätsbasierte Richtlinie Zugriff auf jedes Repository in der Domain gewährt werden. Beachten Sie, dass in diesem Fall keine ausdrückliche Genehmigung in einer Domänen- oder Repository-Richtlinie erforderlich ist.
-
Einem Prinzipal im Domaininhaberkonto kann über eine Domain- oder Repository-Richtlinie Zugriff auf jedes Repository gewährt werden. Beachten Sie, dass in diesem Fall keine ausdrückliche Genehmigung in einer identitätsbasierten Richtlinie erforderlich ist.
-
Einem Prinzipal im Administratorkonto des Repositorys 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 Prinzipal in einem anderen Konto wird nur dann Zugriff gewährt, wenn dies durch mindestens eine Ressourcenrichtlinie und mindestens eine identitätsbasierte Richtlinie erlaubt wird, ohne dass eine Richtlinie die Aktion ausdrücklich verweigert.