

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Complementos Apache Ranger para escenarios de integración de Amazon EMR
<a name="emr-ranger-plugins"></a>

Los complementos de Apache Ranger validan el acceso de un usuario según las políticas de autorización definidas en el servidor de administración de políticas de Apache Ranger.

**Topics**
+ [

# Complemento de Apache Hive para la integración de Ranger con Amazon EMR
](emr-ranger-hive.md)
+ [

# Complemento de Apache Spark para la integración de Ranger con Amazon EMR
](emr-ranger-spark.md)
+ [

# Complemento EMRFS S3 para la integración de Ranger con Amazon EMR
](emr-ranger-emrfs.md)
+ [

# Complemento Trino para la integración de Ranger con Amazon EMR
](emr-ranger-trino.md)

# Complemento de Apache Hive para la integración de Ranger con Amazon EMR
<a name="emr-ranger-hive"></a>

Apache Hive es un popular motor de ejecución dentro del ecosistema Hadoop. Amazon EMR proporciona un complemento de Apache Ranger para poder proporcionar controles de acceso detallados para Hive. El complemento es compatible con la versión 2.0 y posteriores del servidor de Apache Ranger Admin de código abierto.

**Topics**
+ [

## Características admitidas
](#emr-ranger-supported-features)
+ [

## Instalación de la configuración del servicio
](#emr-ranger-hive-service-config)
+ [

## Consideraciones
](#emr-ranger-hive-considerations)
+ [

## Limitaciones
](#emr-ranger-hive-limitations)

## Características admitidas
<a name="emr-ranger-supported-features"></a>

El complemento Apache Ranger para Hive en EMR admite todas las funciones del complemento de código abierto, que incluye controles de acceso a bases de datos, tablas y columnas, así como el filtrado de filas y el enmascaramiento de datos. Para ver una tabla de comandos de Hive y los permisos de Ranger asociados, consulte [Hive commands to Ranger permission mapping](https://cwiki.apache.org/confluence/display/RANGER/Hive+Commands+to+Ranger+Permission+Mapping).

## Instalación de la configuración del servicio
<a name="emr-ranger-hive-service-config"></a>

El complemento Apache Hive es compatible con la definición de servicio de Hive existente en Apache Hive Hadoop SQL.

![\[Definición de servicio de Apache Hive para Hadoop SQL.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger_service_mgr.png)


Si no tiene una instancia del servicio en Hadoop SQL, como se muestra arriba, puede crear una. Haga clic en el signo **\$1** situado junto a Hadoop SQL.

1. **Nombre del servicio (si se muestra)**: ingrese el nombre del servicio. El valor sugerido es **amazonemrhive**. Anote el nombre de este servicio: es necesario al crear una configuración de seguridad de EMR.

1. **Nombre público**: ingrese el nombre que se mostrará para el servicio. El valor sugerido es **amazonemrhive**.

![\[Detalles del servicio Apache Hive para Hadoop SQL.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger_create_service.png)


Las propiedades de Apache Hive Config se utilizan para establecer una conexión con su servidor Apache Ranger Admin con un HiveServer 2 para implementar el autocompletado al crear políticas. No es necesario que las siguientes propiedades sean precisas si no tiene un proceso persistente de HiveServer 2 y se pueden rellenar con cualquier información.
+ **Nombre de usuario**: introduzca un nombre de usuario para la conexión JDBC a una instancia de HiveServer 2 instancias.
+ **Contraseña**: ingrese la contraseña del nombre de usuario anterior.
+ **jdbc.driver. ClassName**: Introduzca el nombre de la clase JDBC para la conectividad con Apache Hive. Puede utilizar el valor predeterminado.
+ **jdbc.url**: Introduzca la cadena de conexión JDBC que se utilizará al conectarse a 2. HiveServer
+ **Nombre común del certificado:** el campo CN (Nombre común) del certificado que se utiliza para conectarse al servidor de administración desde un complemento cliente. Este valor debe coincidir con el campo CN del certificado TLS que se creó para el complemento.

![\[Propiedades de configuración del servicio Apache Hive.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger_config_props.png)


El botón **Probar conexión** comprueba si los valores anteriores se pueden utilizar para conectarse correctamente a la instancia 2. HiveServer Una vez que el servicio se haya creado correctamente, el administrador de servicios debería tener el siguiente aspecto:

![\[Conectado a la instancia HiveServer 2\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger_config_connected.png)


## Consideraciones
<a name="emr-ranger-hive-considerations"></a>

**Servidor de metadatos de Hive**

Solo motores fiables, específicamente Hive y `emr_record_server`, pueden acceder al servidor de metadatos de Hive para proteger al usuario del acceso no autorizado. Todos los nodos del clúster también acceden al servidor de metadatos de Hive. El puerto 9083 requerido proporciona a todos los nodos acceso al nodo principal.

**Autenticación**

De forma predeterminada, Apache Hive está configurado para autenticarse mediante Kerberos tal como se configuró en la configuración de seguridad de EMR. HiveServer2 también se puede configurar para autenticar a los usuarios mediante 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 obtener más información.

## Limitaciones
<a name="emr-ranger-hive-limitations"></a>

Las siguientes son las limitaciones actuales del complemento Apache Hive en Amazon EMR 5.x:
+ No se admiten roles de Hive de momento. No se admiten las instrucciones Grant ni Revoke.
+ No se admite Hive CLI. JDBC/Beeline es la única forma autorizada de conectar Hive.
+ `hive.server2.builtin.udf.blacklist`la configuración debe rellenarse con lo UDFs que considere inseguro.

# Complemento de Apache Spark para la integración de Ranger con Amazon EMR
<a name="emr-ranger-spark"></a>

Amazon EMR ha integrado el EMR RecordServer para proporcionar un control de acceso detallado para SparkSQL. El EMR es un proceso privilegiado que RecordServer se ejecuta en todos los nodos de un clúster habilitado para Apache Ranger. Cuando un controlador o ejecutor de Spark ejecuta una sentencia de SparkSQL, todas las solicitudes de metadatos y datos pasan por. RecordServer Para obtener más información sobre EMR RecordServer, consulte la [Componentes de Amazon EMR para su uso con Apache Ranger](emr-ranger-components.md) página.

**Topics**
+ [

## Características admitidas
](#emr-ranger-spark-supported-features)
+ [

## Reimplementación de la definición de servicio para usar las instrucciones INSERT, ALTER o DDL
](#emr-ranger-spark-redeploy-service-definition)
+ [

## Instalación de la definición de servicio
](#emr-ranger-spark-install-servicedef)
+ [

## Creación de políticas de Spark SQL
](#emr-ranger-spark-create-sparksql)
+ [

## Consideraciones
](#emr-ranger-spark-considerations)
+ [

## Limitaciones
](#emr-ranger-spark-limitations)

## Características admitidas
<a name="emr-ranger-spark-supported-features"></a>


| Acción SQL statement/Ranger  | STATUS | Versión de EMR compatible | 
| --- | --- | --- | 
|  SELECT  |   compatible  |  A partir de la 5.32  | 
|  SHOW DATABASES  |   compatible  |  A partir de la 5.32  | 
|  SHOW COLUMNS  |   compatible  |  A partir de la 5.32  | 
|  SHOW TABLES  |   compatible  |  A partir de la 5.32  | 
|  MOSTRAR LAS PROPIEDADES DE LA TABLA  |   compatible  |  A partir de la 5.32  | 
|  DESCRIBE TABLE  |   compatible  |  A partir de la 5.32  | 
|  INSERT OVERWRITE  |   compatible  |  A partir de las 5.34 y 6.4  | 
| INSERT INTO |  compatible | A partir de las 5.34 y 6.4 | 
|  ALTER TABLE  |   compatible  |  A partir de la 6.4  | 
|  CREATE TABLE  |   compatible  |  A partir de las 5.35 y 6.7  | 
|  CREATE DATABASE  |   compatible  |  A partir de las 5.35 y 6.7  | 
|  DROP TABLE  |   compatible  |  A partir de las 5.35 y 6.7  | 
|  DROP DATABASE  |   compatible  |  A partir de las 5.35 y 6.7  | 
|  DROP VIEW  |   compatible  |  A partir de las 5.35 y 6.7  | 
|  CREATE VIEW  |  No es compatible  |    | 

Se admiten las siguientes características al usar Spark SQL:
+ Control de acceso detallado a las tablas del metaalmacén de Hive, y las políticas se pueden crear para bases de datos, tablas y columnas.
+ Las políticas de Apache Ranger pueden incluir políticas de concesión y de denegación a usuarios y grupos.
+ Los eventos de auditoría se envían a CloudWatch los registros.

## Reimplementación de la definición de servicio para usar las instrucciones INSERT, ALTER o DDL
<a name="emr-ranger-spark-redeploy-service-definition"></a>

**nota**  
A partir de Amazon EMR 6.4, puede usar Spark SQL con las instrucciones: INSERT INTO, INSERT OVERWRITE o ALTER TABLE. A partir de Amazon EMR 6.7, puede usar Spark SQL para crear o eliminar bases de datos y tablas. Si ya tiene una instalación en el servidor de Apache Ranger con las definiciones de servicio de Apache Spark implementadas, utilice el siguiente código para volver a implementar las definiciones de servicio.  

```
# 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>'
```

## Instalación de la definición de servicio
<a name="emr-ranger-spark-install-servicedef"></a>

La instalación de la definición de servicio Apache Spark de EMR requiere la configuración del servidor de Ranger Admin. Consulte [Configure un servidor Ranger Admin para integrarlo con Amazon EMR](emr-ranger-admin.md).

Siga estos pasos para instalar la definición de servicio de Apache Spark:

**Paso 1: inicie sesión mediante SSH en el servidor de Apache Ranger Admin**

Por ejemplo:

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

**Paso 2: descargue la definición de servicio y el complemento del servidor de Apache Ranger Admin**

En un directorio temporal, descargue la definición de servicio. Esta definición de servicio es compatible con las versiones 2.x de Ranger.

```
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
```

**Paso 3: instale el complemento 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
```

**Paso 4: registre la definición de servicio de 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'
```

Si este comando se ejecuta correctamente, verá un nuevo servicio en la IU de Ranger Admin denominado “AMAZON-EMR-SPARK”, como se muestra en la siguiente imagen (se muestra la versión 2.0 de Ranger).

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


**Paso 5: Crear una instancia de la AMAZON-EMR-SPARK aplicación**

**Nombre del servicio (si se muestra):** el nombre del servicio que se utilizará. El valor sugerido es **amazonemrspark**. Anote el nombre de este servicio, ya que será necesario al crear una configuración de seguridad de EMR.

**Nombre público:** el nombre que se mostrará para esta instancia. El valor sugerido es **amazonemrspark**.

**Nombre común del certificado:** el campo CN (Nombre común) del certificado que se utiliza para conectarse al servidor de administración desde un complemento cliente. Este valor debe coincidir con el campo CN del certificado TLS que se creó para el complemento.

![\[Servicio de creación de Ranger Admin.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-create-service.png)


**nota**  
El certificado TLS de este complemento debería haberse registrado en el almacén de confianza del servidor Ranger Admin. Consulte [Certificados TLS para la integración de Apache Ranger con Amazon EMR](emr-ranger-admin-tls.md) para obtener más detalles.

## Creación de políticas de Spark SQL
<a name="emr-ranger-spark-create-sparksql"></a>

Al crear una nueva política, los campos que hay que rellenar son:

**Nombre de la política**: el nombre de la política.

**Etiqueta de la política**: una etiqueta que puede poner en esta política.

**Base de datos**: la base de datos a la que se aplica esta política. El comodín “\$1” representa todas las bases de datos.

**Tabla**: las tablas a las que se aplica esta política. El comodín “\$1” representa todas las tablas.

**Columna de EMR Spark**: las columnas a las que se aplica esta política. El comodín “\$1” representa todas las columnas.

**Descripción**: una descripción de esta política.

![\[Ranger Admin crea los detalles de la política de Spark SQL.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-create-policy-details.png)


Para especificar los usuarios y grupos, ingrese los usuarios y grupos que aparecen a continuación para conceder los permisos. También puede especificar exclusiones para las condiciones de **autorización** y **denegación**.

![\[Los detalles de la política de Spark SQL de Ranger Admin permiten condiciones.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions.png)


Tras especificar las condiciones de autorización y denegación, haga clic en **Guardar**.

## Consideraciones
<a name="emr-ranger-spark-considerations"></a>

Cada nodo del clúster de EMR debe poder conectarse al nodo principal en el puerto 9083.

## Limitaciones
<a name="emr-ranger-spark-limitations"></a>

Las siguientes son las limitaciones actuales del complemento Apache Spark:
+ Servidor de registros siempre se conectará al HMS que se ejecute en un clúster de Amazon EMR. Configure el HMS para que se conecte al modo remoto, si es necesario. No debe incluir valores de configuración en el archivo de configuración Hive-site.xml de Apache Spark.
+ Las tablas creadas con fuentes de datos de Spark en CSV o Avro no se pueden leer con EMR. RecordServer Use Hive para crear y escribir datos, y lea con Record.
+ Las tablas de Delta Lake, Hudi e Iceberg no son compatibles.
+ Los usuarios tienen que tener acceso a la base de datos predeterminada. Este es un requisito para el uso de Apache Spark.
+ El servidor de Ranger Admin no admite la característica de autocompletar.
+ El complemento SparkSQL para Amazon EMR no admite filtros de filas ni enmascaramiento de datos.
+ Al utilizar ALTER TABLE con Spark SQL, la ubicación de una partición debe ser el directorio secundario de la ubicación de una tabla. No se admite la inserción de datos en una partición cuya ubicación sea diferente de la ubicación de la tabla.

# Complemento EMRFS S3 para la integración de Ranger con Amazon EMR
<a name="emr-ranger-emrfs"></a>

Para facilitar los controles de acceso a los objetos de S3 en un clúster multiusuario, el complemento EMRFS S3 proporciona controles de acceso a los datos de S3 cuando se accede a ellos a través de EMRFS. Puede permitir el acceso a los recursos de usuarios y grupos de S3.

Para ello, cuando su aplicación intente acceder a los datos de S3, EMRFS envía una solicitud de credenciales al proceso del agente secreto, donde la solicitud se autentica y autoriza mediante un complemento de Apache Ranger. Si la solicitud se autoriza, el agente secreto asume el rol de IAM para los motores Apache Ranger con una política restringida para generar credenciales que solo tienen acceso a la política de Ranger que permitió el acceso. A continuación, las credenciales se devuelven a EMRFS para acceder a S3.

**Topics**
+ [

## Características admitidas
](#emr-ranger-emrfs-features)
+ [

## Instalación de la configuración del servicio
](#emr-ranger-emrfs-service-config)
+ [

## Creación de políticas de EMRFS S3
](#emr-ranger-emrfs-create-policies)
+ [

## Notas de uso de las políticas de EMRFS S3
](#emr-ranger-emrfs-considerations)
+ [

## Limitaciones
](#emr-ranger-emrfs-limitations)

## Características admitidas
<a name="emr-ranger-emrfs-features"></a>

El complemento EMRFS S3 proporciona autorización de almacenamiento. Se pueden crear políticas para proporcionar acceso a los usuarios y grupos a los buckets y prefijos de S3. La autorización se realiza únicamente para EMRFS.

## Instalación de la configuración del servicio
<a name="emr-ranger-emrfs-service-config"></a>

Para instalar la definición del servicio EMRFS, debe configurar el servidor Ranger Admin. Para configurar el servidor, consulte [Configure un servidor Ranger Admin para integrarlo con Amazon EMR](emr-ranger-admin.md).

Siga estos pasos para instalar la definición de servicio de EMRFS.

**Paso 1: inicie sesión mediante SSH en el servidor de Apache Ranger Admin**.

Por ejemplo:

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

**Paso 2: descargue la definición del servicio de EMRFS**.

En un directorio temporal, descargue la definición de servicio de Amazon EMR. Esta definición de servicio es compatible con las versiones 2.x de Ranger.

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

**Paso 3: registre la definición de servicio de EMRFS S3**.

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

Si este comando se ejecuta correctamente, verá un nuevo servicio en la IU de Ranger Admin denominado “AMAZON-EMR-S3”, como se muestra en la siguiente imagen (se muestra la versión 2.0 de Ranger).

![\[Ranger Admin crea el servicio EMRFS S3.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-create-service-EMRFS.png)


**Paso 4: Crea una instancia** de la aplicación. AMAZON-EMR-EMRFS

Cree una instancia de la definición de servicio.
+ Haga clic en el **signo \$1** situado junto a AMAZON-EMR-EMRFS.

Rellene los siguientes campos:

**Nombre del servicio (si se muestra)**: el valor sugerido es **amazonemrs3**. Anote el nombre de este servicio, ya que será necesario al crear una configuración de seguridad de EMR. 

**Nombre público**: el nombre que se muestra para este servicio. El valor sugerido es **amazonemrs3**.

**Nombre común del certificado:** el campo CN (Nombre común) del certificado que se utiliza para conectarse al servidor de administración desde un complemento cliente. Este valor debe coincidir con el campo CN del certificado TLS que se creó para el complemento.

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


**nota**  
El certificado TLS de este complemento debería haberse registrado en el almacén de confianza del servidor Ranger Admin. Consulte [Certificados TLS para la integración de Apache Ranger con Amazon EMR](emr-ranger-admin-tls.md) para obtener más detalles.

Cuando se crea el servicio, el administrador de servicios incluye “AMAZON-EMR-EMRFS”, como se muestra en la siguiente imagen.

![\[Ranger Admin muestra el nuevo servicio EMRFS S3.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-new-service-EMRFS.png)


## Creación de políticas de EMRFS S3
<a name="emr-ranger-emrfs-create-policies"></a>

Para crear una nueva política en la página **Crear política** del administrador de servicios, rellene los siguientes campos.

**Nombre de la política**: el nombre de la política.

**Etiqueta de la política**: una etiqueta que puede poner en esta política.

**Recurso de S3**: un recurso que comienza con el bucket y el prefijo opcional. Consulte [Notas de uso de las políticas de EMRFS S3](#emr-ranger-emrfs-considerations) para obtener más información sobre las prácticas recomendadas. Los recursos del servidor Ranger Admin no deben contener **s3://**, **s3a://** ni **s3n://**.

![\[Ranger Admin muestra Crear política para el servicio EMRFS S3.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-create-policy-EMRFS.png)


Puede especificar los usuarios y grupos a los que conceder permisos. También puede especificar exclusiones para las condiciones de **autorización** y **denegación**.

![\[El administrador de Ranger muestra user/group los permisos para la política de EMRFS S3.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-permissions-EMRFS.png)


**nota**  
Se permite un máximo de tres recursos para cada política. Agregar más de tres recursos puede provocar un error cuando se usa esta política en un clúster de EMR. Al agregar más de tres políticas, se muestra un recordatorio sobre el límite de la política.

## Notas de uso de las políticas de EMRFS S3
<a name="emr-ranger-emrfs-considerations"></a>

Al crear políticas de S3 en Apache Ranger, hay que tener en cuenta algunas consideraciones de uso.

### Permisos para varios objetos de S3
<a name="emr-ranger-emrfs-considerations-s3objects"></a>

Puede utilizar políticas recursivas y expresiones comodín para conceder permisos a varios objetos de S3 con prefijos comunes. Las políticas recursivas otorgan permisos a todos los objetos con un prefijo común. Las expresiones comodín seleccionan varios prefijos. En conjunto, otorgan permisos a todos los objetos con varios prefijos comunes, como se muestra en los ejemplos siguientes.

**Example Uso de una política recursiva**  
Supongamos que desea obtener permisos para enumerar todos los archivos Parquet de un bucket de S3 organizados de la siguiente manera.  

```
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
```
En primer lugar, considere los archivos Parquet con el prefijo `s3://sales-reports/americas/year=2000`. Puede conceder GetObject permisos a todos ellos de dos maneras:  
**Uso de políticas no recursivas**: una opción es utilizar dos políticas no recursivas independientes, una para el directorio y otra para los archivos.   
La primera política concede permiso al prefijo `s3://sales-reports/americas/year=2020` (no hay ningún `/` final).  

```
- S3 resource = "sales-reports/americas/year=2000"
- permission = "GetObject"
- user = "analyst"
```
La segunda política utiliza una expresión comodín para conceder permisos a todos los archivos con prefijo `sales-reports/americas/year=2020/` (tenga en cuenta el `/` final).  

```
- S3 resource = "sales-reports/americas/year=2020/*"
- permission = "GetObject"
- user = "analyst"
```
**Uso de una política recursiva**: una alternativa más práctica consiste en utilizar una única política recursiva y conceder permisos recursivos al prefijo.  

```
 - S3 resource = "sales-reports/americas/year=2020"
 - permission = "GetObject"
 - user = "analyst"
 - is recursive = "True"
```
Hasta ahora, solo se han incluido los archivos Parquet con el prefijo `s3://sales-reports/americas/year=2000`. Ahora también puede incluir los archivos Parquet con un prefijo diferente, `s3://sales-reports/americas/year=2020`, en la misma política recursiva introduciendo una expresión comodín como la siguiente.  

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

### Políticas PutObject y DeleteObject permisos
<a name="emr-ranger-emrfs-considerations-putobject"></a>

La redacción de políticas `PutObject` y `DeleteObject` permisos para los archivos en EMRFS requiere un cuidado especial porque, a diferencia de GetObject los permisos, requieren la concesión de permisos recursivos adicionales al prefijo.

**Example Políticas y permisos PutObject DeleteObject**  
Por ejemplo, para eliminar el archivo no solo se `annual-summary.parquet` requiere un DeleteObject permiso para acceder al archivo real.  

```
- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet"
- permission = "DeleteObject"
- user = "analyst"
```
También requiere una política que conceda permisos `PutObject` y `GetObject` recursivos a su prefijo.  
Del mismo modo, modificar el archivo `annual-summary.parquet` no solo requiere un permiso `PutObject` para ese archivo concreto.  

```
- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet"
- permission = "PutObject"
- user = "analyst"
```
También requiere una política que conceda permisos `GetObject` recursivos a su prefijo.  

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

### Comodines en las políticas
<a name="emr-ranger-emrfs-considerations-wildcards"></a>

Hay dos áreas en las que se pueden especificar los caracteres comodín. Al especificar un recurso de S3, los caracteres “\$1” y “?” se puede utilizar. El asterisco “\$1” sustituye una ruta de S3 y coincide con todo lo que aparece después del prefijo. Tome la siguiente política como ejemplo:

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

Esto coincide con las siguientes rutas de S3.

```
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
```

El comodín “?” coincide con cualquier carácter individual. Tome la siguiente política como ejemplo:

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

Esto coincide con las siguientes rutas de S3.

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

### Comodines en los usuarios
<a name="emr-ranger-emrfs-considerations-wildcards-in-users"></a>

Hay dos caracteres comodín integrados al asignar usuarios para proporcionar acceso a los usuarios. El primero es el comodín “\$1USER\$1”, que proporciona acceso a todos los usuarios. El segundo comodín es “\$1OWNER\$1”, que proporciona acceso al propietario de un objeto concreto o directamente. Sin embargo, actualmente no se admite el comodín “\$1USER\$1”.

## Limitaciones
<a name="emr-ranger-emrfs-limitations"></a>

Las siguientes son las limitaciones actuales del complemento EMRFS S3:
+ Las políticas de Apache Ranger pueden tener como máximo tres políticas.
+ El acceso a S3 debe realizarse a través de EMRFS y se puede utilizar con aplicaciones relacionadas con Hadoop. No se admite lo siguiente:

  ― Bibliotecas Boto3

  - AWS SDK y CLI de AWK

  ― Conector de código abierto S3A
+ No se admiten las políticas de denegación de Apache Ranger.
+ Actualmente, no se admiten las operaciones en S3 con claves con cifrado CSE-KMS.
+ No se admite la compatibilidad entre regiones.
+ La característica Zona de seguridad de Apache Ranger no es compatible. Las restricciones de control de acceso definidas mediante la característica Zona de seguridad no se aplican a los clústeres de Amazon EMR.
+ El usuario de Hadoop no genera ningún evento de auditoría, ya que Hadoop siempre accede al perfil de instancia de EC2.
+ Se recomienda deshabilitar la visión de consistencia de Amazon EMR. S3 de tiene un alto grado de consistencia, por lo que ya no es necesario. Consulte [Amazon S3 strong consistency](https://aws.amazon.com/s3/consistency/) para obtener más información.
+ El complemento EMRFS S3 realiza numerosas llamadas STS. Se recomienda realizar pruebas de carga en una cuenta de desarrollo y supervisar el volumen de llamadas STS. También se recomienda realizar una solicitud de STS para aumentar los límites del AssumeRole servicio.
+ El servidor Ranger Admin no admite la característica de autocompletar.

# Complemento Trino para la integración de Ranger con Amazon EMR
<a name="emr-ranger-trino"></a>

Trino (anteriormente PrestoSQL) es un motor de consultas SQL que puede utilizar para ejecutar consultas en orígenes de datos como HDFS, almacenamiento de objetos, bases de datos relacionales y bases de datos NoSQL. Elimina la necesidad de migrar los datos a una ubicación central y permite consultar estos datos desde cualquier lugar donde estén. Amazon EMR proporciona un complemento de Apache Ranger para proporcionar controles de acceso detallados para Trino. El complemento es compatible con la versión 2.0 y posteriores del servidor de Apache Ranger Admin de código abierto.

**Topics**
+ [

## Características admitidas
](#emr-ranger-trino-features)
+ [

## Instalación de la configuración del servicio
](#emr-ranger-trino-service-config)
+ [

## Creación de políticas de Trino
](#emr-ranger-trino-create-policies)
+ [

## Consideraciones
](#emr-ranger-trino-considerations)
+ [

## Limitaciones
](#emr-ranger-trino-limitations)

## Características admitidas
<a name="emr-ranger-trino-features"></a>

El complemento Apache Ranger para Trino en Amazon EMR admite todas las funciones del motor de consultas de Trino, que están protegidas por un control de acceso detallado. Esto incluye controles de acceso a bases de datos, tablas y columnas, así como el filtrado de filas y el enmascaramiento de datos. Las políticas de Apache Ranger pueden incluir políticas de concesión y de denegación a usuarios y grupos. Los eventos de auditoría también se envían a CloudWatch los registros.

## Instalación de la configuración del servicio
<a name="emr-ranger-trino-service-config"></a>

La instalación de la definición de servicio de Trino requiere la configuración del servidor de Ranger Admin. Para configurar el servidor de Ranger Admin, consulte [Configure un servidor Ranger Admin para integrarlo con Amazon EMR](emr-ranger-admin.md).

Siga estos pasos para instalar la definición de servicio de Trino.

1. Inicie sesión mediante SSH en el servidor de Apache Ranger Admin.

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

   

1. Desinstale el complemento del servidor Presto, si existe. Ejecute el comando siguiente. Si se produce un error “Servicio no encontrado”, significa que el complemento del servidor Presto no estaba instalado en su servidor. Continúe con el siguiente paso.

   ```
   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. Descargue la definición de servicio y el complemento del servidor de Apache Ranger Admin. En un directorio temporal, descargue la definición de servicio. Esta definición de servicio es compatible con las versiones 2.x de Ranger.

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

1. Registre la definición de servicio de Apache Trino para 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'
   ```

   Si este comando se ejecuta correctamente, verá un nuevo servicio en la IU de Ranger Admin denominado `TRINO`, como se muestra en la siguiente imagen.  
![\[Servicio de creación de Ranger Admin.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-create-service-trino.png)

1. Cree una instancia de la aplicación `TRINO` e ingrese la siguiente información.

   **Nombre del servicio**: el nombre del servicio que utilizará. El valor sugerido es `amazonemrtrino`. Anote el nombre de este servicio, ya que será necesario al crear una configuración de seguridad de Amazon EMR.

   **Nombre público:** el nombre que se mostrará para esta instancia. El valor sugerido es `amazonemrtrino`.  
![\[Nombre público de Ranger Admin.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-display-name-trino.png)

   **jdbc.driver. ClassName**: El nombre de clase de la clase JDBC para la conectividad Trino. Puede utilizar el valor predeterminado.

   **jdbc.url:** la cadena de conexión JDBC que se utilizará al conectarse al coordinador de Trino.

   **Nombre común del certificado:** el campo CN (Nombre común) del certificado que se utiliza para conectarse al servidor de administración desde un complemento cliente. Este valor debe coincidir con el campo CN del certificado TLS que se creó para el complemento.  
![\[Nombre común de Ranger Admin.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-common-name-trino.png)

   Tenga en cuenta que el certificado TLS de este complemento debería haberse registrado en el almacén de confianza del servidor de Ranger Admin. Para obtener más información, consulte [Certificados TLS](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ranger-admin-tls.html).

## Creación de políticas de Trino
<a name="emr-ranger-trino-create-policies"></a>

Cuando cree una nueva política, rellena los siguientes campos.

**Nombre de la política**: el nombre de la política.

**Etiqueta de la política**: una etiqueta que puede poner en esta política.

**Catálogo**: el catálogo al que se aplica esta política. El comodín “\$1” representa todos los catálogos.

**Esquema**: los esquemas a los que se aplica esta política. El comodín “\$1” representa todos los esquemas.

**Tabla**: las tablas a las que se aplica esta política. El comodín “\$1” representa todas las tablas.

**Columna**: las columnas a las que se aplica esta política. El comodín “\$1” representa todas las columnas.

**Descripción**: una descripción de esta política.

Existen otros tipos de políticas para **Usuario de Trino** (para el acceso suplantando al usuario), **Propiedad del sistema o sesión de Trino** (para modificar las propiedades del sistema o la sesión del motor), **Funciones/Procedimientos** (para permitir las llamadas a funciones o procedimientos) y **URL** (para conceder acceso de lectura/escritura al motor en las ubicaciones de los datos).

![\[Ranger Admin crea los detalles de la política.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-create-policy-details-trino.png)


Para conceder permisos a usuarios y grupos específicos, ingrese los usuarios y grupos. También puede especificar exclusiones para las condiciones de **autorización** y **denegación**.

![\[Los detalles de la política de Ranger Admin permiten condiciones de denegación.\]](http://docs.aws.amazon.com/es_es/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions-trino.png)


Tras especificar las condiciones de autorización y denegación, elija **Guardar**.

## Consideraciones
<a name="emr-ranger-trino-considerations"></a>

Al crear políticas de Trino en Apache Ranger, hay que tener en cuenta algunas consideraciones de uso.

**Servidor de metadatos de Hive**

Solo motores fiables, específicamente el motor Trino, pueden acceder al servidor de metadatos de Hive para proteger al usuario del acceso no autorizado. Todos los nodos del clúster también acceden al servidor de metadatos de Hive. El puerto 9083 requerido proporciona a todos los nodos acceso al nodo principal.

**Autenticación**

De forma predeterminada, Trino está configurado para autenticarse mediante Kerberos, tal y como se indicó en la configuración de seguridad de Amazon EMR.

**Cifrado en tránsito obligatorio**

El complemento Trino requiere que tenga activado el cifrado en tránsito en la configuración de seguridad de Amazon EMR. Para habilitar el cifrado, consulte [Cifrado en tránsito](emr-data-encryption-options.md#emr-encryption-intransit).

## Limitaciones
<a name="emr-ranger-trino-limitations"></a>

Las siguientes son las limitaciones actuales del complemento Trino:
+ El servidor de Ranger Admin no admite la característica de autocompletar.