

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.

# Verketten von IAM-Rollen in Amazon Neptune
<a name="bulk-load-tutorial-chain-roles"></a>

**Wichtig**  
Das in [Engine-Version 1.2.1.0.R3](engine-releases-1.2.1.0.R3.md) eingeführte neue kontoübergreifende Massenlade-Feature, das die Vorteile der IAM-Rollen-Verkettung nutzt, kann in einigen Fällen zu einer Verschlechterung der Massenlade-Leistung führen. Daher wurden Upgrades auf Engine-Versionen, die dieses Feature unterstützen, vorübergehend ausgesetzt, bis dieses Problem behoben ist.

Wenn Sie Ihrem Cluster eine Rolle anfügen, kann Ihr Cluster diese Rolle annehmen, um auf in Amazon S3 gespeicherte Daten zuzugreifen. Wenn diese Rolle nicht auf alle benötigten Ressourcen zugreifen kann, können Sie ab [Engine-Version 1.2.1.0.R3](engine-releases-1.2.1.0.R3.md) eine oder mehrere zusätzliche Rollen verketten, die Ihr Cluster annehmen kann, um Zugriff auf andere Ressourcen zu erhalten. Jede Rolle in der Kette nimmt die nächste Rolle in der Kette an, bis Ihr Cluster die Rolle am Ende der Kette angenommen hat.

Zum Verketten von Rollen richten Sie eine Vertrauensstellung zwischen den Rollen ein. Um beispielsweise `RoleB` mit `RoleA` zu verketten, muss `RoleA` eine Berechtigungsrichtlinie für die Annahme von `RoleB` besitzen. `RoleB` muss eine Vertrauensrichtlinie besitzen, die die Übergabe der Berechtigungen zurück an `RoleA` ermöglicht. Weitere Informationen finden Sie unter [Verwenden von IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html).

Die erste Rolle in einer Kette muss eine dem Cluster angefügte Rolle sein, die Daten lädt.

Die erste und jede folgende Rolle, die die folgende Rolle in der Kette annimmt, muss Folgendes besitzen:
+ Eine Richtlinie, die eine spezifische Aussage zum `Allow`-Effekt auf die Aktion `sts:AssumeRole` enthält.
+ Der Amazon-Ressourcenname (ARN) der nächsten Rolle in einem `Resource`-Element

**Anmerkung**  
Der Amazon S3 S3-Ziel-Bucket muss sich in derselben AWS Region wie der Cluster befinden.

## Kontoübergreifender Zugriff mithilfe von Rollen
<a name="bulk-load-tutorial-chain-cross-account"></a>

Sie können einen kontoübergreifenden Zugriff gewähren, indem Sie eine oder mehrere Rollen verketten, die zu einem anderen Konto gehören. Wenn Ihr Cluster vorübergehend eine Rolle annimmt, die zu einem anderen Konto gehört, kann er Zugriff auf die Ressourcen in diesem Konto erhalten.

Angenommen, **Konto A** möchte auf Daten in einem Amazon-S3-Bucket zugreifen, der zu **Konto B** gehört:
+ **Konto A** erstellt eine benannte AWS Servicerolle für Neptune `RoleA` und ordnet sie einem Cluster zu.
+ **Konto B** erstellt eine Rolle mit dem Namen `RoleB`, die zum Zugriff auf die Daten in einem Bucket in **Konto B** berechtigt ist.
+ **Konto A** fügt eine Berechtigungsrichtlinie an `RoleA` an, um `RoleB` anzunehmen.
+ **Konto B** fügt eine Vertrauensrichtlinie an `RoleB` an, um die Rückgabe der Berechtigungen an `RoleA` zu ermöglichen.
+ Um auf die Daten im Bucket von **Konto B** zuzugreifen, führt **Konto A** einen Loader-Befehl mit dem Parameter `iamRoleArn` aus, der `RoleA` und `RoleB` verkettet. Für die Dauer der Loader-Operation nimmt `RoleA` vorübergehend `RoleB` an, um auf den Amazon-S3-Bucket in **Konto B** zuzugreifen.

