View a markdown version of this page

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. Resource-basedMithilfe von Berechtigungen können Sie angeben, wer Zugriff auf eine Ressource hat und welche Aktionen sie damit 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 Identity-Based Richtlinien und Resource-Based Richtlinien.

Aktivieren Sie den kontoübergreifenden Zugriff auf eine Domain

Eine Ressourcenrichtlinie ist eine Textdatei im JSON-Format. Die Datei muss einen Principal (Akteur), eine oder mehrere Aktionen und einen Effekt (AllowoderDeny) angeben. Um ein Repository in einer Domäne zu erstellen, die einem anderen Konto gehört, muss dem Prinzipal die CreateRepository Berechtigung 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.

JSON
{ "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, um der Domain und allen darin enthaltenen Repositorys Tags hinzuzufügen.

Die Domänenrichtlinie wird für alle Operationen mit der Domain und allen Ressourcen innerhalb der Domain evaluiert. Das bedeutet, dass die Domänenrichtlinie verwendet werden kann, um Berechtigungen auf Repositorys und Pakete in der Domain 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 ist, würde die Richtlinie den Aufruf DescribeRepository jedes Repositorys in der Domain zulassen. Eine Domänenrichtlinie kann verwendet werden, um Berechtigungen auf bestimmte Ressourcen in der Domain anzuwenden, indem bestimmte Ressourcen-ARNs im 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 Domain-Richtlinien.

Um auf Pakete in einer Domain zuzugreifen, die einem anderen Konto gehört, muss einem Principal die GetAuthorizationToken Berechtigung für die Domänenressource erteilt werden. Auf diese Weise kann der Domaininhaber die Kontrolle darüber ausüben, welche Konten den Inhalt der Repositorys in der Domain lesen können.

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

JSON
{ "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 ReadFromRepository zur Berechtigung für die Domain die Berechtigung für die Repository-Ressource GetAuthorizationToken erteilt werden. Ebenso muss einem Principal, der Pakete an einem Repository-Endpunkt veröffentlichen möchte, zusätzlich die PublishPackageVersion Erlaubnis erteilt werden. GetAuthorizationToken

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

Beispiel für eine Domänenrichtlinie

Wenn mehrere Konten eine Domain verwenden, sollten den Konten grundlegende Berechtigungen erteilt werden, damit die Domain vollständig genutzt werden kann. Die folgende Ressourcenrichtlinie listet eine Reihe von Berechtigungen auf, die die vollständige Nutzung der Domain ermöglichen.

JSON
{ "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 Domain und alle ihre 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 allen Konten in Ihrer Organisation den Zugriff auf eine CodeArtifact Domain zu gewähren. Gehen Sie dazu wie folgt vor.

JSON
{ "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 AWS Global Condition Context Keys im IAM-Benutzerhandbuch.

Legen Sie eine Domänenrichtlinie fest

Sie können den put-domain-permissions-policy Befehl verwenden, um eine Richtlinie an eine Domäne 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, CodeArtifact ignoriert die Ressourcenrichtlinie für die Domain bei der Bewertung von Berechtigungen. Dadurch wird sichergestellt, dass sich der Besitzer einer Domain nicht von 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 von put-domain-permissions-policy ignoriert wird.

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 Revisionskennung. Die Revisionskennung kann put-domain-permissions-policy mithilfe der --policy-revision Option an übergeben werden. 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 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:

JSON
{ "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 Domäne zu löschen.

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

Das Format der Ausgabe ist dasselbe wie das der delete-domain-permissions-policy Befehle get-domain-permissions-policy und.