

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione dell'accesso multi-account per Amazon EMR su EKS
<a name="security-cross-account"></a>

Puoi impostare l'accesso multi-account per Amazon EMR su EKS. L'accesso su più account consente agli utenti di un AWS account di eseguire Amazon EMR su job EKS e accedere ai dati sottostanti che appartengono a AWS un altro account. 

## Prerequisiti
<a name="security-cross-account-prereq"></a>

Per configurare l'accesso tra più account per Amazon EMR su EKS, completerai le attività accedendo ai seguenti AWS account: 
+ `AccountA`‐ Un AWS account in cui hai creato un cluster virtuale Amazon EMR su EKS registrando Amazon EMR con uno spazio dei nomi su un cluster EKS.
+ `AccountB`‐ Un AWS account che contiene un bucket Amazon S3 o una tabella DynamoDB a cui desideri accedere dai tuoi job Amazon EMR on EKS. 

Prima di configurare l'accesso tra più account, devi avere a portata di mano quanto segue nei tuoi AWS account: 
+ Un cluster virtuale Amazon EMR su EKS in `AccountA` in cui eseguire i tuoi processi.
+ Un ruolo di esecuzione di processo in `AccountA` che dispone delle autorizzazioni necessarie per eseguire processi nel cluster virtuale. Per ulteriori informazioni, consultare [Creazione di un ruolo di esecuzione di processo](creating-job-execution-role.md) e [Uso dei ruoli di esecuzione di processo con Amazon EMR su EKS](iam-execution-role.md).

## Come accedere a un bucket Amazon S3 o a una tabella DynamoDB su più account
<a name="security-cross-account-steps"></a>

Per impostare l'accesso multi-account per Amazon EMR su EKS, completa la procedura seguente.

1. Crea un bucket Amazon S3, `cross-account-bucket`, in `AccountB`. Per ulteriori informazioni, consulta [Creazione di un bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html). Se si desidera avere un accesso multi-account a DynamoDB, è anche possibile creare una tabella DynamoDB in `AccountB`. Per ulteriori informazioni, consulta [Creazione di una tabella DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html).

1. Crea un ruolo IAM `Cross-Account-Role-B` in `AccountB` per accedere a `cross-account-bucket`.

   1. Accedi alla console IAM.

   1. Scegli **Roles (Ruoli)**, quindi crea un nuovo ruolo: `Cross-Account-Role-B`. Per ulteriori informazioni su come creare ruoli IAM, consulta [Creazione di ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) nella Guida per l'utente IAM.

   1. Crea una policy IAM che specifichi le autorizzazioni per `Cross-Account-Role-B` per accedere al bucket S3 `cross-account-bucket`, come dimostra la seguente istruzione di policy. Quindi, allega la policy IAM a `Cross-Account-Role-B`. Per ulteriori informazioni, consulta [Creazione di una nuova policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) nella Guida per l'utente IAM.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "s3:*"
            ],
            "Resource": [
              "arn:aws:s3:::cross-account-bucket",
              "arn:aws:s3:::cross-account-bucket/*"
            ],
            "Sid": "AllowS3"
          }
        ]
      }
      ```

------

      Se è richiesto l'accesso a DynamoDB, crea una policy IAM che specifichi le autorizzazioni per accedere alla tabella DynamoDB multi-account. Quindi, allega la policy IAM a `Cross-Account-Role-B`. Per ulteriori informazioni, consulta [Creazione di una tabella DynamoDB](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_specific-table.html) nella Guida per l'utente IAM.

      Di seguito è riportata una policy per accedere a una tabella DynamoDB, `CrossAccountTable`. 

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "dynamodb:*"
            ],
            "Resource": [
              "arn:aws:dynamodb:us-east-1:*:table/CrossAccountTable"
            ],
            "Sid": "AllowDYNAMODB"
          }
        ]
      }
      ```

------

1. Modifica la relazione di fiducia per il ruolo `Cross-Account-Role-B`. 

   1. Per configurare la relazione di fiducia per il ruolo, seleziona la scheda **Trust Relationships (Relazioni di fiducia)** nella console IAM per il ruolo creato nel Passaggio 2: `Cross-Account-Role-B`. 

   1. Seleziona **Edit Trust Relationship (Modifica relazione di fiducia)**.

   1. Aggiungi il seguente documento di policy, che consente a `Job-Execution-Role-A` in `AccountA` di assumere questo ruolo `Cross-Account-Role-B`.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "sts:AssumeRole"
            ],
            "Resource": [
              "arn:aws:iam::*:role/Job-Execution-Role-A"
            ],
            "Sid": "AllowSTSAssumerole"
          }
        ]
      }
      ```

------

1. Concedi `Job-Execution-Role-A` in `AccountA` con autorizzazione del ruolo STS Assume per l'assunzione di `Cross-Account-Role-B`.

   1. Nella console IAM per l' AWS account`AccountA`, seleziona`Job-Execution-Role-A`. 

   1. Aggiungi la seguente istruzione di policy a `Job-Execution-Role-A` per autorizzare l'operazione `AssumeRole` nel ruolo `Cross-Account-Role-B`.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "sts:AssumeRole"
            ],
            "Resource": [
              "arn:aws:iam::*:role/Cross-Account-Role-B"
            ],
            "Sid": "AllowSTSAssumerole"
          }
        ]
      }
      ```

------

1. Per accedere ad Amazon S3, imposta i seguenti parametri `spark-submit` (`spark conf`) durante l'invio del processo ad Amazon EMR su EKS.
**Nota**  
Per impostazione predefinita, EMRFS utilizza il ruolo di esecuzione di processo per accedere al bucket S3 dal processo. Ma quando `customAWSCredentialsProvider` è impostato su `AssumeRoleAWSCredentialsProvider`, EMRFS utilizza il ruolo corrispondente specificato con `ASSUME_ROLE_CREDENTIALS_ROLE_ARN` invece di `Job-Execution-Role-A` per accedere ad Amazon S3.
   + `--conf spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider`
   + `--conf spark.kubernetes.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN=arn:aws:iam::AccountB:role/Cross-Account-Role-B \`
   + `--conf spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN=arn:aws:iam::AccountB:role/Cross-Account-Role-B \`
**Nota**  
È necessario impostare `ASSUME_ROLE_CREDENTIALS_ROLE_ARN` sia per l'executor che per il driver `env` nella configurazione del processo Spark.

   Per l'accesso multi-account DynamoDB, è necessario impostare `--conf spark.dynamodb.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider`.

1. Esegui il processo Amazon EMR su EKS con accesso multi-account, come illustrato nell'esempio seguente. 

   ```
   aws emr-containers start-job-run \
   --virtual-cluster-id 123456 \
   --name myjob \
   --execution-role-arn execution-role-arn \
   --release-label emr-6.2.0-latest \
   --job-driver '{"sparkSubmitJobDriver": {"entryPoint": "entryPoint_location", "entryPointArguments": ["arguments_list"], "sparkSubmitParameters": "--class <main_class> --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1 --conf spark.hadoop.fs.s3.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider --conf spark.kubernetes.driverEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN=arn:aws:iam::AccountB:role/Cross-Account-Role-B --conf spark.executorEnv.ASSUME_ROLE_CREDENTIALS_ROLE_ARN=arn:aws:iam::AccountB:role/Cross-Account-Role-B"}} ' \
   --configuration-overrides '{"applicationConfiguration": [{"classification": "spark-defaults", "properties": {"spark.driver.memory": "2G"}}], "monitoringConfiguration": {"cloudWatchMonitoringConfiguration": {"logGroupName": "log_group_name", "logStreamNamePrefix": "log_stream_prefix"}, "persistentAppUI":"ENABLED",  "s3MonitoringConfiguration": {"logUri": "s3://my_s3_log_location" }}}'
   ```