

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.

# Configuration des rôles d’exécution IAM pour l’accès aux clusters Amazon EMR dans Studio
<a name="studio-notebooks-emr-cluster-rbac"></a>

Lorsque vous vous connectez à un cluster Amazon EMR depuis vos blocs-notes Studio ou Studio Classic, vous pouvez parcourir visuellement une liste de rôles IAM, appelés rôles d’exécution et en sélectionner un à la volée. Par la suite, toutes vos tâches Apache Spark, Apache Hive ou Presto créées à partir de votre bloc-notes accèdent uniquement aux données et aux ressources autorisées par les politiques attachées au rôle d’exécution. En outre, lorsque les données sont accessibles à partir de lacs de données gérés avec AWS Lake Formation, vous pouvez appliquer l'accès au niveau des tables et des colonnes à l'aide de politiques associées au rôle d'exécution.

Grâce à cette fonctionnalité, vous et vos collègues pouvez vous connecter au même cluster, chacun utilisant un rôle d'exécution assorti d'autorisations correspondant à votre niveau individuel d'accès aux données. Vos sessions sont également isolées les unes des autres sur le cluster partagé. 

Pour tester cette fonctionnalité à l'aide de Studio Classic, consultez [Appliquer des contrôles d'accès aux données précis avec AWS Lake Formation Amazon EMR depuis Amazon SageMaker ](https://aws.amazon.com/blogs/machine-learning/apply-fine-grained-data-access-controls-with-aws-lake-formation-and-amazon-emr-from-amazon-sagemaker-studio/) Studio Classic. Ce billet de blog vous aide à configurer un environnement de démonstration dans lequel vous pouvez essayer d’utiliser des rôles d’exécution préconfigurés pour vous connecter aux clusters Amazon EMR.

## Conditions préalables
<a name="studio-notebooks-emr-cluster-rbac-prereq"></a>

Avant de démarrer, assurez-vous de répondre aux conditions préalables suivantes :
+ Utilisez Amazon EMR version 6.9 ou ultérieure.
+ **Pour les utilisateurs de Studio Classic** : utilisez JupyterLab la version 3 dans la configuration de l'application serveur Jupyter Studio Classic. Cette version prend en charge la connexion de Studio Classic aux clusters Amazon EMR à l’aide de rôles d’exécution.

  **Pour les utilisateurs de Studio** : utilisez une version [d'image de SageMaker distribution](sagemaker-distribution.md) `1.10` ou supérieure.
+ Autorisez l’utilisation de rôles d’exécution dans la configuration de sécurité de votre cluster. Pour plus d’informations, consultez [Rôles d’exécution pour les étapes d’Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html).
+ Créez un bloc-notes avec l’un des noyaux répertoriés dans [Images et noyaux pris en charge pour se connecter à un cluster Amazon EMR depuis Studio ou Studio Classic](studio-emr-user-guide.md#studio-notebooks-emr-cluster-connect-kernels).
+ Veillez à passer en revue les instructions fournies dans [Configuration de Studio pour utiliser les rôles IAM d'exécution](#studio-notebooks-emr-cluster-iam) pour configurer vos rôles d’exécution.

## Cross-account scénarios de connexion
<a name="studio-notebooks-emr-cluster-rbac-scen"></a>

L’authentification des rôles d’exécution prend en charge divers scénarios de connexion entre comptes lorsque vos données se trouvent en dehors de votre compte Studio. L’image suivante montre trois manières différentes d’attribuer votre cluster Amazon EMR, vos données et même votre rôle d’exécution Amazon EMR à l’exécution entre vos comptes Studio et de données : 

![Cross-account scénarios pris en charge par l'authentification des rôles IAM au moment de l'exécution.](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/studio-emr-rbac-scenarios.png)


Dans l’option 1, votre cluster Amazon EMR et votre rôle d’exécution Amazon EMR à l’exécution se trouvent dans un compte de données distinct du compte Studio. Vous définissez une politique d’autorisation distincte pour le rôle d’accès Amazon EMR (également appelée `Assumable role`) qui autorise le rôle d’exécution Studio ou Studio Classic à assumer le rôle d’accès Amazon EMR. Le rôle d’accès Amazon EMR appelle ensuite l’API Amazon EMR `GetClusterSessionCredentials` au nom de votre rôle d’exécution Studio ou Studio Classic, vous donnant ainsi accès au cluster.

Dans l’option 2, votre cluster Amazon EMR et votre rôle d’exécution Amazon EMR à l’exécution se trouvent dans votre compte Studio. Votre rôle d’exécution Studio est autorisé à utiliser l’API Amazon EMR `GetClusterSessionCredentials` pour accéder à votre cluster. Pour accéder au compartiment Amazon S3, accordez au rôle d’exécution Amazon EMR à l’exécution des autorisations d’accès intercompte au compartiment Amazon S3. Vous accordez ces autorisations au sein de votre stratégie de compartiment Amazon S3.

Dans l’option 3, vos clusters Amazon EMR sont dans votre compte Studio et le rôle d’exécution Amazon EMR à l’exécution se trouve dans le compte de données. Votre rôle d’exécution Studio ou Studio Classic est autorisé à utiliser l’API Amazon EMR `GetClusterSessionCredentials` pour accéder à votre cluster. Ajoutez le rôle d’exécution Amazon EMR à l’exécution dans le fichier JSON de configuration de rôle d’exécution. Vous pouvez ensuite sélectionner le rôle dans l’interface utilisateur lorsque vous choisissez votre cluster. Pour plus de détails sur la configuration du fichier JSON de configuration du rôle d'exécution, consultez [Préchargement de vos rôles d’exécution dans Studio ou Studio Classic](#studio-notebooks-emr-cluster-iam-preload).

## Configuration de Studio pour utiliser les rôles IAM d'exécution
<a name="studio-notebooks-emr-cluster-iam"></a>

Pour établir l’authentification des rôles d’exécution pour vos clusters Amazon EMR, configurez les politiques IAM, le réseau et les améliorations de la facilité d’utilisation requises. Votre configuration dépend de votre capacité à gérer des accords entre comptes si vos clusters Amazon EMR, votre rôle d’exécution Amazon EMR à l’exécution, ou les deux, se trouvent en dehors de votre compte Studio. La section suivante explique les politiques à installer, comment configurer le réseau pour autoriser le trafic entre comptes croisés et le fichier de configuration local à configurer pour automatiser votre connexion Amazon EMR.

### Configuration de l’authentification du rôle d’exécution lorsque votre cluster Amazon EMR et Studio sont sur le même compte
<a name="studio-notebooks-emr-cluster-iam-same"></a>

Si votre cluster Amazon EMR réside dans votre compte Studio, procédez comme suit pour ajouter les autorisations nécessaires à votre politique d’exécution Studio :

1. Ajoutez la politique IAM requise pour vous connecter aux clusters Amazon EMR. Pour en savoir plus, consultez [Configuration de la liste des clusters Amazon EMR](studio-notebooks-configure-discoverability-emr-cluster.md).

1. Accordez l’autorisation d’appeler l’API Amazon EMR `GetClusterSessionCredentials` lorsque vous transmettez un ou plusieurs rôles d’exécution Amazon EMR à l’exécution autorisés, spécifiés dans la politique.

1. (Facultatif) Accordez l’autorisation de transmettre des rôles IAM conformes aux conventions de dénomination définies par l’utilisateur.

1. (Facultatif) Accordez l’autorisation d’accéder aux clusters Amazon EMR balisés avec des chaînes spécifiques définies par l’utilisateur.

1. Préchargez vos rôles IAM afin de pouvoir sélectionner le rôle à utiliser lorsque vous vous connectez à votre cluster Amazon EMR. Pour plus d’informations sur le préchargement de vos rôles IAM, consultez [Préchargement de vos rôles d’exécution dans Studio ou Studio Classic](#studio-notebooks-emr-cluster-iam-preload).

L’exemple de politique suivant autorise les rôles d’exécution Amazon EMR à l’exécution appartenant aux groupes de modélisation et d’entraînement à appeler `GetClusterSessionCredentials`. En outre, le titulaire de la politique peut accéder aux clusters Amazon EMR étiquetés avec les chaînes `modeling` ou `training`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "elasticmapreduce:GetClusterSessionCredentials",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "elasticmapreduce:ExecutionRoleArn": [
                        "arn:aws:iam::{{111122223333}}:role/emr-execution-role-ml-modeling*",
                        "arn:aws:iam::{{111122223333}}:role/emr-execution-role-ml-training*"
			]},
		"StringLike":{
                    "elasticmapreduce:ResourceTag/group": [
                        "*modeling*",
                        "*training*"
                    ]
                }
            }
        }
    ]
}
```

------

### Configuration de l’authentification du rôle d’exécution lorsque votre cluster et Studio sont dans des comptes différents
<a name="studio-notebooks-emr-cluster-iam-diff"></a>

Si votre cluster Amazon EMR ne figure pas dans votre compte Studio, autorisez votre rôle d'exécution SageMaker AI à assumer le rôle d'accès Amazon EMR entre comptes afin de pouvoir vous connecter au cluster. Procédez comme suit pour configurer votre configuration entre comptes :

1. Créez votre politique d'autorisation pour le rôle d'exécution SageMaker AI afin que le rôle d'exécution puisse assumer le rôle d'accès Amazon EMR. Voici un exemple de politique :

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

****  

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

------

1. Créez la politique d'approbation pour spécifier quels identifiants de compte Studio sont fiables pour assumer le rôle d'accès Amazon EMR. Voici un exemple de politique :

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

****  

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

------

1. Créez la politique d’autorisation du rôle d’accès Amazon EMR, qui accorde au rôle d’exécution Amazon EMR à l’exécution les autorisations nécessaires pour réaliser les tâches prévues sur le cluster. Configurez le rôle d’accès Amazon EMR pour appeler l’API `GetClusterSessionCredentials` avec les rôles d’exécution Amazon EMR à l’exécution spécifiés dans la politique d’autorisation du rôle d’accès. Voici un exemple de politique :

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI",
               "Effect": "Allow",
               "Action": "elasticmapreduce:GetClusterSessionCredentials",
               "Resource": "arn:aws:elasticmapreduce:{{us-east-1}}:{{111122223333}}:cluster/{{cluster-id}}",
               "Condition": {
                   "StringLike": {
                       "elasticmapreduce:ExecutionRoleArn": [
                           "arn:aws:iam::{{111122223333}}:role/{{emr-execution-role-name}}"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. Configurez le réseau entre comptes afin que le trafic puisse circuler entre vos comptes. Pour obtenir des instructions détaillées, consultez *[Configuration de l’accès réseau pour votre cluster Amazon EMR](studio-notebooks-emr-networking.md)*. Les étapes de cette section vous aident à effectuer les tâches suivantes :

   1. VPC-peer votre compte Studio et votre compte Amazon EMR pour établir une connexion.

   1. Ajoutez manuellement des routes aux tables de routage du sous-réseau privé dans les deux comptes. Cela permet de créer et de connecter des clusters Amazon EMR du compte Studio au sous-réseau privé du compte distant.

   1. Configurez le groupe de sécurité attaché à votre domaine Studio pour autoriser le trafic sortant et le groupe de sécurité du nœud primaire Amazon EMR pour autoriser le trafic TCP entrant depuis le groupe de sécurité de l’instance Studio.

1. Préchargez vos rôles IAM d’exécution afin de pouvoir sélectionner le rôle à utiliser lorsque vous vous connectez à votre cluster Amazon EMR. Pour plus d’informations sur le préchargement de vos rôles IAM, consultez [Préchargement de vos rôles d’exécution dans Studio ou Studio Classic](#studio-notebooks-emr-cluster-iam-preload).

### Configuration de l'accès à Lake Formation
<a name="studio-notebooks-emr-cluster-iam-lf"></a>

Lorsque vous accédez à des données à partir de lacs de données gérés par AWS Lake Formation, vous pouvez appliquer l'accès au niveau des tables et des colonnes à l'aide des politiques associées à votre rôle d'exécution. Pour configurer l’autorisation d’accès à Lake Formation, consultez [Intégration d’Amazon EMR avec AWS Lake Formation](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-lake-formation.html).

### Préchargement de vos rôles d’exécution dans Studio ou Studio Classic
<a name="studio-notebooks-emr-cluster-iam-preload"></a>

Vous pouvez précharger vos rôles IAM d’exécution afin de pouvoir sélectionner le rôle à utiliser lorsque vous vous connectez à votre cluster Amazon EMR. Les utilisateurs d' JupyterLab in Studio peuvent utiliser la console SageMaker AI ou le script fourni.

------
#### [ Preload runtime roles in JupyterLab using the SageMaker AI console ]

Pour associer vos rôles d'exécution à votre profil utilisateur ou à votre domaine à l'aide de la console SageMaker AI :

1. Accédez à la console SageMaker AI à l'adresse [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Dans le volet de navigation de gauche, choisissez le **domaine**, puis sélectionnez le domaine à l'aide du rôle d'exécution SageMaker AI dont vous avez mis à jour les autorisations.

1. 
   + Pour ajouter votre environnement d'exécution (et vos rôles d'accès pour les cas d'utilisation entre comptes) à votre domaine : dans l'onglet **Configurations des applications** de la page des **détails du domaine**, accédez à la **JupyterLab**section.
   + Pour ajouter votre environnement d'exécution (et vos rôles d'accès pour les cas d'utilisation entre comptes) à votre profil utilisateur : sur la page **Détails du domaine**, choisissez l'onglet **Profils utilisateur**, sélectionnez le profil utilisateur à l'aide du rôle d'exécution SageMaker AI dont vous avez mis à jour les autorisations. Dans l'onglet **Configurations de l'application**, accédez à la **JupyterLab**section.

1. Choisissez **Modifier** et ajoutez les ARN de votre rôle d’accès (rôle assumable) et les rôles d’exécution EMR sans serveur à l’exécution.

1. Sélectionnez **Soumettre**.

Lors de votre prochaine connexion à un serveur Amazon EMR, les rôles d’exécution devraient apparaître pour sélection dans un menu déroulant.

------
#### [ Preload runtime roles in JupyterLab using a Python script ]

Dans une JupyterLab application démarrée depuis un espace utilisant le rôle d'exécution SageMaker AI dont vous avez mis à jour les autorisations, exécutez la commande suivante dans un terminal. Remplacez `domainID`, `user-profile-name`, `emr-accountID` et `EMRServiceRole` par leurs valeurs appropriées. Cet extrait de code met à jour les paramètres d'un profil utilisateur (`client.update_user_profile`) au sein d'un domaine SageMaker AI dans un cas d'utilisation entre comptes. Plus précisément, il définit les rôles de service pour Amazon EMR. Cela permet également à l' JupyterLab application d'assumer un rôle IAM particulier (`AssumableRole`ou`AccessRole`) pour exécuter Amazon EMR au sein du compte Amazon EMR.

Vous pouvez également utiliser `client.update_domain` pour mettre à jour les paramètres du domaine si votre espace utilise un rôle d’exécution défini au niveau du domaine.

```
import botocore.session
import json
sess = botocore.session.get_session()
client = sess.create_client('sagemaker')