![\[Diagramm, das den kontoübergreifenden Zugriff mithilfe verketteter Rollen zeigt\]](http://docs.aws.amazon.com/de_de/neptune/latest/userguide/images/cross-account-bulk-load.png)


Beispielsweise würde `RoleA` eine Vertrauensrichtlinie besitzen, die eine Vertrauensstellung mit Neptune einrichtet:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
          "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

`RoleA` würde auch eine Berechtigungsrichtlinie besitzen, die die Annahme von `RoleB` im Besitz von **Konto B** ermöglicht:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt1487639602000",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/RoleB"
        }
    ]
}
```

------

Umgekehrt würde `RoleB` eine Vertrauensrichtlinie für die Einrichtung einer Vertrauensstellung mit `RoleA` besitzen:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/RoleA"
            }
        }
    ]
}
```

------

`RoleB` würde auch eine Berechtigung für den Zugriff auf Daten in dem Amazon-S3-Bucket benötigen, der sich in **Konto B** befindet.

## Einen AWS -Security-Token-Service (STS-) VPC-Endpunkt erstellen
<a name="bulk-load-tutorial-sts-endpoint"></a>

Der Neptune-Loader benötigt einen AWS STS VPC-Endpunkt für die Verkettung von IAM-Rollen für den privaten Zugriff über AWS STS APIs private IP-Adressen. Sie können auf sichere und skalierbare Weise eine direkte Verbindung von einer Amazon-VPC zu AWS STS einem VPC-Endpunkt herstellen. Wenn Sie einen Schnittstellen-VPC-Endpunkt verwenden, wird die Sicherheitslage verbessert, da Sie keine Firewalls für den ausgehenden Datenverkehr öffnen müssen. Sie erhalten außerdem die übrigen Vorteile der Verwendung von Amazon-VPC-Endpunkten.

Bei Verwendung eines VPC-Endpunkts wird der Datenverkehr AWS STS nicht über das Internet übertragen und verlässt niemals das Amazon-Netzwerk. Ihre VPC ist sicher verbunden, AWS STS ohne dass Verfügbarkeitsrisiken oder Bandbreitenbeschränkungen für Ihren Netzwerkverkehr auftreten. Weitere Informationen finden Sie unter [Verwenden von AWS STS -Schnittstellen-VPC-Endpunkten](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_sts_vpce.html).

