Comment configurer l'accès entre comptes pour EMRFS ?

Date de la dernière mise à jour : 17/01/2020

Je souhaite utiliser le système de fichiers 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 entre comptes pour EMRFS :

  • Ajoutez une stratégie 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.

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 identificateur. Dans ce scénario, l'identifiant est le préfixe Amazon S3 auquel vous souhaitez accéder avec EMRFS. Les identifiants déterminent la base pour l'accès à Amazon S3 via EMRFS. Pour plus d'informations, consultez Configuration des rôles IAM pour les demandes EMRFS à Amazon S3.

Pour créer un accès entre comptes pour EMRFS à l'aide d'une configuration de sécurité avec mappage de rôle, procédez comme suit :

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 stratégie d'approbation similaire à celle-ci. La stratégie d'approbation doit autoriser le rôle Amazon Elastic Compute Cloud (Amazon EC2) pour qu'EMR assume 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 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.

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://awsexamplebucket/ : 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://awsexamplebucket/"]
      }]
    }
  }
}

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

L'exemple de stratégie 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), le rôle assumé doit être un utilisateur de clé dans la clé principale client (CMK) KMS. Vous ne pouvez pas accéder au compartiment si le rôle n'est pas répertorié dans la clé CMK KMS.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?