client.update_user_profile(
DomainId="{{domainID}}", 
UserProfileName="{{user-profile-name}}",
UserSettings={
    'JupyterLabAppSettings': {
        'EmrSettings': {
            'AssumableRoleArns': ["arn:aws:iam::{{emr-accountID}}:role/{{AssumableRole}}"],
            'ExecutionRoleArns': ["arn:aws:iam::{{emr-accountID}}:role/{{EMRServiceRole}}", 
                             "arn:aws:iam::{{emr-accountID}}:role/{{AnotherServiceRole}}"]
        }
        
    }
})
resp = client.describe_user_profile(DomainId="{{domainID}}", UserProfileName={{user-profile-name}}")

resp['CreationTime'] = str(resp['CreationTime'])
resp['LastModifiedTime'] = str(resp['LastModifiedTime'])
print(json.dumps(resp, indent=2))
```

------
#### [ Preload runtime roles in Studio Classic ]

Fournissez l'ARN de `AccessRole` (`AssumableRole`) à votre rôle d'exécution SageMaker AI. L’ARN est chargé par le serveur Jupyter au lancement. Le rôle d’exécution utilisé par Studio assume ce rôle entre comptes pour découvrir et se connecter aux clusters Amazon EMR dans le *compte d’approbation*.

Vous pouvez spécifier ces informations à l’aide de scripts de configuration du cycle de vie (LCC). Vous pouvez attacher la configuration LCC à votre domaine ou à un profil utilisateur spécifique. Le script LCC que vous utilisez doit être une JupyterServer configuration. Pour plus d’informations sur la façon de créer un script LCC, consultez [Utilisation de configurations de cycle de vie avec Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lcc.html). 

Voici un exemple de script LCC. Pour modifier le script, remplacez `AssumableRole` et `emr-account` par leurs valeurs respectives. Le nombre de comptes croisés est limité à cinq.

L’extrait suivant est un exemple de script bash LCC que vous pouvez appliquer si votre application Studio Classic et votre cluster se trouvent dans le même compte :

```
#!/bin/bash

set -eux

FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE"
FILE_NAME="emr-configurations-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "emr-execution-role-arns":
    {
      "123456789012": [
          "arn:aws:iam::123456789012:role/{{emr-execution-role-1}}",
          "arn:aws:iam::123456789012:role/{{emr-execution-role-2}}"
      ]
    }
}
EOF
```

Si votre application Studio Classic et vos clusters se trouvent dans des comptes différents, spécifiez les rôles d’accès Amazon EMR qui peuvent utiliser le cluster. Dans l’exemple de politique suivant, *123456789012* est l’ID du compte de cluster Amazon EMR, et *212121212121* et *434343434343* sont les ARN des rôles d’accès Amazon EMR autorisés.

```
#!/bin/bash

set -eux

FILE_DIRECTORY="/home/sagemaker-user/.sagemaker-analytics-configuration-DO_NOT_DELETE"
FILE_NAME="emr-configurations-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "emr-execution-role-arns":
    {
      "123456789012": [
          "arn:aws:iam::212121212121:role/{{emr-execution-role-1}}",
          "arn:aws:iam::434343434343:role/{{emr-execution-role-2}}"
      ]
    }
}
EOF

# add your cross-account EMR access role
FILE_DIRECTORY="/home/sagemaker-user/.cross-account-configuration-DO_NOT_DELETE"
FILE_NAME="emr-discovery-iam-role-arns-DO_NOT_DELETE.json"
FILE="$FILE_DIRECTORY/$FILE_NAME"

mkdir -p $FILE_DIRECTORY

cat << 'EOF' > "$FILE"
{
    "123456789012": "arn:aws:iam::123456789012:role/{{cross-account-emr-access-role}}"
}
EOF
```

------