**Um den Zugriff für AWS -Security-Token-Service (STS) einzurichten**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon VPC-Konsole unter [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Wählen Sie im Navigationsbereich **Endpunkte** aus.

1. Klicken Sie auf **Endpunkt erstellen**.

1. Wählen Sie den **Servicenamen** aus: `com.amazonaws.region.sts` für den Endpunkt vom Typ Schnittstelle.

1. Wählen Sie die **VPC** aus, die Ihre Neptune-DB-Instance und EC2-Instance enthält.

1. Aktivieren Sie das Kontrollkästchen neben dem Subnetz, in dem sich Ihre EC2-Instance befindet. Sie können nicht mehrere Subnetze aus derselben Availability Zone auswählen.

1. Wählen Sie für IP address type (IP-Adressentyp) eine der folgenden Optionen aus:
   + **IPv4**— Weisen Sie Ihren Endpunkt-Netzwerkschnittstellen IPv4 Adressen zu. Diese Option wird nur unterstützt, wenn alle ausgewählten Subnetze IPv4 Adressbereiche haben.
   + **IPv6**— Weisen Sie Ihren Endpunkt-Netzwerkschnittstellen IPv6 Adressen zu. Diese Option wird nur unterstützt, wenn es sich bei allen ausgewählten Subnetzen um reine IPv6 Subnetze handelt.
   + **Dualstack — Weisen Sie Ihren** Endpunkt-Netzwerkschnittstellen IPv4 sowohl IPv6 Adressen als auch Adressen zu. Diese Option wird nur unterstützt, wenn alle ausgewählten Subnetze IPv4 sowohl IPv6 als auch Adressbereiche haben.

1. Wählen Sie für **Sicherheitsgruppen** die Sicherheitsgruppen aus, die den Endpunkt-Netzwerkschnittstellen für den VPC-Endpunkt zugeordnet werden sollen. Sie müssten alle Sicherheitsgruppen auswählen, die Ihrer Neptune-DB-Instance und EC2-Instance angefügt sind.

1. Wählen Sie für **Policy** (Richtlinie) **Full access** (Vollzugriff), um alle Operationen aller Prinzipale auf allen Ressourcen über den VPC-Endpunkt zuzulassen. Wählen Sie andernfalls **Custom** (Benutzerdefiniert), um eine VPC-Endpunktrichtlinie anzufügen, die die Berechtigungen steuert, die Prinzipale zum Ausführen von Aktionen für Ressourcen über den VPC-Endpunkt haben. Diese Option ist nur verfügbar, wenn der Service VPC-Endpunktrichtlinien unterstützt. Weitere Informationen finden Sie unter [Endpunktrichtlinien](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).

1. (*Optional*) Sie fügen ein Tag hinzu, indem Sie **Neuen Tag hinzufügen** auswählen und Schlüssel und Wert für das Tag eingeben.

1. Wählen Sie **Endpunkt erstellen** aus.

Informationen zum Erstellen von Endpunkten finden Sie unter [VPC-Endpunkte](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) im Amazon-VPC-Benutzerhandbuch. Bitte beachten Sie, dass Amazon-STS-VPC-Endpunkte eine Voraussetzung für die Verkettung von IAM-Rollen sind.

Nachdem Sie nun Zugriff auf den AWS STS Endpunkt gewährt haben, können Sie sich darauf vorbereiten, Daten zu laden. Weitere Informationen zu unterstützten Formaten finden Sie unter [Ladedatenformate](bulk-load-tutorial-format.md).

## Verkettung von Rollen innerhalb eines Loader-Befehls
<a name="bulk-load-tutorial-loader-chain"></a>

Sie können die Rollenverkettung angeben, wenn Sie einen Loader-Befehl ausführen, indem Sie eine durch Kommas getrennte Rollenliste ARNs in den Parameter aufnehmen. `iamRoleArn`

Obwohl Sie in der Regel nur zwei Rollen in einer Kette benötigen, ist es durchaus möglich, drei oder mehr Rollen zu verketten. Dieser Loader-Befehl verkettet beispielsweise drei Rollen:

------
#### [ AWS CLI ]

```
aws neptunedata start-loader-job \
  --endpoint-url https://your-neptune-endpoint:port \
  --source "s3://(the target bucket name)/(the target date file name)" \
  --format "csv" \
  --iam-role-arn "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)" \
  --s3-bucket-region "us-east-1"
```

Weitere Informationen finden Sie [start-loader-job](https://docs.aws.amazon.com/cli/latest/reference/neptunedata/start-loader-job.html)in der AWS CLI Befehlsreferenz.

------
#### [ SDK ]

```
import boto3
from botocore.config import Config

client = boto3.client(
    'neptunedata',
    endpoint_url='https://your-neptune-endpoint:port',
    config=Config(read_timeout=None, retries={'total_max_attempts': 1})
)

response = client.start_loader_job(
    source='s3://(the target bucket name)/(the target date file name)',
    format='csv',
    iamRoleArn='arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)',
    s3BucketRegion='us-east-1'
)

print(response)
```

------
#### [ awscurl ]

```
awscurl https://your-neptune-endpoint:port/loader \
  --region us-east-1 \
  --service neptune-db \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{
        "source" : "s3://(the target bucket name)/(the target date file name)",
        "iamRoleArn" : "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)",
        "format" : "csv",
        "region" : "us-east-1"
      }'
```

**Anmerkung**  
In diesem Beispiel wird davon ausgegangen, dass Ihre AWS Anmeldeinformationen in Ihrer Umgebung konfiguriert sind. Ersetze es *us-east-1* durch die Region deines Neptun-Clusters.

------
#### [ curl ]

```
curl -X POST https://your-neptune-endpoint:port/loader \
  -H 'Content-Type: application/json' \
  -d '{
        "source" : "s3://(the target bucket name)/(the target date file name)",
        "iamRoleArn" : "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)",
        "format" : "csv",
        "region" : "us-east-1"
      }'
```

------