

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
<a name="repo-policies"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) und Ressourcenbasierte Richtlinien.

## Erstellen Sie eine Ressourcenrichtlinie, um Lesezugriff zu gewähren
<a name="creating-a-resource-policy-to-grant-read-access"></a>

Eine Ressourcenrichtlinie ist eine Textdatei im JSON-Format. Die Datei muss einen Prinzipal (Akteur), eine oder mehrere Aktionen und einen Effekt (`Allow`oder`Deny`) 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 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 hier[Beispiel für eine Domänenrichtlinie](domain-policies.md#domain-policy-example).

**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`codeartifact:ReadFromRepository`, um Lesezugriff auf eine Teilmenge von Paketen in einem Repository zu ermöglichen. Ein bestimmter Principal kann entweder alle Pakete in einem Repository lesen oder keines davon.

Weil die einzige im Repository angegebene Aktion darin besteht`ReadFromRepository`, 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.

------
#### [ 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
<a name="setting-a-policy"></a>

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 aufrufen`put-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
<a name="reading-a-policy"></a>

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-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
<a name="deleting-a-policy"></a>

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 den Hauptbenutzern Lesezugriff
<a name="granting-read-access-to-specific-principals"></a>

 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 deren ARN im `Principal` Abschnitt der Richtlinie. Verwenden Sie beispielsweise Folgendes, um dem `bob` IAM-Benutzerkonto `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
<a name="granting-write-access-to-specific-packages"></a>

 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 den ARN für ein npm-Paket mit Bereich `@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 Geltungsbereich 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.

------
#### [ 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 erteilen, fügen Sie zusätzlich zu `codeartifact:PublishPackageVersion` die folgenden Berechtigungen hinzu.  
NuGet: `codeartifact:ReadFromRepository` und geben Sie die Repository-Ressource an
Maven: `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
<a name="granting-write-access-to-a-repository"></a>

 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.

------
#### [ 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 Domänenrichtlinien
<a name="interaction-repo-domain-policies"></a>

 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 [ListDomains](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListDomains.html)oder werden keine Ressourcenrichtlinien bewertet. [ListRepositories](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListRepositories.html)
+ Bei Operationen auf Domänenebene wie oder werden keine Repository-Richtlinien bewertet. [DescribeDomain[ListRepositoriesInDomain](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListRepositoriesInDomain.html)](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DescribeDomain.html)
+ Die Domänenrichtlinie wird bei der Ausführung nicht bewertet. [PutDomainPermissionsPolicy](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PutDomainPermissionsPolicy.html) Beachten Sie, dass diese Regel Aussperrungen verhindert.
+ Die Domänenrichtlinie wird bei der Ausführung bewertet [PutRepositoryPermissionsPolicy](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PutRepositoryPermissionsPolicy.html), die Repository-Richtlinie wird jedoch nicht bewertet.
+ 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. *Der kontenübergreifende Zugriff 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html#policy-eval-cross-account) beschrieben.*
+ Einem Principal 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.