

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

# Plugin Apache Ranger per scenari di integrazione Amazon EMR
<a name="emr-ranger-plugins"></a>

I plug-in Apache Ranger convalidano l'accesso di un utente rispetto alle policy di autorizzazione definite nel server amministratore delle policy di Apache Ranger.

**Topics**
+ [Plugin Apache Hive per l'integrazione di Ranger con Amazon EMR](emr-ranger-hive.md)
+ [Plugin Apache Spark per l'integrazione di Ranger con Amazon EMR](emr-ranger-spark.md)
+ [Plugin EMRFS S3 per l'integrazione di Ranger con Amazon EMR](emr-ranger-emrfs.md)
+ [Plugin Trino per l'integrazione di Ranger con Amazon EMR](emr-ranger-trino.md)

# Plugin Apache Hive per l'integrazione di Ranger con Amazon EMR
<a name="emr-ranger-hive"></a>

Apache Hive è un motore di esecuzione popolare all'interno dell'ecosistema Hadoop. Amazon EMR fornisce un plug-in Apache Ranger per essere in grado di fornire controlli di accesso granulare per Hive. Il plug-in è compatibile con il server open source Apache Ranger Admin versione 2.0 e successive.

**Topics**
+ [Funzionalità supportate](#emr-ranger-supported-features)
+ [Installazione della configurazione del servizio](#emr-ranger-hive-service-config)
+ [Considerazioni](#emr-ranger-hive-considerations)
+ [Limitazioni](#emr-ranger-hive-limitations)

## Funzionalità supportate
<a name="emr-ranger-supported-features"></a>

Il plug-in Apache Ranger per Hive su EMR supporta tutte le funzionalità del plug-in open source, che include database, tabella, controlli di accesso a livello di colonna, filtraggio riga e mascheramento dei dati. Per una tabella dei comandi Hive e delle autorizzazioni Ranger associate, consulta [Comandi Hive per la mappatura delle autorizzazioni Ranger](https://cwiki.apache.org/confluence/display/RANGER/Hive+Commands+to+Ranger+Permission+Mapping).

## Installazione della configurazione del servizio
<a name="emr-ranger-hive-service-config"></a>

Il plugin Apache Hive è compatibile con la definizione del servizio Hive esistente all'interno di Apache Hive Hadoop SQL.

![\[Definizione del servizio Apache Hive per Hadoop SQL.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger_service_mgr.png)


Se non disponi di un'istanza del servizio in Hadoop SQL, come mostrato sopra, puoi crearne una. Fai clic sul pulsante **\$1** accanto ad Hadoop SQL.

1. **Nome del servizio (se visualizzato)**: immetti il nome del servizio. Il valore suggerito è **amazonemrhive**. Prendi nota di questo nome del servizio: è necessario quando si crea una configurazione di sicurezza EMR.

1. **Nome visualizzato**: immetti il nome da visualizzare per il servizio. Il valore suggerito è **amazonemrhive**.

![\[Dettagli del servizio Apache Hive per Hadoop SQL.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger_create_service.png)


Le proprietà di configurazione di Apache Hive vengono utilizzate per stabilire una connessione al server di amministrazione Apache Ranger con un 2 per HiveServer implementare il completamento automatico durante la creazione delle politiche. Non è necessario che le proprietà seguenti siano accurate se non si dispone di un processo HiveServer 2 persistente e possono essere compilate con qualsiasi informazione.
+ **Nome utente**: inserisci un nome utente per la connessione JDBC a un'istanza di un'istanza HiveServer 2.
+ **Password**: inserisci la password per il nome utente sopra.
+ **jdbc.driver. ClassName**: Immettere il nome della classe JDBC per la connettività Apache Hive. Puoi utilizzare il valore predefinito.
+ **jdbc.url**: Immettere la stringa di connessione JDBC da utilizzare per la connessione a 2. HiveServer
+ **Nome comune per certificato**: il campo CN all'interno del certificato utilizzato per connettersi al server Admin da un plug-in client. Questo valore deve corrispondere al campo CN nel certificato TLS creato per il plug-in.

![\[Proprietà di configurazione del servizio Apache Hive.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger_config_props.png)


Il pulsante **Test Connection** verifica se i valori sopra riportati possono essere utilizzati per connettersi correttamente all'istanza 2. HiveServer Una volta che il servizio è stato creato correttamente, il Service Manager dovrebbe avere il seguente aspetto:

![\[Connesso all'istanza HiveServer 2\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger_config_connected.png)


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

**Server dei metadati Hive**

Il server dei metadati Hive è accessibile solo dai motori attendibili, in particolare Hive e `emr_record_server`, come misura di protezione da accessi non autorizzati. Il server dei metadati Hive è accessibile anche da tutti i nodi del cluster. La porta 9083 richiesta consente a tutti i nodi di accedere al nodo principale.

**Autenticazione**

Per impostazione predefinita, Apache Hive è configurato per l'autenticazione tramite Kerberos come configurato nella configurazione di sicurezza EMR. HiveServer2 può essere configurato per autenticare gli utenti anche tramite LDAP. Consulta [Implementazione dell'autenticazione LDAP per Hive su un cluster Amazon EMR multi-tenant](https://aws.amazon.com/blogs/big-data/implementing-ldap-authentication-for-hive-on-a-multi-tenant-amazon-emr-cluster/) per maggiori informazioni.

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

Di seguito sono riportate le attuali limitazioni per il plug-in Apache Hive su Amazon EMR 5.x:
+ I ruoli Hive non sono attualmente supportati. Le istruzioni Grant (Concedi) e Revoke (Revoca) non sono supportate.
+ L'interfaccia CLI di Hive non è supportata. JDBC/Beeline è l'unico modo autorizzato per connettere Hive.
+ `hive.server2.builtin.udf.blacklist`la configurazione deve essere compilata con UDFs ciò che ritieni non sicuro.

# Plugin Apache Spark per l'integrazione di Ranger con Amazon EMR
<a name="emr-ranger-spark"></a>

Amazon EMR ha integrato EMR per fornire un controllo granulare degli RecordServer accessi per SparkSQL. EMR RecordServer è un processo privilegiato in esecuzione su tutti i nodi di un cluster abilitato per Apache Ranger. Quando un driver o un executor Spark esegue un'istruzione SparkSQL, tutte le richieste di metadati e dati passano attraverso. RecordServer Per ulteriori informazioni su EMR RecordServer, consulta la [Componenti Amazon EMR da utilizzare con Apache Ranger](emr-ranger-components.md) pagina.

**Topics**
+ [Funzionalità supportate](#emr-ranger-spark-supported-features)
+ [Ridistribuire la definizione del servizio per utilizzare le istruzioni INSERT, ALTER o DDL](#emr-ranger-spark-redeploy-service-definition)
+ [Installazione della definizione del servizio](#emr-ranger-spark-install-servicedef)
+ [Creazione di policy SparkSQL](#emr-ranger-spark-create-sparksql)
+ [Considerazioni](#emr-ranger-spark-considerations)
+ [Limitazioni](#emr-ranger-spark-limitations)

## Funzionalità supportate
<a name="emr-ranger-spark-supported-features"></a>


| Azione SQL statement/Ranger  | STATUS | Rilascio di EMR supportato | 
| --- | --- | --- | 
|  SELECT  |  Supportata  |  A partire da 5.32  | 
|  SHOW DATABASES  |  Supportata  |  A partire da 5.32  | 
|  SHOW COLUMNS  |  Supportata  |  A partire da 5.32  | 
|  SHOW TABLES  |  Supportata  |  A partire da 5.32  | 
|  SHOW TABLE PROPERTIES (MOSTRA PROPRIETÀ TABELLA)  |  Supportata  |  A partire da 5.32  | 
|  DESCRIBE TABLE  |  Supportata  |  A partire da 5.32  | 
|  INSERT OVERWRITE  |  Supportata  |  A partire da 5.34 e 6.4  | 
| INSERT INTO | Supportata | A partire da 5.34 e 6.4 | 
|  ALTER TABLE  |  Supportata  |  A partire da 6.4  | 
|  CREATE TABLE  |  Supportata  |  A partire da 5.35 e 6.7  | 
|  CREATE DATABASE  |  Supportata  |  A partire da 5.35 e 6.7  | 
|  DROP TABLE  |  Supportata  |  A partire da 5.35 e 6.7  | 
|  DROP DATABASE  |  Supportata  |  A partire da 5.35 e 6.7  | 
|  DROP VIEW  |  Supportata  |  A partire da 5.35 e 6.7  | 
|  CREATE VIEW  |  Non supportato  |    | 

Quando si utilizza SparkSQL sono supportate le seguenti caratteristiche:
+ Controllo granulare degli accessi sulle tabelle all'interno del metastore Hive; le policy possono essere create a livello di database, tabella e colonna.
+ Le policy di Apache Ranger possono includere policy di concessione e di negazione a utenti e gruppi.
+ Gli eventi di controllo vengono inviati ai CloudWatch registri.

## Ridistribuire la definizione del servizio per utilizzare le istruzioni INSERT, ALTER o DDL
<a name="emr-ranger-spark-redeploy-service-definition"></a>

**Nota**  
A partire da Amazon EMR 6.4, puoi utilizzare Spark SQL con le istruzioni: INSERT INTO, INSERT OVERWRITE o ALTER TABLE. A partire da Amazon EMR 6.7, puoi utilizzare Spark SQL per creare o rimuovere database e tabelle. Se si dispone di un'installazione esistente sul server Apache Ranger con le definizioni del servizio Apache Spark implementate, utilizzare il codice seguente per ridistribuire le definizioni del servizio.  

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

## Installazione della definizione del servizio
<a name="emr-ranger-spark-install-servicedef"></a>

L'installazione della definizione del servizio Apache Spark di EMR richiede l'installazione del server Admin Ranger. Per informazioni, consulta [Configura un server di amministrazione Ranger per l'integrazione con Amazon EMR](emr-ranger-admin.md).

Segui queste fasi per installare la definizione del servizio Apache Spark:

**Fase 1: SSH nel server Admin Apache Ranger**.

Ad esempio:

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

**Fase 2: Download della definizione del servizio e del plug-in del server Admin Apache Ranger**

In una directory temporanea, scarica la definizione del servizio. Questa definizione del servizio è supportata dalle versioni 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
```

**Fase 3: Installazione del plug-in Apache Spark per 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
```

**Fase 4: Registrazione della definizione del servizio Apache Spark per 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 questo comando viene eseguito correttamente, viene visualizzato un nuovo servizio nell'interfaccia utente del server Admin Ranger denominato "AMAZON-EMR-SPARK", come mostrato nell'immagine seguente (Ranger versione 2.0).

![\["AMAZON-EMR-SPARK" registrato nell'Admin Ranger.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-amazon-emr-spark.png)


**Fase 5: Creare un'istanza dell'applicazione AMAZON-EMR-SPARK**

**Nome del servizio (se visualizzato):** il nome del servizio che verrà utilizzato. Il valore suggerito è **amazonemrspark**. Prendi nota di questo nome del servizio dal momento che sarà necessario quando crei una configurazione di sicurezza EMR.

**Nome visualizzato:** il nome da visualizzare per questa istanza. Il valore suggerito è **amazonemrspark**.

**Nome comune per certificato**: il campo CN all'interno del certificato utilizzato per connettersi al server Admin da un plug-in client. Questo valore deve corrispondere al campo CN nel certificato TLS creato per il plug-in.

![\[Il server Admin Ranger crea il servizio.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-create-service.png)


**Nota**  
Il certificato TLS per questo plug-in dovrebbe essere stato registrato nel truststore sul server Admin Ranger. Per ulteriori dettagli, consulta [Certificati TLS per l'integrazione di Apache Ranger con Amazon EMR](emr-ranger-admin-tls.md).

## Creazione di policy SparkSQL
<a name="emr-ranger-spark-create-sparksql"></a>

Quando si crea una nuova policy, i campi da compilare sono i seguenti:

**Nome policy**: il nome della policy.

**Etichetta policy**: un'etichetta che è possibile inserire in questa policy.

**Database**: il database a cui viene applicata questa policy. Il carattere jolly "\$1" rappresenta tutti i database.

**Tabella**: le tabelle a cui viene applicata questa policy. Il carattere jolly "\$1" rappresenta tutte le tabelle.

**Colonna Spark EMR**: le colonne a cui viene applicata questa policy. Il carattere jolly "\$1" rappresenta tutte le colonne.

**Description (Descrizione)**: la descrizione di questa policy.

![\[Il server Admin Ranger crea i dettagli della policy di SparkSQL.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-create-policy-details.png)


Per specificare gli utenti e i gruppi, immetti gli utenti e i gruppi riportati di seguito per concedere le autorizzazioni. È inoltre possibile specificare delle esclusioni per **consentire** e **negare** le condizioni.

![\[I dettagli della policy SparkSQL del server Admin Ranger consentono le condizioni.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions.png)


Dopo aver specificato le condizioni di autorizzazione e negazione, fai clic su **Save (Salva)**.

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

Ogni nodo all'interno del cluster EMR deve essere in grado di connettersi al nodo principale sulla porta 9083.

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

Di seguito sono riportate le attuali limitazioni per il plug-in Apache Spark:
+ Record Server si connette sempre ad HMS in esecuzione su un cluster Amazon EMR. Configura HMS per la connessione alla modalità remota, se necessario. Non inserire i valori di configurazione all'interno del file di configurazione Hive-site.xml di Apache Spark.
+ Le tabelle create utilizzando le origini dati Spark su CSV o Avro non sono leggibili utilizzando EMR. RecordServer Utilizza Hive per creare e scrivere dati, per poi leggerli utilizzando Record.
+ Le tabelle Delta Lake, Hudi e Iceberg non sono supportate.
+ Gli utenti devono avere accesso al database predefinito. Questo è un requisito per Apache Spark.
+ Il server Admin Ranger non supporta il completamento automatico.
+ Il plug-in SparkSQL per Amazon EMR non supporta i filtri di riga o il mascheramento dei dati.
+ Quando si utilizza ALTER TABLE con Spark SQL, una posizione di partizione deve essere la directory figlio di una posizione di tabella. L'inserimento di dati in una partizione in cui la posizione della partizione è diversa da quella della tabella non è supportata.

# Plugin EMRFS S3 per l'integrazione di Ranger con Amazon EMR
<a name="emr-ranger-emrfs"></a>

Per semplificare la fornitura di controlli degli accessi agli oggetti in S3 in un cluster multi-tenant, il plug-in EMRFS S3 fornisce controlli degli accessi ai dati all'interno di S3 quando vi si accede tramite EMRFS. È possibile consentire l'accesso alle risorse S3 a livello di utente e gruppo.

Per raggiungere questo obiettivo, quando l'applicazione tenta di accedere ai dati all'interno di S3, EMRFS invia una richiesta di credenziali al processo Secret Agent, in cui la richiesta viene autenticata e autorizzata rispetto a un plug-in Apache Ranger. Se la richiesta è autorizzata, l'agente segreto assume il ruolo IAM per Apache Ranger Engines con una policy limitata per generare credenziali che hanno accesso solo alla policy Ranger che ha consentito l'accesso. Le credenziali vengono quindi passate a EMRFS per accedere a S3.

**Topics**
+ [Funzionalità supportate](#emr-ranger-emrfs-features)
+ [Installazione della configurazione del servizio](#emr-ranger-emrfs-service-config)
+ [Creazione di policy EMRFS S3](#emr-ranger-emrfs-create-policies)
+ [Note sull'utilizzo delle policy EMRFS S3](#emr-ranger-emrfs-considerations)
+ [Limitazioni](#emr-ranger-emrfs-limitations)

## Funzionalità supportate
<a name="emr-ranger-emrfs-features"></a>

Il plug-in EMRFS S3 fornisce l'autorizzazione a livello di archiviazione. È possibile creare policy che consentano l'accesso di utenti e gruppi a bucket e prefissi S3. L'autorizzazione è gestita solo rispetto a EMRFS.

## Installazione della configurazione del servizio
<a name="emr-ranger-emrfs-service-config"></a>

Per installare la definizione del servizio EMRFS, devi configurare il server di amministrazione Ranger. Per configurare il server, vedere. [Configura un server di amministrazione Ranger per l'integrazione con Amazon EMR](emr-ranger-admin.md)

Attenersi alla seguente procedura per installare la definizione del servizio EMRFS.

**Fase 1: SSH nel server Admin Apache Ranger**.

Esempio:

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

**Fase 2: Scarica la definizione del servizio EMRFS**.

In una directory temporanea, scarica la definizione del servizio Amazon EMR. Questa definizione del servizio è supportata dalle versioni Ranger 2.x.

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

**Fase 3: Registrare la definizione del servizio 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'
```

Se questo comando viene eseguito correttamente, viene visualizzato un nuovo servizio nell'interfaccia utente del server Admin Ranger denominato "AMAZON-EMR-S3", come mostrato nell'immagine seguente (Ranger versione 2.0).

![\[Il server Admin Ranger crea il servizio EMRFS S3.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-create-service-EMRFS.png)


**Fase 4: Creare un'istanza dell'applicazione. AMAZON-EMR-EMRFS**

Crea un'istanza della definizione del servizio.
+ Fai clic sul **segno \$1** accanto a AMAZON-EMR-EMRFS.

Riempi i seguenti campi:

**Nome del servizio (se visualizzato)**: il valore suggerito è**amazonemrs3**. Prendi nota di questo nome del servizio dal momento che sarà necessario quando crei una configurazione di sicurezza EMR. 

**Nome visualizzato**: immetti il nome da visualizzare per il servizio. Il valore suggerito è **amazonemrs3**.

**Nome comune per certificato**: il campo CN all'interno del certificato utilizzato per connettersi al server Admin da un plug-in client. Questo valore deve corrispondere al campo CN nel certificato TLS creato per il plug-in.

![\[Il server Admin Ranger modifica il servizio EMRFS S3.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-edit-service-EMRFS.png)


**Nota**  
Il certificato TLS per questo plug-in dovrebbe essere stato registrato nel truststore sul server Admin Ranger. Per ulteriori dettagli, consulta [Certificati TLS per l'integrazione di Apache Ranger con Amazon EMR](emr-ranger-admin-tls.md).

Quando viene creato il servizio, il Service Manager include "AMAZON-EMR-EMRFS", come mostrato nell'immagine seguente.

![\[Il server Admin Ranger mostra il nuovo servizio EMRFS S3.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-new-service-EMRFS.png)


## Creazione di policy EMRFS S3
<a name="emr-ranger-emrfs-create-policies"></a>

Per creare una nuova policy, nella pagina **Create Policy** (Crea policy) del Service Manager compila i campi riportati di seguito.

**Nome policy**: il nome della policy.

**Etichetta policy**: un'etichetta che è possibile inserire in questa policy.

**Risorsa S3**: una risorsa che inizia con il bucket e il prefisso facoltativo. Per ulteriori informazioni sulle best practice, consulta [Note sull'utilizzo delle policy EMRFS S3](#emr-ranger-emrfs-considerations). Le risorse nel server Admin Ranger non devono contenere **s3://**, **s3a://** o **s3n://**.

![\[Il server Admin Ranger crea la policy per il servizio EMRFS S3.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-create-policy-EMRFS.png)


È possibile specificare utenti e gruppi per concedere le autorizzazioni. È inoltre possibile specificare delle esclusioni per **consentire** e **negare** le condizioni.

![\[Ranger Admin mostra user/group le autorizzazioni per la politica EMRFS S3.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-permissions-EMRFS.png)


**Nota**  
Sono consentite al massimo tre risorse per ogni policy. L'aggiunta di più di tre risorse può causare un errore quando questa policy viene utilizzata in un cluster EMR. L'aggiunta di più di tre policy consente di visualizzare un promemoria relativo al limite di policy.

## Note sull'utilizzo delle policy EMRFS S3
<a name="emr-ranger-emrfs-considerations"></a>

Quando si creano policy S3 all'interno di Apache Ranger, occorre tenere a mente alcune considerazioni sull'utilizzo.

### Autorizzazioni a più oggetti S3
<a name="emr-ranger-emrfs-considerations-s3objects"></a>

È possibile utilizzare policy ricorrenti ed espressioni con caratteri jolly per concedere autorizzazioni a più oggetti S3 con prefissi comuni. Le policy ricorrenti forniscono autorizzazioni a tutti gli oggetti con un prefisso comune. Le espressioni con caratteri jolly selezionano più prefissi. Insieme, forniscono le autorizzazioni a tutti gli oggetti con più prefissi comuni, come mostrato nei seguenti esempi.

**Example Utilizzo di una policy ricorrente**  
Supponiamo che necessiti di autorizzazioni per elencare tutti i file parquet in un bucket S3 organizzato come segue.  

```
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
```
Innanzitutto, considera i file parquet con il prefisso `s3://sales-reports/americas/year=2000`. Puoi concedere GetObject le autorizzazioni a tutti in due modi:  
**Utilizzo di policy non ricorrenti**: un'opzione consiste nell'utilizzare due policy non ricorrenti separate, una per la directory e l'altra per i file.   
La prima policy concede l'autorizzazione al prefisso `s3://sales-reports/americas/year=2020` (non è presente il `/` finale).  

```
- S3 resource = "sales-reports/americas/year=2000"
- permission = "GetObject"
- user = "analyst"
```
La seconda policy utilizza l'espressione jolly per concedere autorizzazioni a tutti i file con prefisso `sales-reports/americas/year=2020/` (nota il `/` finale).  

```
- S3 resource = "sales-reports/americas/year=2020/*"
- permission = "GetObject"
- user = "analyst"
```
**Utilizzo di una policy ricorrente**: un'alternativa più conveniente consiste nell'utilizzare una singola policy ricorrente e concedere l'autorizzazione ricorrente al prefisso.  

```
 - S3 resource = "sales-reports/americas/year=2020"
 - permission = "GetObject"
 - user = "analyst"
 - is recursive = "True"
```
Finora, solo i file parquet con il prefisso `s3://sales-reports/americas/year=2000` sono stati inclusi. È ora possibile includere anche i file parquet con un prefisso diverso, `s3://sales-reports/americas/year=2020`, nella stessa policy ricorrente introducendo un'espressione con caratteri jolly come segue.  

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

### Politiche PutObject e DeleteObject autorizzazioni
<a name="emr-ranger-emrfs-considerations-putobject"></a>

La scrittura di politiche `PutObject` e `DeleteObject` autorizzazioni per i file su EMRFS richiede un'attenzione speciale perché, a differenza delle autorizzazioni, richiedono GetObject autorizzazioni ricorsive aggiuntive concesse al prefisso.

**Example Politiche PutObject DeleteObject e autorizzazioni**  
Ad esempio, l'eliminazione del file non `annual-summary.parquet` richiede solo l' DeleteObject autorizzazione per il file effettivo.  

```
- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet"
- permission = "DeleteObject"
- user = "analyst"
```
ma anche una policy che conceda autorizzazioni ricorrenti `GetObject` e `PutObject` per il suo prefisso.  
Allo stesso modo, la modifica del file `annual-summary.parquet` richiede non solo un'autorizzazione `PutObject` per il file effettivo,  

```
- S3 resource = "sales-reports/americas/year=2020/annual-summary.parquet"
- permission = "PutObject"
- user = "analyst"
```
ma anche una policy che conceda l'autorizzazione ricorrente `GetObject` per il suo prefisso.  

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

### Caratteri jolly nelle policy
<a name="emr-ranger-emrfs-considerations-wildcards"></a>

Sono disponibili due aree in cui è possibile specificare i caratteri jolly. Quando si specifica una risorsa S3, è possibile utilizzare i valori "\$1" e "?". "\$1" fornisce la corrispondenza con un percorso S3 e corrisponde a tutto ciò che viene dopo il prefisso. Per esempio, la seguente policy.

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

Questo corrisponde ai seguenti percorsi 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
```

Il carattere jolly "?" corrisponde a un singolo carattere. Ad esempio, per la policy:

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

Questo corrisponde ai seguenti percorsi S3.

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

### Caratteri jolly negli utenti
<a name="emr-ranger-emrfs-considerations-wildcards-in-users"></a>

Esistono due caratteri jolly incorporati quando si assegnano utenti per consentire l'accesso agli utenti. Il primo è il carattere jolly "\$1USER\$1" che fornisce l'accesso a tutti gli utenti. Il secondo carattere jolly è "\$1OWNER\$1" che fornisce l'accesso diretto o l'accesso al proprietario di un particolare oggetto. Tuttavia, il carattere jolly "\$1USER\$1" non è attualmente supportato.

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

Di seguito sono riportate le attuali limitazioni per il plug-in EMRFS S3:
+ Apache Ranger può avere al massimo tre policy.
+ L'accesso a S3 deve essere realizzato tramite EMRFS e può essere utilizzato con le applicazioni correlate ad Hadoop. Il seguente elemento non è supportato:

  - Librerie Boto3

  - AWS SDK e AWK CLI

  - Connettore open source S3A
+ Le policy di negazione di Apache Ranger non sono supportate.
+ Le operazioni su S3 con chiavi con crittografia CSE-KMS non sono attualmente supportate.
+ Il supporto tra Regioni non è supportato.
+ La caratteristica Security Zone di Apache Ranger non è supportata. Le restrizioni per il controllo degli accessi definite utilizzando la funzione Security Zone non vengono applicate ai cluster Amazon EMR.
+ L'utente Hadoop non genera eventi di verifica poiché Hadoop accede sempre al profilo dell'istanza EC2.
+ Si consiglia di disabilitare la visualizzazione di coerenza Amazon EMR. S3 ha un'elevata coerenza, pertanto tale visualizzazione non è più necessaria. Per maggiori informazioni, consulta [Forte coerenza di Amazon S3](https://aws.amazon.com/s3/consistency/).
+ Il plug-in EMRFS S3 effettua numerose chiamate STS. Si consiglia di eseguire test di carico su un account di sviluppo e monitorare il volume delle chiamate STS. Si consiglia inoltre di effettuare una richiesta STS per aumentare AssumeRole i limiti del servizio.
+ Il server Ranger Admin non supporta il completamento automatico.

# Plugin Trino per l'integrazione di Ranger con Amazon EMR
<a name="emr-ranger-trino"></a>

Trino (precedentemente PrestoSQL) è un motore di query SQL che consente di eseguire query su più origini dati, come HDFS, archiviazione di oggetti, database relazionali e database NoSQL. Elimina la necessità di migrare i dati in una posizione centrale e consente di interrogare i dati ovunque si trovino. Amazon EMR mette a disposizione un plugin Apache Ranger per fornire un controllo granulare degli accessi a Trino. Il plug-in è compatibile con il server open source Apache Ranger Admin versione 2.0 e successive.

**Topics**
+ [Funzionalità supportate](#emr-ranger-trino-features)
+ [Installazione della configurazione del servizio](#emr-ranger-trino-service-config)
+ [Creazione di policy Trino](#emr-ranger-trino-create-policies)
+ [Considerazioni](#emr-ranger-trino-considerations)
+ [Limitazioni](#emr-ranger-trino-limitations)

## Funzionalità supportate
<a name="emr-ranger-trino-features"></a>

Il plugin Apache Ranger per Trino su Amazon EMR supporta tutte le funzionalità del motore di query Trino, che è protetto da un controllo granulare degli accessi comprendente controlli degli accessi a livello di database, tabella e colonna, filtraggio di riga e mascheramento dei dati. Le policy di Apache Ranger possono includere policy di concessione e di negazione a utenti e gruppi. Gli eventi di controllo vengono inoltre inviati ai log. CloudWatch

## Installazione della configurazione del servizio
<a name="emr-ranger-trino-service-config"></a>

L'installazione della definizione del servizio Trino richiede la configurazione del server Admin Ranger. Per configurare il server Admin Ranger, consulta [Configura un server di amministrazione Ranger per l'integrazione con Amazon EMR](emr-ranger-admin.md).

Attenersi alla seguente procedura per installare la definizione del servizio Trino.

1. SSH nel server Admin Apache Ranger.

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

   

1. Disinstalla il plugin del server Presto, se presente. Eseguire il seguente comando seguente. Se viene visualizzato l'errore "Service not found" (Servizio non trovato), il plugin del server Presto non è stato installato sul server. Passare alla fase successiva.

   ```
   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. Scarica la definizione del servizio e il plugin del server Admin Apache Ranger. In una directory temporanea, scarica la definizione del servizio. Questa definizione del servizio è supportata dalle versioni Ranger 2.x.

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

1. Registra la definizione del servizio Apache Trino per 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 questo comando viene eseguito correttamente, viene visualizzato un nuovo servizio nell'interfaccia utente di Admin Apache Ranger denominato `TRINO`, come mostrato nell'immagine seguente.  
![\[Il server Admin Ranger crea il servizio.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-create-service-trino.png)

1. Crea un'istanza dell'applicazione `TRINO` inserendo le informazioni seguenti.

   **Service Name** (Nome del servizio): il nome del servizio che verrà utilizzato. Il valore suggerito è `amazonemrtrino`. Prendi nota di questo nome del servizio dal momento che sarà necessario durante la creazione di una configurazione di sicurezza per Amazon EMR.

   **Nome visualizzato:** il nome da visualizzare per questa istanza. Il valore suggerito è `amazonemrtrino`.  
![\[Nome visualizzato per il server Admin Ranger.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-display-name-trino.png)

   **jdbc.driver. ClassName**: Il nome della classe JDBC per la connettività Trino. Puoi usare il valore predefinito.

   **jdbc.url**: la stringa di connessione JDBC da utilizzare per la connessione a un coordinatore Trino.

   **Nome comune per certificato**: il campo CN all'interno del certificato utilizzato per connettersi al server Admin da un plug-in client. Questo valore deve corrispondere al campo CN nel certificato TLS creato per il plug-in.  
![\[Nome comune per il server Admin Ranger.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-common-name-trino.png)

   Il certificato TLS per questo plugin dovrebbe essere stato registrato nel trust store sul server Admin Ranger. Per ulteriori informazioni, consulta la sezione [Certificati TLS](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ranger-admin-tls.html).

## Creazione di policy Trino
<a name="emr-ranger-trino-create-policies"></a>

Quando crei una nuova policy, compila i campi seguenti.

**Nome policy**: il nome della policy.

**Etichetta policy**: un'etichetta che è possibile inserire in questa policy.

**Catalog** (Catalogo): il catalogo a cui viene applicata questa policy. Il carattere jolly "\$1" rappresenta tutti i cataloghi.

**Schema** (Schema): gli schemi a cui viene applicata questa policy. Il carattere jolly "\$1" rappresenta tutti gli schemi.

**Tabella**: le tabelle a cui viene applicata questa policy. Il carattere jolly "\$1" rappresenta tutte le tabelle.

**Column** (Colonna): le colonne a cui viene applicata questa policy. Il carattere jolly "\$1" rappresenta tutte le colonne.

**Description (Descrizione)**: la descrizione di questa policy.

Esistono altri tipi di policy, ad esempio **Trino User** (Utente Trino) (per l'accesso alla rappresentazione di utenti), **Trino System/Session Property** (Proprietà sistema/sessione Trino) (per modificare le proprietà del sistema o della sessione del motore), **Functions/Procedures** (Funzioni/procedure) (per consentire chiamate a funzioni o procedure) e **URL** (per consentire l'accesso in lettura/scrittura al motore nei percorsi dati).

![\[Il server Admin Ranger crea i dettagli della policy.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-create-policy-details-trino.png)


Per concedere autorizzazioni a utenti e gruppi specifici, inserirli. È inoltre possibile specificare delle esclusioni per **consentire** e **negare** le condizioni.

![\[I dettagli della policy del server Admin Ranger consentono di negare le condizioni.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions-trino.png)


Dopo aver specificato le condizioni di autorizzazione e negazione, scegli **Save** (Salva).

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

Quando si creano policy Trino all'interno di Apache Ranger, occorre tenere a mente alcune considerazioni sull'utilizzo.

**Server dei metadati Hive**

Il server dei metadati Hive è accessibile solo dai motori attendibili, in particolare il motore Trino, come misura di protezione da accessi non autorizzati. Il server dei metadati Hive è accessibile anche da tutti i nodi del cluster. La porta 9083 richiesta consente a tutti i nodi di accedere al nodo principale.

**Autenticazione**

Per impostazione predefinita, Trino è configurato per l'autenticazione utilizzando Kerberos, come specificato nella configurazione di sicurezza di Amazon EMR.

**Crittografia in transito obbligatoria**

Il plugin Trino richiede che la crittografia in transito sia abilitata nella configurazione di sicurezza di Amazon EMR. Per abilitare la crittografia, consulta [Crittografia dei dati in transito](emr-data-encryption-options.md#emr-encryption-intransit).

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

Di seguito sono riportate le attuali limitazioni per il plugin Trino:
+ Il server Admin Ranger non supporta il completamento automatico.