

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Chaînage des rôles IAM dans Amazon Neptune
<a name="bulk-load-tutorial-chain-roles"></a>

**Important**  
La nouvelle fonctionnalité de chargement en bloc entre comptes, introduite dans la [version 1.2.1.0.R3 du moteur](engine-releases-1.2.1.0.R3.md), tire parti du chaînage des rôles IAM et peut dans certains cas entraîner une dégradation des performances de chargement en bloc. Par conséquent, les mises à niveau vers les versions du moteur prenant en charge cette fonctionnalité ont été temporairement suspendues jusqu'à ce que le problème soit résolu.

Lorsque vous attachez un rôle à un cluster, ce dernier peut endosser ce rôle afin d'accéder aux données stockées dans Amazon S3. À partir de la [version 1.2.1.0.R3 du moteur](engine-releases-1.2.1.0.R3.md), si ce rôle n'a pas accès à toutes les ressources dont vous avez besoin, vous pouvez enchaîner un ou plusieurs rôles supplémentaires que votre cluster endossera pour accéder à d'autres ressources. Chaque rôle de la chaîne passe au rôle suivant, jusqu'à ce que le cluster endosse le dernier rôle à la fin de la chaîne.

Pour enchaîner des rôles, vous devez établir une relation d'approbation entre eux. Par exemple, pour enchaîner `RoleB` à `RoleA`, `RoleA` doit disposer d'une politique d'autorisations lui permettant d'endosser `RoleB`, et `RoleB` d'une politique d'approbation lui permettant de retransmettre ses autorisations à `RoleA`. Pour plus d'informations, consultez [Utilisation de rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html).

Le premier rôle de la chaîne doit être attaché au cluster qui charge les données.

Le premier rôle, ainsi que chaque rôle ultérieur qui endosse le rôle suivant dans la chaîne, doivent avoir les éléments suivants :
+ Une politique qui inclut une déclaration spécifique ayant un effet `Allow` sur l'action `sts:AssumeRole`.
+ L'Amazon Resource Name (ARN) du rôle dans un élément `Resource`.

**Note**  
Le compartiment Amazon S3 cible doit se trouver dans la même AWS région que le cluster.

## Accès intercompte à l'aide de rôles enchaînés
<a name="bulk-load-tutorial-chain-cross-account"></a>

Vous pouvez accorder un accès intercompte en enchaînant un ou plusieurs rôles appartenant à un autre compte. Lorsque votre cluster endosse temporairement un rôle appartenant à un autre compte, il peut accéder aux ressources qui s'y trouvent.

Supposons, par exemple, que le **compte A** souhaite accéder à des données dans un compartiment Amazon S3 appartenant au **compte B** :
+ Le **compte A** crée un rôle de AWS service nommé pour Neptune `RoleA` et l'attache à un cluster.
+ Le **compte B** crée un rôle nommé `RoleB` qui est autorisé à accéder aux données du compartiment du **compte B**.
+ Le **compte A** attache une politique d'autorisation à `RoleA` qui lui permet d'endosser `RoleB`.
+ Le **compte B** attache une politique d'approbation à `RoleB` qui lui permet de retransmettre ses autorisations à `RoleA`.
+ Pour accéder aux données dans le compartiment du **compte B**, le **compte A** exécute une commande de chargeur à l'aide d'un paramètre `iamRoleArn` qui enchaîne les rôles `RoleA` et `RoleB`. Pendant la durée de l'opération de chargeur, `RoleA` endosse temporairement `RoleB` pour accéder au compartiment Amazon S3 dans le **compte B**.

