

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á.

# Plug-ins do Apache Ranger para cenários de integração do Amazon EMR
<a name="emr-ranger-plugins"></a>

Os plug-ins Apache Ranger validam o acesso de um usuário em relação às políticas de autorização definidas no servidor de administração de políticas do Apache Ranger.

**Topics**
+ [Plug-in do Apache Hive para integração do Ranger com Amazon EMR](emr-ranger-hive.md)
+ [Plug-in do Apache Spark para integração do Ranger com Amazon EMR](emr-ranger-spark.md)
+ [Plug-in EMRFS do S3 para integração do Ranger com o Amazon EMR](emr-ranger-emrfs.md)
+ [Plug-in Trino para integração do Ranger com o Amazon EMR](emr-ranger-trino.md)

# Plug-in do Apache Hive para integração do Ranger com Amazon EMR
<a name="emr-ranger-hive"></a>

O Apache Hive é um mecanismo de execução bastante usado dentro do ecossistema Hadoop. O Amazon EMR fornece um plug-in Apache Ranger para poder proporcionar controles de acesso refinados para o Hive. O plug-in é compatível com o servidor Apache Ranger Admin de código aberto versão 2.0 e posteriores.

**Topics**
+ [Recursos compatíveis](#emr-ranger-supported-features)
+ [Instalação da configuração de serviço](#emr-ranger-hive-service-config)
+ [Considerações](#emr-ranger-hive-considerations)
+ [Limitações](#emr-ranger-hive-limitations)

## Recursos compatíveis
<a name="emr-ranger-supported-features"></a>

O plug-in Apache Ranger para Hive no EMR oferece suporte a todas as funcionalidades do plug-in de código aberto, que inclui controles de acesso em nível de banco de dados, tabela e coluna, filtragem de linhas e mascaramento de dados. Para ver uma tabela dos comandos do Hive e das permissões associadas do Ranger, consulte [Hive commands to Ranger permission mapping](https://cwiki.apache.org/confluence/display/RANGER/Hive+Commands+to+Ranger+Permission+Mapping).

## Instalação da configuração de serviço
<a name="emr-ranger-hive-service-config"></a>

O plug-in Apache Hive é compatível com a definição de serviço Hive já existente no Apache Hive Hadoop SQL.

![\[Definição de serviço Apache Hive para Hadoop SQL.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger_service_mgr.png)


Caso não tenha uma instância de serviço no Hadoop SQL, como mostrado acima, você pode criar uma. Clique em **\$1** ao lado do Hadoop SQL.

1. **Nome do serviço (se for exibido)**: insira o nome do serviço. O valor sugerido é **amazonemrhive**. Anote esse nome de serviço, pois ele será necessário ao criar uma configuração de segurança do EMR.

1. **Nome de exibição**: insira o nome a ser exibido para o serviço. O valor sugerido é **amazonemrhive**.

![\[Detalhes do serviço Apache Hive para Hadoop SQL.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger_create_service.png)


As propriedades de configuração do Apache Hive são usadas para estabelecer uma conexão com seu servidor Apache Ranger Admin com um 2 HiveServer para implementar o preenchimento automático ao criar políticas. As propriedades abaixo não precisam ser precisas se você não tiver um processo persistente HiveServer 2 e puderem ser preenchidas com qualquer informação.
+ **Nome de usuário**: insira um nome de usuário para a conexão JDBC com uma instância de HiveServer 2 instâncias.
+ **Senha**: insira a senha do nome de usuário acima.
+ **jdbc. driver. ClassName**: insira o nome da classe JDBC para conectividade com o Apache Hive. O valor padrão pode ser usado.
+ **jdbc.url**: insira a string de conexão JDBC a ser usada ao se conectar a 2. HiveServer
+ **Nome comum para certificado**: o campo CN dentro do certificado usado para se conectar ao servidor de administração com base em um plug-in cliente. Esse valor deve corresponder ao campo CN do certificado TLS que foi criado para o plug-in.

![\[Propriedades de configuração do serviço Apache Hive.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger_config_props.png)


O botão **Testar conexão** testa se os valores acima podem ser usados para se conectar com êxito à instância HiveServer 2. Depois que o serviço for criado com êxito, o Service Manager deverá ficará semelhante a isto:

![\[Conectado à instância HiveServer 2\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger_config_connected.png)


## Considerações
<a name="emr-ranger-hive-considerations"></a>

**Servidor de metadados Hive**

O servidor de metadados Hive só pode ser acessado por mecanismos confiáveis, especificamente o Hive e `emr_record_server`, para proteção contra acesso não autorizado. O servidor de metadados Hive também é acessado por todos os nós do cluster. A porta 9083 necessária fornece acesso de todos os nós ao nó principal.

**Autenticação**

Por padrão, o Apache Hive está configurado para se autenticar usando Kerberos conforme configurado na configuração do EMR Security. HiveServer2 também pode ser configurado para autenticar usuários usando o LDAP. Consulte [Implementing LDAP authentication for Hive on a multi-tenant Amazon EMR cluster](https://aws.amazon.com/blogs/big-data/implementing-ldap-authentication-for-hive-on-a-multi-tenant-amazon-emr-cluster/) para obter informações.

## Limitações
<a name="emr-ranger-hive-limitations"></a>

Estas são as limitações atuais do plug-in Apache Hive no Amazon EMR 5.x:
+ Não há suporte para perfis do Hive atualmente. Não há suporte para instruções Grant e Revoke.
+ A CLI do Hive não é suportada. JDBC/Beeline é a única forma autorizada de conectar o Hive.
+ `hive.server2.builtin.udf.blacklist`a configuração deve ser preenchida com o UDFs que você considera inseguro.

# Plug-in do Apache Spark para integração do Ranger com Amazon EMR
<a name="emr-ranger-spark"></a>

O Amazon EMR integrou o EMR RecordServer para fornecer controle de acesso refinado para o SparkSQL. O EMR RecordServer é um processo privilegiado executado em todos os nós em um cluster habilitado para Apache Ranger. Quando um driver ou executor do Spark executa uma instrução SparkSQL, todos os metadados e solicitações de dados passam pelo. RecordServer Para saber mais sobre o EMR RecordServer, consulte a [Componentes do Amazon EMR para uso com o Apache Ranger](emr-ranger-components.md) página.

**Topics**
+ [Recursos compatíveis](#emr-ranger-spark-supported-features)
+ [Reimplantar a definição de serviço para usar instruções INSERT, ALTER ou DDL](#emr-ranger-spark-redeploy-service-definition)
+ [Instalação da definição de serviço](#emr-ranger-spark-install-servicedef)
+ [Criar políticas SparkSQL](#emr-ranger-spark-create-sparksql)
+ [Considerações](#emr-ranger-spark-considerations)
+ [Limitações](#emr-ranger-spark-limitations)

## Recursos compatíveis
<a name="emr-ranger-spark-supported-features"></a>


|  statement/Ranger Ação SQL | STATUS | Versão do EMR compatível | 
| --- | --- | --- | 
|  SELECT  |  Compatível  |  A partir da 5.32  | 
|  SHOW DATABASES  |  Compatível  |  A partir da 5.32  | 
|  SHOW COLUMNS  |  Compatível  |  A partir da 5.32  | 
|  SHOW TABLES  |  Compatível  |  A partir da 5.32  | 
|  SHOW TABLE PROPERTIES  |  Compatível  |  A partir da 5.32  | 
|  DESCRIBE TABLE  |  Compatível  |  A partir da 5.32  | 
|  INSERT OVERWRITE  |  Compatível  |  A partir da 5.34 e 6.4  | 
| INSERT INTO | Compatível | A partir da 5.34 e 6.4 | 
|  ALTER TABLE  |  Compatível  |  A partir da 6.4  | 
|  CRIAR TABELA  |  Compatível  |  A partir da 5.35 e 6.7  | 
|  CREATE DATABASE  |  Compatível  |  A partir da 5.35 e 6.7  | 
|  DESCARTAR TABELA  |  Compatível  |  A partir da 5.35 e 6.7  | 
|  DROP DATABASE  |  Compatível  |  A partir da 5.35 e 6.7  | 
|  DROP VIEW  |  Compatível  |  A partir da 5.35 e 6.7  | 
|  CREATE VIEW  |  Não suportado  |    | 

Os seguintes atributos são compatíveis com o uso do SparkSQL:
+ Controle de acesso refinado em tabelas dentro do Hive Metastore, e é possível criar políticas em nível de banco de dados, tabela e coluna.
+ As políticas do Apache Ranger podem incluir políticas de concessão e políticas de negação para usuários e grupos.
+ Os eventos de auditoria são enviados para o CloudWatch Logs.

## Reimplantar a definição de serviço para usar instruções INSERT, ALTER ou DDL
<a name="emr-ranger-spark-redeploy-service-definition"></a>

**nota**  
A partir do Amazon EMR 6.4, é possível usar o Spark SQL com as instruções: INSERT INTO, INSERT OVERWRITE ou ALTER TABLE. A partir do Amazon EMR 6.7, é possível usar o Spark SQL para criar ou eliminar bancos de dados e tabelas. Se você já tiver uma instalação no servidor Apache Ranger com definições de serviço Apache Spark implantadas, use o código a seguir para reimplantar as definições de serviço.  

```
# Get existing Spark service definition id calling Ranger REST API and JSON processor
curl --silent -f -u <admin_user_login>:<password_for_ranger_admin_user> \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/name/amazon-emr-spark' | jq .id

# Download the latest Service definition
wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json

# Update the service definition using the Ranger REST API
curl -u <admin_user_login>:<password_for_ranger_admin_user> -X PUT -d @ranger-servicedef-amazon-emr-spark.json \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/<Spark service definition id from step 1>'
```

## Instalação da definição de serviço
<a name="emr-ranger-spark-install-servicedef"></a>

A instalação da definição de serviço Apache Spark do EMR exige que o servidor Ranger Admin esteja configurado. Consulte [Configure um servidor Ranger Admin para integração com o Amazon EMR](emr-ranger-admin.md).

Siga estas etapas para instalar a definição de serviço Apache Spark:

**Etapa 1: SSH no servidor Apache Ranger Admin**

Por exemplo:

```
ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal
```

**Etapa 2: baixar a definição de serviço e o plug-in do servidor Apache Ranger Admin**

Em um diretório temporário, baixe a definição de serviço. Essa definição de serviço é compatível com as versões Ranger 2.x.

```
mkdir /tmp/emr-spark-plugin/
cd /tmp/emr-spark-plugin/

wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-spark-plugin-2.x.jar
wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-spark.json
```

**Etapa 3: instalar o plug-in Apache Spark para Amazon EMR**

```
export RANGER_HOME=.. # Replace this Ranger Admin's home directory eg /usr/lib/ranger/ranger-2.0.0-admin
mkdir $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark
mv ranger-spark-plugin-2.x.jar $RANGER_HOME/ews/webapp/WEB-INF/classes/ranger-plugins/amazon-emr-spark
```

**Etapa 4: registrar a definição de serviço Apache Spark para Amazon EMR**

```
curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-spark.json \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'
```

Se esse comando for executado com êxito, você verá um novo serviço na interface de usuário do Ranger Admin chamado “AMAZON-EMR-SPARK”, conforme mostrado na imagem a seguir (a versão 2.0 do Ranger é exibida).

![\[“AMAZON-EMR-SPARK” registrado no Ranger Admin.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-amazon-emr-spark.png)


**Etapa 5: criar uma instância do AMAZON-EMR-SPARK aplicativo**

**Nome do serviço (se for exibido):** o nome do serviço que será usado. O valor sugerido é **amazonemrspark**. Anote esse nome de serviço, pois ele será necessário ao criar uma configuração de segurança do EMR.

**Nome de exibição:** o nome a ser exibido para a instância. O valor sugerido é **amazonemrspark**.

**Nome comum para certificado:** o campo CN dentro do certificado usado para se conectar ao servidor de administração com base em um plug-in cliente. Esse valor deve corresponder ao campo CN do certificado TLS que foi criado para o plug-in.

![\[O Ranger Admin cria o serviço.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-create-service.png)


**nota**  
O certificado TLS para o plug-in deveria ter sido registrado no armazenamento confiável do servidor Ranger Admin. Consulte [Certificados TLS para integração do Apache Ranger com o Amazon EMR](emr-ranger-admin-tls.md) para obter mais detalhes.

## Criar políticas SparkSQL
<a name="emr-ranger-spark-create-sparksql"></a>

Ao criar uma nova política, os campos a serem preenchidos são:

**Nome da política**: o nome da política.

**Rótulo de política**: um rótulo que você pode colocar na política.

**Banco de dados**: o banco de dados ao qual a política se aplica. O caractere curinga “\$1” representa todos os bancos de dados.

**Tabela**: as tabelas às quais a política se aplica. O caractere curinga “\$1” representa todas as tabelas.

**Coluna do EMR Spark**: as colunas às quais a política se aplica. O caractere curinga “\$1” representa todas as colunas.

**Descrição**: uma descrição da política.

![\[O Ranger Admin cria detalhes da política do SparkSQL.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-create-policy-details.png)


Para especificar usuários e grupos, insira os usuários e grupos abaixo para conceder permissões. Também é possível especificar exclusões para as condições de **permissão** e **negação**.

![\[Os detalhes da política SparkSQL do Ranger Admin permitem condições.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions.png)


Após especificar as condições de permitir e negar, clique em **Salvar**.

## Considerações
<a name="emr-ranger-spark-considerations"></a>

Cada nós do cluster do EMR deve ser capaz de se conectar ao nó principal na porta 9083.

## Limitações
<a name="emr-ranger-spark-limitations"></a>

Estas são as limitações atuais do plug-in Apache Spark:
+ O Record Server sempre se conectará ao HMS que está em execução em um cluster do Amazon EMR. Configure o HMS para se conectar ao modo remoto, se necessário. Você não deve colocar valores de configuração no arquivo de configuração Hive-site.xml do Apache Spark.
+ As tabelas criadas usando fontes de dados do Spark em CSV ou Avro não podem ser lidas usando o EMR. RecordServer Utilize o Hive para criar e gravar dados e ler usando Record.
+ Não há suporte para tabelas do Delta Lake, Hudi e Iceberg.
+ Os usuários precisam ter acesso ao banco de dados padrão. Esse é um requisito do Apache Spark.
+ O servidor Ranger Admin não oferece suporte ao preenchimento automático.
+ O plug-in SparkSQL para Amazon EMR não oferece suporte a filtros de linha ou a mascaramento de dados.
+ Ao ser usado ALTER TABLE com Spark SQL, o local da partição deve ser o diretório filho do local de uma tabela. Não há suporte para inserção de dados em uma partição em que a localização da partição seja diferente da localização da tabela.

# Plug-in EMRFS do S3 para integração do Ranger com o Amazon EMR
<a name="emr-ranger-emrfs"></a>

Para facilitar o fornecimento de controles de acesso contra objetos no S3 em um cluster multilocatário, o plug-in EMRFS S3 fornece controles de acesso aos dados no S3 ao acessá-los pelo EMRFS. Você pode permitir acesso aos recursos do S3 em nível de usuário e grupo.

Para conseguir isso, quando sua aplicação tenta acessar dados no S3, o EMRFS envia uma solicitação de credenciais ao processo do agente secreto, onde a solicitação é autenticada e autorizada em um plug-in Apache Ranger. Se a solicitação for autorizada, o agente secreto assumirá o perfil do IAM para os mecanismos do Apache Ranger com uma política restrita para gerar credenciais que só tenham acesso à política Ranger que permitiu o acesso. As credenciais então são repassadas ao EMRFS para acessar o S3.

**Topics**
+ [Recursos compatíveis](#emr-ranger-emrfs-features)
+ [Instalação da configuração de serviço](#emr-ranger-emrfs-service-config)
+ [Criar políticas do EMRFS S3](#emr-ranger-emrfs-create-policies)
+ [Notas sobre o uso das políticas do EMRFS S3](#emr-ranger-emrfs-considerations)
+ [Limitações](#emr-ranger-emrfs-limitations)

## Recursos compatíveis
<a name="emr-ranger-emrfs-features"></a>

O plug-in EMRFS S3 concede autorização de nível de armazenamento. Políticas podem ser criadas para conceder acesso a usuários e grupos a buckets e prefixos do S3. A autorização é feita somente em relação ao EMRFS.

## Instalação da configuração de serviço
<a name="emr-ranger-emrfs-service-config"></a>

Para instalar a definição do serviço EMRFS, você deve configurar o servidor Ranger Admin. Para configurar o servidor, consulte [Configure um servidor Ranger Admin para integração com o Amazon EMR](emr-ranger-admin.md).

Siga estas etapas para instalar a definição de serviço do EMRFS.

**Etapa 1: SSH no servidor Apache Ranger Admin**.

Por exemplo:

```
ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal
```

**Etapa 2: download da definição do serviço EMRFS**.

Em um diretório temporário, baixe a definição de serviço do Amazon EMR. Essa definição de serviço é compatível com as versões Ranger 2.x.

```
wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-emrfs.json
```

**Etapa 3: registrar a definição de serviço do S3 para EMRFS**.

```
curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-emrfs.json \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'
```

Se esse comando for executado com êxito, você verá um novo serviço na interface de usuário do Ranger Admin chamado “AMAZON-EMR-S3”, conforme mostrado na imagem a seguir (a versão 2.0 do Ranger é exibida).

![\[O Ranger Admin cria o serviço EMRFS S3.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-create-service-EMRFS.png)


**Etapa 4: Crie uma instância do AMAZON-EMR-EMRFS aplicativo**.

Crie uma instância da definição de serviço.
+ Clique no **\$1** ao lado de AMAZON-EMR-EMRFS.

Preencha os seguintes campos:

**Nome do serviço (se for exibido)**: o valor sugerido é **amazonemrs3**. Anote esse nome de serviço, pois ele será necessário ao criar uma configuração de segurança do EMR. 

**Nome de exibição**: o nome exibido para o serviço. O valor sugerido é **amazonemrs3**.

**Nome comum para certificado:** o campo CN dentro do certificado usado para se conectar ao servidor de administração com base em um plug-in cliente. Esse valor deve corresponder ao campo CN no certificado TLS criado para o plug-in.

![\[Ranger Admin edita o serviço EMRFS S3.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-edit-service-EMRFS.png)


**nota**  
O certificado TLS para o plug-in deveria ter sido registrado no armazenamento confiável do servidor Ranger Admin. Consulte [Certificados TLS para integração do Apache Ranger com o Amazon EMR](emr-ranger-admin-tls.md) para obter mais detalhes.

Quando o serviço é criado, o Service Manager inclui “AMAZON-EMR-EMRFS”, conforme mostra a imagem a seguir.

![\[Ranger Admin mostrando o novo serviço EMRFS S3.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-new-service-EMRFS.png)


## Criar políticas do EMRFS S3
<a name="emr-ranger-emrfs-create-policies"></a>

Para criar uma nova política na página **Criar política** do Service Manager, preencha os campos a seguir.

**Nome da política**: o nome da política.

**Rótulo de política**: um rótulo que você pode colocar na política.

**Recurso do S3**: um recurso que começa com o bucket e o prefixo opcional. Consulte [Notas sobre o uso das políticas do EMRFS S3](#emr-ranger-emrfs-considerations) para obter informações sobre práticas recomendadas. Os recursos no servidor Ranger Admin não devem conter **s3://**, **s3a://** ou **s3n://**.

![\[Administrador do Ranger mostrando a política de criação para o serviço EMRFS S3.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-create-policy-EMRFS.png)


É possível especificar usuários e grupos para conceder permissões. Também é possível especificar exclusões para condições de **permissão** e **negação**.

![\[Administrador do Ranger mostrando user/group permissões para a política do EMRFS S3.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-permissions-EMRFS.png)


**nota**  
São permitidos no máximo três recursos por política. Adicionar mais de três recursos poderá resultar em um erro quando essa política é usada em um cluster do EMR. Adicionar mais de três políticas exibirá um lembrete sobre o limite da política.

## Notas sobre o uso das políticas do EMRFS S3
<a name="emr-ranger-emrfs-considerations"></a>

Ao criar políticas do S3 no Apache Ranger, atente para algumas considerações sobre o uso.

### Permissões para múltiplos objetos do S3
<a name="emr-ranger-emrfs-considerations-s3objects"></a>

É possível usar políticas recursivas e expressões curinga para conceder permissões a vários objetos do S3 com prefixos comuns. As políticas recursivas concedem permissões a todos os objetos com um prefixo comum. As expressões curinga selecionam múltiplos prefixos. Juntos, eles concedem permissões a todos os objetos com múltiplos prefixos comuns, conforme mostrado nos exemplos a seguir.

**Example Usar uma política recursiva**  
Suponha que você queira permissões para listar todos os arquivos parquet em um bucket do S3 organizado da forma a seguir.  

```
s3://sales-reports/americas/
    +- year=2000
    |      +- data-q1.parquet
    |      +- data-q2.parquet
    +- year=2019
    |      +- data-q1.json
    |      +- data-q2.json
    |      +- data-q3.json
    |      +- data-q4.json
    |
    +- year=2020
    |      +- data-q1.parquet
    |      +- data-q2.parquet
    |      +- data-q3.parquet
    |      +- data-q4.parquet
    |      +- annual-summary.parquet    
    +- year=2021
```
Primeiro, considere os arquivos parquet que tenham o prefixo `s3://sales-reports/americas/year=2000`. Você pode conceder GetObject permissões a todos eles de duas maneiras:  
**Usar políticas não recursivas**: uma opção é usar duas políticas não recursivas separadas, uma para o diretório e outra para os arquivos.   
A primeira política concede permissão ao prefixo `s3://sales-reports/americas/year=2020` (não há `/` final).  

```
- S3 resource = "sales-reports/americas/year=2000"
- permission = "GetObject"
- user = "analyst"
```
A segunda política usa a expressão curinga para conceder permissões a todos os arquivos com prefixo `sales-reports/americas/year=2020/` (observe o `/` final).  

```
- S3 resource = "sales-reports/americas/year=2020/*"
- permission = "GetObject"
- user = "analyst"
```
**Usar uma política recursiva**: uma alternativa mais conveniente é usar uma única política recursiva e conceder permissão recursiva ao prefixo.  

```
 - S3 resource = "sales-reports/americas/year=2020"
 - permission = "GetObject"
 - user = "analyst"
 - is recursive = "True"
```
Até agora, apenas os arquivos parquet com o prefixo `s3://sales-reports/americas/year=2000` foram incluídos. Também já é possível incluir os arquivos parquet com outro prefixo, `s3://sales-reports/americas/year=2020`, na mesma política recursiva introduzindo uma expressão curinga da forma a seguir.  

```
 - S3 resource = "sales-reports/americas/year=20?0"
 - permission = "GetObject"
 - user = "analyst"
 - is recursive = "True"
```

### Políticas PutObject e DeleteObject permissões
<a name="emr-ranger-emrfs-considerations-putobject"></a>

Escrever políticas `PutObject` e `DeleteObject` permissões para arquivos no EMRFS precisa de cuidados especiais porque, diferentemente das GetObject permissões, elas precisam de permissões recursivas adicionais concedidas ao prefixo.

**Example Políticas PutObject e DeleteObject permissões**  
Por exemplo, excluir o arquivo `annual-summary.parquet` requer não apenas uma DeleteObject permissão para o arquivo real.  

```
- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet"
- permission = "DeleteObject"
- user = "analyst"
```
Também requer uma política que conceda permissões `GetObject` e `PutObject` recursivas para o prefixo.  
Da mesma forma, modificar o arquivo `annual-summary.parquet` requer não apenas uma permissão `PutObject` para o arquivo real.  

```
- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet"
- permission = "PutObject"
- user = "analyst"
```
Também requer uma política que conceda a permissão `GetObject` recursiva para o prefixo.  

```
- S3 resource = "sales-reports/americas/year=2020"
- permission = "GetObject"
- user = "analyst"
- is recursive = "True"
```

### Curingas em políticas
<a name="emr-ranger-emrfs-considerations-wildcards"></a>

Há duas áreas em que é possível especificar caracteres curingas. Ao especificar um recurso do S3, pode-se usar “\$1” e “?”. O “\$1” faz correspondência com um caminho do S3 e corresponde a tudo que está depois do prefixo. Por exemplo, a política a seguir.

```
S3 resource = "sales-reports/americas/*"
```

Isso corresponde aos caminhos do S3 a seguir.

```
sales-reports/americas/year=2020/
sales-reports/americas/year=2019/
sales-reports/americas/year=2019/month=12/day=1/afile.parquet 
sales-reports/americas/year=2018/month=6/day=1/afile.parquet 
sales-reports/americas/year=2017/afile.parquet
```

O curinga “?” corresponde a apenas um caractere. Por exemplo, para a política.

```
S3 resource = "sales-reports/americas/year=201?/"
```

Isso corresponde aos caminhos do S3 a seguir.

```
sales-reports/americas/year=2019/
sales-reports/americas/year=2018/
sales-reports/americas/year=2017/
```

### Curingas em usuários
<a name="emr-ranger-emrfs-considerations-wildcards-in-users"></a>

Há dois curingas integrados ao atribuir usuários para fornecer acesso aos usuários. O primeiro é o curinga “\$1USER\$1” que concede acesso a todos os usuários. O segundo caractere curinga é “\$1OWNER\$1”, que concede acesso direto ao proprietário de um objeto específico. No entanto, atualmente não há suporte para o curinga “\$1USER\$1”.

## Limitações
<a name="emr-ranger-emrfs-limitations"></a>

Estas são as limitações atuais do plug-in EMRFS S3:
+ As políticas do Apache Ranger podem conter no máximo três políticas.
+ O acesso ao S3 deve ser feito pelo EMRFS e pode ser usado com aplicações relacionadas ao Hadoop. Não há suporte para:

  - Bibliotecas Boto3

  - AWS SDK e AWK CLI

  - Conector de código aberto S3A
+ Não há suporte para políticas de negação do Apache Ranger.
+ Atualmente, não há suporte para operações no S3 com chaves com criptografia do CSE-KMS.
+ O suporte entre regiões não é compatível.
+ Não há suporte para o atributo de zona de segurança do Apache Ranger. As restrições de controle de acesso definidas usando o atributo Security Zone não são aplicadas aos clusters do Amazon EMR.
+ O usuário do Hadoop não gera nenhum evento de auditoria, pois o Hadoop sempre acessa o perfil de instância do EC2.
+ É recomendável desabilitar a visualização consistente do Amazon EMR. O S3 do tem um alto nível de consistência e, portanto, isso não é mais necessário. Para obter mais informações, consulte [Amazon S3 strong consistency](https://aws.amazon.com/s3/consistency/).
+ O plug-in EMRFS S3 efetua várias chamadas STS. É recomendável fazer testes de carga em uma conta de desenvolvimento e monitorar o volume de chamadas do STS. Também é recomendável que você faça uma solicitação STS para aumentar os limites do AssumeRole serviço.
+ O servidor Ranger Admin não oferece suporte ao preenchimento automático.

# Plug-in Trino para integração do Ranger com o Amazon EMR
<a name="emr-ranger-trino"></a>

O Trino (antes chamado PrestoSQL) é um mecanismo de consulta SQL que pode ser usado para executar consultas em fontes de dados como HDFS, armazenamento de objetos, bancos de dados relacionais e bancos de dados NoSQL. Ele elimina a necessidade de migrar dados para um local central e permite a consulta de dados de qualquer lugar. O Amazon EMR fornece um plug-in Apache Ranger para proporcionar controles de acesso refinados para o Trino. O plug-in é compatível com o servidor Apache Ranger Admin de código aberto versão 2.0 e posteriores.

**Topics**
+ [Recursos compatíveis](#emr-ranger-trino-features)
+ [Instalação da configuração de serviço](#emr-ranger-trino-service-config)
+ [Criar políticas do Trino](#emr-ranger-trino-create-policies)
+ [Considerações](#emr-ranger-trino-considerations)
+ [Limitações](#emr-ranger-trino-limitations)

## Recursos compatíveis
<a name="emr-ranger-trino-features"></a>

O plug-in Apache Ranger para Trino no Amazon EMR oferece suporte a todos os recursos do mecanismo de consulta Trino, que é protegido por um controle de acesso refinado. Isso inclui controles de acesso em nível de banco de dados, de tabela e de coluna, filtragem de linhas e mascaramento de dados. As políticas do Apache Ranger podem incluir políticas de concessão e políticas de negação para usuários e grupos. Os eventos de auditoria também são enviados aos CloudWatch registros.

## Instalação da configuração de serviço
<a name="emr-ranger-trino-service-config"></a>

A instalação da definição de serviço Trino requer que o servidor Ranger Admin esteja configurado. Para configurar o servidor Ranger Admin, consulte [Configure um servidor Ranger Admin para integração com o Amazon EMR](emr-ranger-admin.md).

Siga estas etapas para instalar a definição de serviço do Trino.

1. SSH no servidor Apache Ranger Admin.

   ```
   ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal
   ```

   

1. Desinstale o plug-in do servidor Presto, se houver. Execute o comando a seguir. Se isso ocorrer com o erro “Serviço não encontrado”, significa que o plug-in do servidor Presto não foi instalado no servidor. Prossiga para a próxima etapa.

   ```
   curl -f -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X DELETE -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/name/presto'
   ```

1. Baixe a definição de serviço e o plug-in do servidor Apache Ranger Admin. Em um diretório temporário, baixe a definição de serviço. Essa definição de serviço é compatível com as versões Ranger 2.x.

   ```
   wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-trino.json
   ```

1. Registre a definição de serviço do Apache Trino para o Amazon EMR.

   ```
   curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-trino.json \
   -H "Accept: application/json" \
   -H "Content-Type: application/json" \
   -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'
   ```

   Se esse comando for executado com êxito, você verá um novo serviço na IU do Ranger Admin chamado `TRINO`, conforme mostrado na imagem.  
![\[O Ranger Admin cria o serviço.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-create-service-trino.png)

1. Crie uma instância da aplicação `TRINO`, inserindo as informações a seguir.

   **Nome do serviço**: o nome do serviço que você usará. O valor sugerido é `amazonemrtrino`. Anote esse nome de serviço, pois ele será necessário ao criar uma configuração de segurança do Amazon EMR.

   **Nome de exibição**: o nome a ser exibido para a instância. O valor sugerido é `amazonemrtrino`.  
![\[Nome de exibição do Ranger Admin.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-display-name-trino.png)

   **jdbc. driver. ClassName**: O nome da classe JDBC para conectividade Trino. Você pode usar o valor padrão.

   **jdbc.url**: a string de conexão JDBC a ser usada ao se conectar ao coordenador Trino.

   **Nome comum para certificado:** o campo CN dentro do certificado usado para se conectar ao servidor de administração com base em um plug-in cliente. Esse valor deve corresponder ao campo CN do certificado TLS que foi criado para o plug-in.  
![\[Nome comum do Ranger Admin.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-common-name-trino.png)

   Observe que o certificado TLS para o plug-in deveria ter sido registrado no armazenamento confiável do servidor Ranger Admin. Para obter mais informações, consulte [TLS certificates](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ranger-admin-tls.html).

## Criar políticas do Trino
<a name="emr-ranger-trino-create-policies"></a>

Ao criar uma nova política, preencha os campos a seguir.

**Nome da política**: o nome da política.

**Rótulo de política**: um rótulo que você pode colocar na política.

**Catálogo**: o catálogo ao qual a política se aplica. O curinga “\$1” representa todos os catálogos.

**Esquema**: os esquemas aos quais a política se aplica. O curinga “\$1” representa todos os esquemas.

**Tabela**: as tabelas às quais a política se aplica. O caractere curinga “\$1” representa todas as tabelas.

**Coluna**: as colunas às quais a política se aplica. O caractere curinga “\$1” representa todas as colunas.

**Descrição**: uma descrição da política.

Há outros tipos de políticas para o **usuário Trino** (para acesso à representação do usuário), a **propriedade do sistema/sessão Trino** (para alterar o sistema do mecanismo ou as propriedades da sessão), **funções/procedimentos** (para permitir chamadas de função ou procedimento) e o **URL** (para conceder acesso de leitura/gravação ao mecanismo em locais de dados).

![\[O Ranger Admin cria detalhes da política.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-create-policy-details-trino.png)


Para conceder permissões a usuários e grupos específicos, insira os usuários e grupos. Também é possível especificar exclusões para condições de **permissão** e **negação**.

![\[Os detalhes da política do Ranger Admin permitem condições de negação.\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions-trino.png)


Após especificar as condições de permitir e negar, escolha **Salvar**.

## Considerações
<a name="emr-ranger-trino-considerations"></a>

Ao criar políticas do Trino no Apache Ranger, atente para algumas considerações sobre o uso.

**Servidor de metadados Hive**

O servidor de metadados Hive só pode ser acessado por mecanismos confiáveis, especificamente o mecanismo Trino, para proteção contra acesso não autorizado. O servidor de metadados Hive também é acessado por todos os nós do cluster. A porta 9083 necessária fornece acesso de todos os nós ao nó principal.

**Autenticação**

Por padrão, o Trino é configurado para se autenticar usando Kerberos conforme definido na configuração de segurança do Amazon EMR.

**A criptografia em trânsito é obrigatória**

O plug-in Trino exige que a criptografia em trânsito esteja habilitada na configuração de segurança do Amazon EMR. Para ativar a criptografia, consulte [Criptografia em trânsito](emr-data-encryption-options.md#emr-encryption-intransit).

## Limitações
<a name="emr-ranger-trino-limitations"></a>

Estas são as limitações atuais do plug-in Trino:
+ O servidor Ranger Admin não oferece suporte ao preenchimento automático.