Domain-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.

Domain-Richtlinien

CodeArtifact unterstützt die Verwendung ressourcenbasierter Berechtigungen zur Zugriffskontrolle. Mit ressourcenbasierten Berechtigungen können Sie angeben, wer Zugriff auf eine Ressource hat und welche Aktionen sie mit ihr ausführen können. Standardmäßig kann nur das AWS Konto, dem die Domain gehört, Repositorys in der Domain erstellen und darauf zugreifen. Sie können ein Richtliniendokument auf eine Domain anwenden, um anderen IAM Prinzipalen den Zugriff darauf zu ermöglichen.

Weitere Informationen finden Sie unter Richtlinien und Berechtigungen und Identitätsbasierte Richtlinien und Ressourcenbasierte Richtlinien.

Aktivieren Sie den kontoübergreifenden Zugriff auf eine Domain

Eine Ressourcenrichtlinie ist eine Textdatei im JSON Format. In der Datei müssen ein Hauptdarsteller (Akteur), eine oder mehrere Aktionen und ein Effekt (AllowoderDeny) angegeben werden. Um ein Repository in einer Domäne zu erstellen, die einem anderen Konto gehört, muss dem Prinzipal die entsprechenden CreateRepository Berechtigungen für die Domänenressource erteilt werden.

Die folgende Ressourcenrichtlinie gewährt dem Konto beispielsweise die 123456789012 Berechtigung, ein Repository in der Domäne zu erstellen.

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

Um das Erstellen von Repositorys mit Tags zu ermöglichen, müssen Sie die codeartifact:TagResource entsprechende Berechtigung angeben. Dadurch erhält das Konto auch Zugriff auf das Hinzufügen von Tags zur Domain und allen darin enthaltenen Repositorys.

Die Domänenrichtlinie wird für alle Operationen mit der Domain und allen Ressourcen innerhalb der Domain bewertet. Das bedeutet, dass die Domänenrichtlinie verwendet werden kann, um Berechtigungen auf Repositorys und Pakete in der Domäne anzuwenden. Wenn das Resource Element auf gesetzt ist*, gilt die Anweisung für alle Ressourcen in der Domäne. Wenn die obige Richtlinie beispielsweise auch codeartifact:DescribeRepository in der Liste der zulässigen IAM Aktionen enthalten wäre, würde die Richtlinie den Aufruf DescribeRepository jedes Repositorys in der Domäne zulassen. Eine Domänenrichtlinie kann verwendet werden, um Berechtigungen auf bestimmte Ressourcen in der Domäne anzuwenden, indem bestimmte Ressourcen ARNs in dem Resource Element verwendet werden.

Anmerkung

Sowohl Domänen- als auch Repository-Richtlinien können zur Konfiguration von Berechtigungen verwendet werden. Wenn beide Richtlinien vorhanden sind, werden beide Richtlinien bewertet und eine Aktion ist zulässig, sofern eine der Richtlinien dies zulässt. Weitere Informationen finden Sie unter Interaktion zwischen Repository- und Domänenrichtlinien.

Um auf Pakete in einer Domäne zuzugreifen, die einem anderen Konto gehört, muss einem Prinzipal die entsprechenden GetAuthorizationToken Berechtigungen für die Domänenressource erteilt werden. Auf diese Weise kann der Domaininhaber kontrollieren, welche Konten die Inhalte von Repositorys in der Domain lesen können.

Die folgende Ressourcenrichtlinie gewährt dem Konto beispielsweise die 123456789012 Erlaubnis, ein Authentifizierungstoken für jedes Repository in der Domain abzurufen.

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

Einem Principal, der Pakete von einem Repository-Endpunkt abrufen möchte, muss zusätzlich zu der ReadFromRepository Berechtigung für die Domäne auch die Berechtigung für die Repository-Ressource GetAuthorizationToken erteilt werden. In ähnlicher Weise muss einem Prinzipal, der Pakete auf einem Repository-Endpunkt veröffentlichen möchte, zusätzlich zu GetAuthorizationToken die PublishPackageVersion entsprechende Berechtigung erteilt werden.

Weitere Informationen zu den PublishPackageVersion Berechtigungen ReadFromRepository und finden Sie unter Repository-Richtlinien.

Beispiel für eine Domänenrichtlinie

Wenn mehrere Konten eine Domäne verwenden, sollten den Konten grundlegende Berechtigungen erteilt werden, damit sie die Domäne vollständig nutzen können. Die folgende Ressourcenrichtlinie listet eine Reihe von Berechtigungen auf, die die vollständige Nutzung der Domäne ermöglichen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::123456789012:root" } } ] }
Anmerkung

Sie müssen keine Domänenrichtlinie erstellen, wenn eine Domäne und alle zugehörigen Repositorys einem einzigen Konto gehören und nur von diesem Konto aus verwendet werden müssen.

Beispiel für eine Domänenrichtlinie mit AWS Organizations

Sie können den aws:PrincipalOrgID Bedingungsschlüssel verwenden, um von allen Konten in Ihrer Organisation aus Zugriff auf eine CodeArtifact Domain zu gewähren. Gehen Sie dazu wie folgt vor.

{ "Version": "2012-10-17", "Statement": { "Sid": "DomainPolicyForOrganization", "Effect": "Allow", "Principal": "*", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID":["o-xxxxxxxxxxx"]} } } }

Weitere Informationen zur Verwendung des aws:PrincipalOrgID Bedingungsschlüssels finden Sie unter AWSGlobal Condition Context Keys im IAMBenutzerhandbuch.

Legen Sie eine Domänenrichtlinie fest

Sie können den put-domain-permissions-policy Befehl verwenden, um eine Richtlinie an eine Domain anzuhängen.

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

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

Anmerkung

Sie können einem anderen AWS Konto keine Berechtigungen zum Aktualisieren der Ressourcenrichtlinie für eine Domäne mithilfe einer Ressourcenrichtlinie gewähren, da die Ressourcenrichtlinie beim Aufrufen ignoriert wird put-domain-permissions-policy.

Beispielausgabe:

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

Die Ausgabe des Befehls enthält den Amazon-Ressourcennamen (ARN) der Domain-Ressource, den vollständigen Inhalt des Richtliniendokuments und eine Revisions-ID. Die Revisionskennung kann put-domain-permissions-policy mithilfe der --policy-revision Option an übergeben werden. 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 Domänenrichtlinie

Verwenden Sie den get-domain-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 wie folgt.

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

Beispielausgabe:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:root" } } ] }

Löschen Sie eine Domänenrichtlinie

Verwenden Sie den delete-domain-permissions-policy Befehl, um eine Richtlinie aus einer Domain zu löschen.

aws codeartifact delete-domain-permissions-policy --domain my_domain --domain-owner 111122223333

Das Format der Ausgabe entspricht dem der delete-domain-permissions-policy Befehle get-domain-permissions-policy und.