![\[Schéma illustrant l'accès intercompte à l'aide de rôles enchaînés\]](http://docs.aws.amazon.com/fr_fr/neptune/latest/userguide/images/cross-account-bulk-load.png)


Par exemple, `RoleA` a une politique d'approbation établissant une relation d'approbation avec Neptune :

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

****  

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

------

`RoleA` a également une politique d'autorisation lui permettant d'endosser `RoleB`, qui appartient au **compte B** :

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

****  

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

------

Inversement, `RoleB` a une politique d'approbation établissant une relation d'approbation avec `RoleA` :

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

****  

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

------

`RoleB` a également besoin d'une autorisation pour accéder aux données du compartiment Amazon S3 situé dans le **compte B**.

## Création d'un point de terminaison VPC AWS Security Token Service (STS)
<a name="bulk-load-tutorial-sts-endpoint"></a>

Le chargeur Neptune nécessite un point de terminaison VPC AWS STS lorsque vous chaînez des rôles IAM pour un accès privé via des adresses IP privées. AWS STS APIs Vous pouvez vous connecter directement d'un Amazon VPC à un point AWS STS de terminaison VPC de manière sécurisée et évolutive. Lorsque vous utilisez un point de terminaison de VPC d'interface, votre niveau de sécurité s'en trouve amélioré, car vous n'avez pas besoin d'ouvrir de pare-feu pour le trafic sortant. Vous bénéficiez en outre d'autres avantages liés à l'utilisation des points de terminaison Amazon VPC.

Lorsque vous utilisez un point de terminaison VPC, le trafic vers AWS STS n'est pas transmis via Internet et ne quitte jamais le réseau Amazon. Votre VPC est connecté en toute sécurité, AWS STS sans risques de disponibilité ni contraintes de bande passante pour le trafic réseau. Pour plus d'informations, consultez [Utilisation des points de terminaison de VPC d'interface AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_sts_vpce.html).

**Pour configurer l'accès pour AWS Security Token Service (STS)**

1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. Dans le panneau de navigation, choisissez **Points de terminaison**.

1. Choisissez **Create Endpoint** (Créer un point de terminaison).

1. Choisissez le **nom de service** : `com.amazonaws.region.sts` pour le point de terminaison de type interface.

1. Choisissez le **VPC** qui contient votre instance de base de données Neptune et votre instance EC2.

1. Cochez la case située à côté du sous-réseau dans lequel se trouve votre instance EC2. Il n’est pas possible de sélectionner plusieurs sous-réseaux dans la même zone de disponibilité.

1. Pour IP address type (Type d'adresse IP), choisissez l'une des options suivantes :
   + **IPv4**— Attribuez IPv4 des adresses aux interfaces réseau de vos terminaux. Cette option n'est prise en charge que si tous les sous-réseaux sélectionnés possèdent des plages d' IPv4 adresses.
   + **IPv6**— Attribuez IPv6 des adresses aux interfaces réseau de vos terminaux. Cette option n'est prise en charge que si tous les sous-réseaux sélectionnés sont des sous-réseaux IPv6 réservés.
   + **Dualstack** — Attribuez à la fois des IPv6 adresses IPv4 et des adresses aux interfaces réseau de vos terminaux. Cette option n'est prise en charge que si tous les sous-réseaux sélectionnés possèdent à la fois des plages d' IPv6 adresses IPv4 et des plages d'adresses.

1. Pour **Security groups** (Groupes de sécurité), sélectionnez les groupes de sécurité à associer aux interfaces réseau du point de terminaison pour le point de terminaison d'un VPC. Vous devez sélectionner tous les groupes de sécurité attachés à votre instance de base de données Neptune et à votre instance EC2.

1. Pour **Policy** (Politique), sélectionnez **Full access** (Accès complet) pour autoriser toutes les opérations de tous les principaux sur toutes les ressources via le point de terminaison de VPC. Sinon, sélectionnez **Custom** (Personnalisé) pour joindre une politique de point de terminaison de VPC qui contrôle les autorisations dont disposent les principaux pour effectuer des actions sur les ressources via le point de terminaison de VPC. Cette option n’est disponible que si le service prend en charge les politiques de points de terminaison de VPC. Pour plus d'informations, consultez [Utilisation des politiques de point de terminaison](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).

1. (*Facultatif*) Pour ajouter une balise, choisissez **Ajouter une nouvelle balise** et saisissez la clé et la valeur de cette balise.

1. Choisissez **Créer un point de terminaison**.

Pour plus d'informations sur la création du point de terminaison, consultez [Points de terminaison de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) dans le Guide de l'utilisateur Amazon VPC. Notez que le point de terminaison de VPC Amazon STS est un prérequis pour le chaînage des rôles IAM.

Maintenant que vous avez accordé l'accès au AWS STS point de terminaison, vous pouvez vous préparer à charger les données. Pour en savoir plus sur les formats de données pris en charge, consultez [Formats de chargement de données](bulk-load-tutorial-format.md).

## Chaînage des rôles dans une commande de chargeur
<a name="bulk-load-tutorial-loader-chain"></a>

Vous pouvez spécifier le chaînage des rôles lorsque vous exécutez une commande de chargeur en incluant une liste de rôles séparée par des virgules ARNs dans le paramètre. `iamRoleArn`

Bien que vous n'ayez généralement besoin que de deux rôles dans une chaîne, il est possible d'en enchaîner trois ou plus. Par exemple, cette commande de chargeur enchaîne trois rôles :

```
curl -X POST https://localhost:8182/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"
      }'
```