

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