Comment configurer l'accès intercompte pour Amazon EMRFS ?

Lecture de 4 minute(s)
0

Je veux utiliser le système de Amazon EMR (EMRFS) pour écrire dans des compartiments Amazon Simple Storage Service (Amazon S3) qui se trouvent dans un autre compte AWS.

Brève description

Utilisez l'une des options suivantes pour configurer l'accès intercompte pour EMRFS :

  • Ajoutez une politique de compartiment. Ajoutez une politique de compartiment pour le compartiment de destination qui accorde l'accès au compte Amazon EMR. C'est l'option la plus simple. Toutefois, le compte de destination ne possède pas les objets écrits par EMRFS dans le compartiment de destination.
  • Utilisez un fournisseur d'informations d'identification personnalisées. Cette option vous permet d'assumer un rôle AWS Identity and Access Management (IAM) dans le compte du compartiment de destination. Cela signifie que le compte de destination est propriétaire des objets qu'EMRFS écrit dans le compartiment de destination.
  • Utilisez les mappages de rôle dans une configuration de sécurité. Cette option permet également à EMRFS d'assumer un rôle IAM dans le compte du compartiment de destination. Il s'agit de la méthode décrite dans cet article.

Résolution

Lorsque vous utilisez une configuration de sécurité pour spécifier des rôles IAM pour EMRFS, vous configurez des mappages de rôle. Un mappage de rôle spécifie un rôle IAM qui correspond à un identifiant. L'identifiant détermine la base d'accès à Amazon S3 par le biais d'EMRFS. Les identifiants peuvent être des utilisateurs, des groupes ou des préfixes Amazon S3 qui indiquent un emplacement de données. Lorsqu'EMRFS effectue une demande qui correspond à la base d'accès, EMRFS fait en sorte que les instances EC2 de cluster assument le rôle IAM correspondant pour la demande. Les autorisations IAM attachées à ce rôle s'appliquent, en lieu et place des autorisations IAM attachées à la fonction du service pour les instances EC2 de cluster. Pour plus d'informations, voir Configuration des rôles IAM pour les demandes EMRFS à Amazon S3.

Dans les étapes suivantes, un identifiant est spécifié en tant que préfixe Amazon S3 accessible par le biais d'EMRFS. Cela crée un accès intercompte pour EMRFS à l'aide d'une configuration de sécurité avec mappage de rôle :

1.    Créez un rôle IAM dans le compte de destination. Il s'agit du rôle que vous assumerez à partir du cluster EMR.

2.    Ajoutez une politique d'approbation similaire à celle-ci. La politique d'approbation doit autoriser le rôle Amazon Elastic Compute Cloud (Amazon EC2) pour qu'Amazon EMR puisse assumer le rôle que vous avez créé à l'étape 1. Pour plus d'informations, consultez Configuration des rôles.

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

3.    Utilisez l'interface de la ligne de commande AWS (AWS CLI) pour créer une configuration de sécurité avec un mappage de rôle. Le mappage de rôle doit spécifier le rôle dans le compte de destination (le rôle que vous avez créé à l'étape 1).

Remarque : vous devez utiliser l'interface de ligne de commande AWS ou un kit SDK pour créer la configuration de sécurité. La console ne répertorie pas les rôles dans d'autres comptes, même si vous êtes autorisé à assumer ces rôles. Si vous recevez des erreurs lors de l'exécution des commandes à partir d'AWS CLI, assurez-vous que vous utilisez la version la plus récente d'AWS CLI.

Fournissez un objet JSON similaire à ce qui suit pour le mappage de rôle. Remplacez ces valeurs dans l'exemple suivant :

arn:aws:iam::DestinationAcctID:role/role_in_destination_account : l'Amazon Resource Name (ARN) du rôle que vous avez créé à l'étape 1
s3://doc-example-bucket/ : le compartiment dans lequel vous souhaitez qu'EMRFS écrive

{
  "AuthorizationConfiguration": {
    "EmrFsConfiguration": {
      "RoleMappings": [
        {
          "Role": "arn:aws:iam::DestinationAcctID:role/role_in_destination_account",
          "IdentifierType": "Prefix",
          "Identifiers": [
            "s3://doc-example-bucket/"
          ]
        }
      ]
    }
  }
}

4.    Créez une politique IAM, puis attachez-la au profil d'instance EC2 d'Amazon EMR (par exemple, EMR_EC2_DefaultRole).

L'exemple de politique suivant permet à AWS Security Token Service (STS) d'assumer tous les rôles. Au minimum, votre stratégie doit autoriser STS à assumer le rôle que vous avez créé à l'étape 1. Pour plus d'informations, consultez Octroi d'autorisations pour créer des informations d'identification de sécurité temporaires.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "*"
    }
  ]
}

5.    Lancez un cluster EMR et spécifiez la configuration de sécurité que vous avez créée à l'étape 3.

Remarque : si le compartiment de destination utilise le chiffrement côté serveur avec AWS Key Management Service (AWS KMS), alors le rôle assumé doit être un utilisateur de clé dans la clé AWS KMS gérée par le client. Vous ne pouvez pas accéder au compartiment si le rôle n'est pas répertorié dans la clé AWS KMS.


Informations connexes

Création d'une configuration de sécurité

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans