

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configuração do acesso entre contas para o Amazon EMR no EKS
<a name="security-cross-account"></a>

Você pode configurar o acesso entre contas para o Amazon EMR no EKS. O acesso entre contas permite que os usuários de uma AWS conta executem o Amazon EMR em trabalhos do EKS e acessem os dados subjacentes que pertencem a AWS outra conta. 

## Pré-requisitos
<a name="security-cross-account-prereq"></a>

Para configurar o acesso entre contas para o Amazon EMR no EKS, você concluirá as tarefas enquanto estiver conectado às seguintes AWS contas: 
+ `AccountA`‐ Uma AWS conta em que você criou um cluster virtual do Amazon EMR no EKS registrando o Amazon EMR com um namespace em um cluster EKS.
+ `AccountB`‐ Uma AWS conta que contém um bucket do Amazon S3 ou uma tabela do DynamoDB que você deseja que suas tarefas do Amazon EMR no EKS acessem. 

Você deve ter o seguinte em mãos em suas AWS contas antes de configurar o acesso entre contas: 
+ Um cluster virtual do Amazon EMR no EKS na `AccountA` em que deseja executar trabalhos.
+ Um perfil de execução de trabalho na `AccountA` que tem as permissões obrigatórias para executar trabalhos no cluster virtual. Para obter mais informações, consulte [Criação de um perfil de execução de trabalho](creating-job-execution-role.md) e [Uso de perfis de execução de trabalho com o Amazon EMR no EKS](iam-execution-role.md).

## Como acessar um bucket do Amazon S3 ou uma tabela do DynamoDB entre contas
<a name="security-cross-account-steps"></a>

Para configurar o acesso entre contas do Amazon EMR no EKS, conclua as etapas apresentadas a seguir.

1. Crie um bucket do Amazon S3, `cross-account-bucket`, na `AccountB`. Para mais informações, consulte [ Criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html). Se desejar ter acesso entre contas para o DynamoDB, você também pode criar uma tabela do DynamoDB na `AccountB`. Para obter mais informações, consulte [Creating a DynamoDB table](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html).

1. Crie um perfil do IAM `Cross-Account-Role-B` na `AccountB` que possa acessar o `cross-account-bucket`.

   1. Faça login no console do IAM.

   1. Escolha **Perfis** e crie um novo perfil: `Cross-Account-Role-B`. Para obter mais informações sobre como criar perfis do IAM, consulte [Criação de perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) no Guia do usuário do IAM.

   1. Crie uma política do IAM que especifique as permissões para `Cross-Account-Role-B` acessar o bucket `cross-account-bucket` do S3, como demonstra a instrução de política a seguir. Em seguida, anexe a política do IAM ao `Cross-Account-Role-B`. Para obter mais informações, consulte [Creating a New Policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no Guia do usuário do 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 o acesso ao DynamoDB for necessário, crie uma política do IAM que especifique as permissões de acesso à tabela do DynamoDB entre contas. Em seguida, anexe a política do IAM ao `Cross-Account-Role-B`. Para obter mais informações, consulte [Criar uma tabela do DynamoDB](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_specific-table.html) no Guia do usuário do IAM.

      A seguir, é apresentada uma política de acesso a uma tabela do DynamoDB, `CrossAccountTable`. 

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

****  

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

------

1. Edite a relação de confiança para o perfil `Cross-Account-Role-B`. 

   1. Para configurar a relação de confiança para o perfil, escolha a guia **Relações de confiança** no console do IAM para o perfil criado na Etapa 2: `Cross-Account-Role-B`. 

   1. Selecione **Editar relação de confiança**.

   1. Adicione o documento de política a seguir, que permite que `Job-Execution-Role-A` na `AccountA` assuma esse perfil `Cross-Account-Role-B`.

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

****  

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

------

1. Conceda que o `Job-Execution-Role-A` na `AccountA` tenha a permissão sts assume-role para assumir `Cross-Account-Role-B`.

   1. No console do IAM da AWS conta`AccountA`, selecione`Job-Execution-Role-A`. 

   1. Adicione a instrução de política a seguir ao `Job-Execution-Role-A` para permitir a ação `AssumeRole` no perfil `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. Para obter acesso ao Amazon S3, defina os parâmetros `spark-submit` (`spark conf`) apresentados a seguir ao enviar o trabalho para o Amazon EMR no EKS.
**nota**  
Por padrão, o EMRFS usa o perfil de execução do trabalho para acessar o bucket do S3 usando o trabalho. Entretanto, quando `customAWSCredentialsProvider` é definido como `AssumeRoleAWSCredentialsProvider`, o EMRFS usa o perfil correspondente que você especifica com `ASSUME_ROLE_CREDENTIALS_ROLE_ARN` em vez do `Job-Execution-Role-A` para obter acesso ao 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**  
Você deve definir `ASSUME_ROLE_CREDENTIALS_ROLE_ARN` para o `env` do executor e do driver na configuração de trabalho do Spark.

   Para obter acesso entre contas do DynamoDB, você deve definir `--conf spark.dynamodb.customAWSCredentialsProvider=com.amazonaws.emr.AssumeRoleAWSCredentialsProvider`.

1. Execute o trabalho do Amazon EMR no EKS com acesso entre contas, como demonstrado pelo exemplo a seguir. 

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