Enchaînement IAM des rôles dans Amazon Neptune - Amazon Neptune

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.

Enchaînement IAM des rôles dans Amazon Neptune

Important

La nouvelle fonctionnalité de chargement groupé entre comptes introduite dans la version 1.2.1.0.R3 du moteur qui tire parti du chaînage des IAM rôles 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, 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 la section Utilisation IAM des rôles.

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.

  • Le nom de ressource Amazon (ARN) du rôle suivant dans un Resource élément.

Note

Le compartiment Amazon S3 cible doit se trouver dans le même AWS Région en tant que cluster.

Accès intercompte à l'aide de rôles enchaînés

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 AWS un rôle de service pour Neptune l'a nommé 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

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

{ "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 :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::(Account B ID):role/RoleB" } ] }

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::(Account A ID):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 AWS Security Token Service (STS) VPC point de terminaison

Le chargeur Neptune nécessite un point de terminaison pour VPC AWS STS lorsque vous enchaînez des IAM rôles pour un accès privé AWS STS APIsvia des adresses IP privées. Vous pouvez vous connecter directement depuis un Amazon VPC à AWS STS via un VPC Endpoint de manière sécurisée et évolutive. Lorsque vous utilisez un point de VPC terminaison d'interface, il offre une meilleure posture de sécurité car vous n'avez pas besoin d'ouvrir des pare-feux pour le trafic sortant. Il offre également les autres avantages liés à l'utilisation des VPC points de terminaison Amazon.

Lorsque vous utilisez un VPC point de terminaison, le trafic vers AWS STS ne transmet pas via Internet et ne quitte jamais le réseau Amazon. Vous êtes VPC connecté en toute sécurité à AWS STS sans risques de disponibilité ni contraintes de bande passante pour votre trafic réseau. Pour plus d'informations, voir Utilisation AWS STS VPCpoints de terminaison de l'interface.

Pour configurer l'accès pour AWS Security Token Service (STS)
  1. Connectez-vous au AWS Management Console et ouvrez la VPC console Amazon à l'adresse https://console.aws.amazon.com/vpc/.

  2. Dans le panneau de navigation, choisissez Points de terminaison.

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

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

  5. Choisissez celui VPCqui contient votre instance de base de données Neptune et EC2 votre instance.

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

  7. 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'IPv4adresses.

    • 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'IPv6adresses IPv4 et des plages d'adresses.

  8. Pour les groupes de sécurité, sélectionnez les groupes de sécurité à associer aux interfaces réseau du point de terminaison pour le VPC point de terminaison. Vous devez sélectionner tous les groupes de sécurité attachés à votre instance de base de données Neptune et EC2 à votre instance.

  9. Pour Policy, sélectionnez Accès complet pour autoriser toutes les opérations effectuées par tous les principaux sur toutes les ressources du VPC point de terminaison. Sinon, sélectionnez Personnalisé pour associer une politique de point de VPC terminaison qui contrôle les autorisations dont disposent les principaux pour effectuer des actions sur les ressources via le VPC point de terminaison. Cette option n'est disponible que si le service prend en charge les politiques relatives aux VPC terminaux. Pour plus d'informations, consultez Utilisation des politiques de point de terminaison.

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

  11. Choisissez Créer un point de terminaison.

Pour plus d'informations sur la création du point de terminaison, consultez la section VPCEndpoints dans le guide de VPC l'utilisateur Amazon. Notez qu'Amazon STS VPC Endpoint est une condition préalable requise pour le chaînage des IAM rôles.

Maintenant que vous avez accordé l'accès au AWS STS point de terminaison, vous pouvez vous préparer à charger des données. Pour en savoir plus sur les formats de données pris en charge, consultez Formats de chargement de données.

Chaînage des rôles dans une commande de chargeur

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" }'