

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

# Configurazione di Amazon EMR per Apache Ranger
<a name="emr-ranger-begin"></a>

Prima di installare Apache Ranger, consulta le informazioni contenute in questa sezione per verificare che Amazon EMR sia configurato correttamente.

**Topics**
+ [Configura un server di amministrazione Ranger per l'integrazione con Amazon EMR](emr-ranger-admin.md)
+ [Ruoli IAM per l'integrazione nativa con Apache Ranger](emr-ranger-iam.md)
+ [Creazione di una configurazione di sicurezza EMR](emr-ranger-security-config.md)
+ [Archivia i certificati TLS in Gestione dei segreti AWS](emr-ranger-tls-certificates.md)
+ [Avvia un cluster EMR con Apache Ranger](emr-ranger-start-emr-cluster.md)
+ [Configurazione dei cluster Amazon EMR abilitati da Zeppelin per Apache Ranger](emr-ranger-configure-zeppelin.md)
+ [Problemi noti per l'integrazione con Amazon EMR](emr-ranger-security-considerations.md)

# Configura un server di amministrazione Ranger per l'integrazione con Amazon EMR
<a name="emr-ranger-admin"></a>

Per l'integrazione di Amazon EMR, i plug-in dell'applicazione Apache Ranger devono comunicare con il server Admin utilizzando TLS/SSL.

**Prerequisito: SSL abilitato con il server Admin Ranger**

Apache Ranger su Amazon EMR richiede una comunicazione SSL bidirezionale tra i plug-in e il server Admin Ranger. Per garantire che i plugin comunichino con il server Apache Ranger tramite SSL, abilita il seguente attributo all'interno del ranger-admin-site file.xml sul server Ranger Admin.

```
<property>
    <name>ranger.service.https.attrib.ssl.enabled</name>
    <value>true</value>
</property>
```

Inoltre, sono necessarie le seguenti configurazioni.

```
<property>
    <name>ranger.https.attrib.keystore.file</name>
    <value>_<PATH_TO_KEYSTORE>_</value>
</property>

<property>
    <name>ranger.service.https.attrib.keystore.file</name>
    <value>_<PATH_TO_KEYSTORE>_</value>
</property>

<property>
    <name>ranger.service.https.attrib.keystore.pass</name>
    <value>_<KEYSTORE_PASSWORD>_</value>
</property>

<property>
    <name>ranger.service.https.attrib.keystore.keyalias</name>
    <value><PRIVATE_CERTIFICATE_KEY_ALIAS></value>
</property>

<property>
    <name>ranger.service.https.attrib.clientAuth</name>
    <value>want</value>
</property>

<property>
    <name>ranger.service.https.port</name>
    <value>6182</value>
</property>
```

# Certificati TLS per l'integrazione di Apache Ranger con Amazon EMR
<a name="emr-ranger-admin-tls"></a>

L'integrazione di Apache Ranger con Amazon EMR richiede che il traffico dai nodi di Amazon EMR al server Admin Ranger sia crittografato utilizzando TLS e che i plug-in Ranger si autentichino al server Apache Ranger utilizzando l'autenticazione TLS reciproca bidirezionale. Il servizio Amazon EMR richiede il certificato pubblico del server Admin Ranger (specificato nell'esempio precedente) e il certificato privato.

**Certificati del plug-in Apache Ranger**

I certificati TLS pubblici del plug-in Apache Ranger devono essere accessibili al server Admin Apache Ranger per convalidare quando i plug-in si connettono. Esistono tre metodi diversi per eseguire questa operazione.

**Metodo 1: Configurazione di un truststore nel server Admin Apache Ranger**

Compila le seguenti configurazioni in ranger-admin-site .xml per configurare un truststore.

```
<property>
    <name>ranger.truststore.file</name>
    <value><LOCATION TO TRUSTSTORE></value>
</property>

<property>
    <name>ranger.truststore.password</name>
    <value><PASSWORD FOR TRUSTSTORE></value>
</property>
```

**Metodo 2: Caricamento del certificato in Java cacerts truststore**

Se il tuo server Admin Ranger non specifica un truststore nelle sue opzioni JVM, puoi inserire i certificati pubblici del plug-in nell'archivio cacerts predefinito.

**Metodo 3: Creazione di un truststore specificato come parte delle opzioni JVM**

In `{RANGER_HOME_DIRECTORY}/ews/ranger-admin-services.sh`, modifica `JAVA_OPTS` per includere `"-Djavax.net.ssl.trustStore=<TRUSTSTORE_LOCATION>"` e `"-Djavax.net.ssl.trustStorePassword=<TRUSTSTORE_PASSWORD>"`. Ad esempio, aggiungi la seguente riga dopo il JAVA\$1OPTS esistente.

```
JAVA_OPTS=" ${JAVA_OPTS} -Djavax.net.ssl.trustStore=${RANGER_HOME}/truststore/truststore.jck -Djavax.net.ssl.trustStorePassword=changeit"
```

**Nota**  
Questa specifica può esporre la password truststore se un utente è in grado di accedere al server Admin Apache Ranger e vedere i processi in esecuzione, ad esempio quando si utilizza il comando `ps`.

**Utilizzo di certificati autofirmati**

I certificati autofirmati non sono consigliati come certificati. I certificati autofirmati potrebbero non essere revocati o non essere conformi ai requisiti di sicurezza interni.

# Installazione della definizione del servizio per l'integrazione di Ranger con Amazon EMR
<a name="emr-ranger-admin-servicedef-install"></a>

Una definizione di servizio viene utilizzata dal server Admin Ranger per descrivere gli attributi delle policy per un'applicazione. Le policy vengono quindi archiviate in un repository di policy per il download dei client. 

Per poter configurare le definizioni dei servizi, le chiamate REST devono essere effettuate al server Admin Ranger. Consulta [Apache Ranger Public APIsv2](https://ranger.apache.org/apidocs/resource_PublicAPIsv2.html#resource_PublicAPIsv2_createServiceDef_POST) per informazioni APIs richieste nella sezione seguente.

**Installazione della definizione del servizio di Apache Spark**

Per installare la definizione del servizio di Apache Spark, consulta [Plugin Apache Spark per l'integrazione di Ranger con Amazon EMR](emr-ranger-spark.md).

**Installazione della definizione del servizio EMRFS**

Per installare la definizione del servizio S3 per Amazon EMR, consulta [Plugin EMRFS S3 per l'integrazione di Ranger con Amazon EMR](emr-ranger-emrfs.md).

**Utilizzo della definizione del servizio Hive**

Apache Hive può utilizzare la definizione del servizio Ranger esistente fornita con Apache Ranger 2.0 e versioni successive. Per ulteriori informazioni, consulta [Plugin Apache Hive per l'integrazione di Ranger con Amazon EMR](emr-ranger-hive.md).

# Regole del traffico di rete per l'integrazione con Amazon EMR
<a name="emr-ranger-network"></a>

Quando Apache Ranger è integrato con il cluster EMR, il cluster deve comunicare con server aggiuntivi e AWS.

Tutti i nodi Amazon EMR, inclusi i nodi principali e attività, devono essere in grado di comunicare con i server Admin Apache Ranger per scaricare le policy. Se il tuo Apache Ranger Admin è in esecuzione su Amazon EC2, devi aggiornare il gruppo di sicurezza per poter prelevare il traffico dal cluster EMR.

Oltre a comunicare con il server Ranger Admin, tutti i nodi devono essere in grado di comunicare con i seguenti servizi: AWS 
+ Simple Storage Service (Amazon S3)
+ AWS KMS (se si utilizza EMRFS SSE-KMS)
+ Amazon CloudWatch
+ AWS STS

Se prevedi di eseguire il cluster EMR all'interno di una sottorete privata, configura il VPC per comunicare con questi servizi utilizzando [AWS PrivateLink ed endpoint VPC](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html) nella *Guida per l'utente di Amazon VPC* oppure utilizzando un'[istanza NAT (Network Address Translation)](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html) nella *Guida per l'utente di Amazon VPC*.

# Ruoli IAM per l'integrazione nativa con Apache Ranger
<a name="emr-ranger-iam"></a>

L'integrazione tra Amazon EMR e Apache Ranger si basa su tre ruoli chiave che è necessario creare prima di avviare il cluster:
+ Un profilo dell'istanza Amazon EC2 personalizzato per Amazon EMR
+ Un ruolo IAM per Apache Ranger Engines
+ Un ruolo IAM per altri servizi AWS 

Questa sezione fornisce una panoramica di questi ruoli e delle policy che è necessario includere per ogni ruolo IAM. Per informazioni sulla creazione di questi ruoli, consulta [Configura un server di amministrazione Ranger per l'integrazione con Amazon EMR](emr-ranger-admin.md).

# Profilo di istanza EC2 per Amazon EMR
<a name="emr-ranger-iam-ec2"></a>

Amazon EMR utilizza un ruolo di servizio IAM per eseguire operazioni per tuo conto per il provisioning e la gestione dei cluster. Il ruolo di servizio per le istanze EC2 del cluster, detto anche profilo dell'istanza EC2 per Amazon EMR, è un tipo speciale di ruolo di servizio assegnato a ogni istanza EC2 in un cluster all'avvio.

Per definire le autorizzazioni per l'interazione del cluster EMR con i dati di Amazon S3 e con il metastore Hive protetto da Apache Ranger e AWS altri servizi, definisci un profilo di istanza EC2 personalizzato da utilizzare al posto di quando avvii il cluster. `EMR_EC2_DefaultRole`

Per ulteriori informazioni, consultare [Ruolo di servizio per istanze EC2 del cluster (profilo istanza EC2)](emr-iam-role-for-ec2.md) e [Personalizza i ruoli IAM con Amazon EMR](emr-iam-roles-custom.md).

È necessario aggiungere le seguenti istruzioni al profilo di istanza EC2 predefinito per Amazon EMR per poter etichettare le sessioni e accedere ai Gestione dei segreti AWS certificati TLS che archivia.

```
    {
      "Sid": "AllowAssumeOfRolesAndTagging",
      "Effect": "Allow",
      "Action": ["sts:TagSession", "sts:AssumeRole"],
      "Resource": [
        "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<RANGER_ENGINE-PLUGIN_DATA_ACCESS_ROLE_NAME>",
        "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<RANGER_USER_ACCESS_ROLE_NAME>"
      ]
    },
    {
        "Sid": "AllowSecretsRetrieval",
        "Effect": "Allow",
        "Action": "secretsmanager:GetSecretValue",
        "Resource": [
            "arn:aws:secretsmanager:<REGION>:<AWS_ACCOUNT_ID>:secret:<PLUGIN_TLS_SECRET_NAME>*",
            "arn:aws:secretsmanager:<REGION>:<AWS_ACCOUNT_ID>:secret:<ADMIN_RANGER_SERVER_TLS_SECRET_NAME>*"
        ]
    }
```

**Nota**  
Per le autorizzazioni di Secrets Manager, non dimenticare il carattere jolly ("\$1") alla fine del nome segreto, altrimenti le richieste non avranno esito positivo. Il carattere jolly vale per le versioni segrete.

**Nota**  
Limita l'ambito della Gestione dei segreti AWS policy ai soli certificati necessari per il provisioning.

# Ruolo IAM per Apache Ranger
<a name="emr-ranger-iam-ranger"></a>

Questo ruolo fornisce ai motori di esecuzione attendibili, ad esempio Apache Hive e Amazon EMR Record Serve, le credenziali per accedere ai dati Amazon S3. Utilizza solo questo ruolo per accedere ai dati di Amazon S3, incluse le chiavi KMS, se utilizzi S3 SSE-KMS.

Questo ruolo deve essere creato con la policy minima riportata nell'esempio seguente.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CloudwatchLogsPermissions",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:logs:*:123456789012:log-group:CLOUDWATCH_LOG_GROUP_NAME_IN_SECURITY_CONFIGURATION:*"
      ]
    },
    {
      "Sid": "BucketPermissionsInS3Buckets",
      "Action": [
        "s3:CreateBucket",
        "s3:DeleteBucket",
        "s3:ListAllMyBuckets",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
        "arn:aws:s3:::amzn-s3-demo-bucket2"
      ]
    },
    {
      "Sid": "ObjectPermissionsInS3Objects",
      "Action": [
        "s3:GetObject",
        "s3:DeleteObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1/*",
        "arn:aws:s3:::amzn-s3-demo-bucket2/*"
      ]
    }
  ]
}
```

------

**Importante**  
L'asterisco «\$1» alla fine della risorsa di CloudWatch registro deve essere incluso per consentire la scrittura nei flussi di registro.

**Nota**  
Se utilizzi la visualizzazione di coerenza EMRFS o la crittografia S3-SSE, aggiungi le autorizzazioni alle tabelle DynamoDB e alle chiavi del servizio di gestione delle chiavi in modo che i motori di esecuzione possano interagire con tali motori.

Il ruolo IAM per Apache Ranger viene assunto dal ruolo del profilo dell'istanza EC2. Utilizza l'esempio seguente per creare una policy di affidabilità che consenta di assumere il ruolo IAM per Apache Ranger dal ruolo del profilo dell'istanza EC2.

```
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<EC2 INSTANCE PROFILE ROLE NAME eg. EMR_EC2_DefaultRole>"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
```

# Ruolo IAM per altri AWS servizi per l'integrazione con Amazon EMR
<a name="emr-ranger-iam-other-AWS"></a>

Questo ruolo fornisce agli utenti che non sono motori di esecuzione affidabili le credenziali per interagire con AWS i servizi, se necessario. Non utilizzare questo ruolo IAM per consentire l'accesso ai dati di Amazon S3, a meno che non si tratti di dati che devono essere accessibili a tutti gli utenti.

Questo ruolo verrà assunto dal ruolo del profilo dell'istanza EC2. Utilizza l'esempio seguente per creare una policy di affidabilità che consenta di assumere il ruolo IAM per Apache Ranger dal ruolo del profilo dell'istanza EC2.

```
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<EC2 INSTANCE PROFILE ROLE NAME eg. EMR_EC2_DefaultRole>"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
```

# Convalida le autorizzazioni per l'integrazione di Amazon EMR con Apache Ranger
<a name="emr-ranger-iam-validate"></a>

Consulta [Risoluzione dei problemi di Apache Ranger](emr-ranger-troubleshooting.md) per istruzioni sulla convalida delle autorizzazioni.

# Creazione di una configurazione di sicurezza EMR
<a name="emr-ranger-security-config"></a>

**Creazione di una configurazione di sicurezza di Amazon EMR per Apache Ranger**

Prima di lanciare un cluster Amazon EMR integrato con Apache Ranger, crea una configurazione di sicurezza.

------
#### [ Console ]

**Per creare una configurazione di sicurezza che specifichi l'opzione di integrazione con Ranger AWS**

1. Nella console di Amazon EMR, seleziona **Security configurations (Configurazioni di sicurezza)** e in seguito **Create (Crea)**.

1. Digitare un nome in **Name (Nome)** per la configurazione di sicurezza. Questo nome è utilizzato per specificare la configurazione di sicurezza al momento della creazione di un cluster.

1. In **AWS Ranger Integration** (Integrazione Ranger), seleziona **Enable fine-grained access control managed by Apache Ranger** (Abilita controllo granulare degli accessi gestito da Apache Ranger).

1. Seleziona lo **IAM role for Apache Ranger (Ruolo IAM per Apache Ranger)** da applicare. Per ulteriori informazioni, consulta [Ruoli IAM per l'integrazione nativa con Apache Ranger](emr-ranger-iam.md).

1. Seleziona il **ruolo IAM per altri servizi AWS ** da applicare.

1. Configura i plugin per connetterti al server di amministrazione Ranger inserendo l'ARN di Secrets Manager per il server di amministrazione e l'indirizzo.

1. Seleziona le applicazioni per configurare i plug-in Ranger. Inserisci l'ARN di Secrets Manager che contiene il certificato TLS privato per il plug-in.

   Se Apache Spark o Apache Hive non vengono configurati e vengono selezionati come applicazione per il cluster, la richiesta ha esito negativo.

1. Configurare altre opzioni per la configurazione di sicurezza come appropriato e scegliere **Create (Crea)**. È necessario abilitare l'autenticazione Kerberos utilizzando il KDC dedicato al cluster o esterno.

**Nota**  
Al momento non è possibile utilizzare la console per creare una configurazione di sicurezza che specifichi l'opzione di integrazione AWS Ranger in. AWS GovCloud (US) Region La configurazione della sicurezza può essere eseguita utilizzando la CLI.

------
#### [ CLI ]

**Creazione di una configurazione di sicurezza per l'integrazione di Apache Ranger**

1. Sostituiscila `<ACCOUNT ID>` con l'ID del tuo AWS account.

1. Sostituisci `<REGION>` con la Regione in cui si trova la risorsa.

1. Specifica un valore per `TicketLifetimeInHours` per determinare il periodo di validità di un ticket Kerberos emesso dal KDC.

1. Specifica l'indirizzo del server Admin Ranger per `AdminServerURL`.

```
{
    "AuthenticationConfiguration": {
        "KerberosConfiguration": {
            "Provider": "ClusterDedicatedKdc",
            "ClusterDedicatedKdcConfiguration": {
                "TicketLifetimeInHours": 24
            }
        }
    },
    "AuthorizationConfiguration":{
      "RangerConfiguration":{
         "AdminServerURL":"https://_<RANGER ADMIN SERVER IP>_:6182",
         "RoleForRangerPluginsARN":"arn:aws:iam::_<ACCOUNT ID>_:role/_<RANGER PLUGIN DATA ACCESS ROLE NAME>_",
         "RoleForOtherAWSServicesARN":"arn:aws:iam::_<ACCOUNT ID>_:role/_<USER ACCESS ROLE NAME>_",
         "AdminServerSecretARN":"arn:aws:secretsmanager:_<REGION>_:_<ACCOUNT ID>_:secret:_<SECRET NAME THAT PROVIDES ADMIN SERVERS PUBLIC TLS CERTIFICATE WITHOUT VERSION>_",
         "RangerPluginConfigurations":[
            {
               "App":"Spark",
               "ClientSecretARN":"arn:aws:secretsmanager:_<REGION>_:_<ACCOUNT ID>_:secret:_<SECRET NAME THAT PROVIDES SPARK PLUGIN PRIVATE TLS CERTIFICATE WITHOUT VERSION>_",
               "PolicyRepositoryName":"<SPARK SERVICE NAME eg. amazon-emr-spark>"
            },
            {
               "App":"Hive",
               "ClientSecretARN":"arn:aws:secretsmanager:_<REGION>_:_<ACCOUNT ID>_:secret:_<SECRET NAME THAT PROVIDES Hive PLUGIN PRIVATE TLS CERTIFICATE WITHOUT VERSION>_",
               "PolicyRepositoryName":"<HIVE SERVICE NAME eg. Hivedev>"
            },
            {
               "App":"EMRFS-S3",
               "ClientSecretARN":"arn:aws:secretsmanager:_<REGION>_:_<ACCOUNT ID>_:secret:_<SECRET NAME THAT PROVIDES EMRFS S3 PLUGIN PRIVATE TLS CERTIFICATE WITHOUT VERSION>_",
               "PolicyRepositoryName":"<EMRFS S3 SERVICE NAME eg amazon-emr-emrfs>"
            }, 
	      {
               "App":"Trino",
               "ClientSecretARN":"arn:aws:secretsmanager:_<REGION>_:_<ACCOUNT ID>_:secret:_<SECRET NAME THAT PROVIDES TRINO PLUGIN PRIVATE TLS CERTIFICATE WITHOUT VERSION>_",
               "PolicyRepositoryName":"<TRINO SERVICE NAME eg amazon-emr-trino>"
            }
         ],
         "AuditConfiguration":{
            "Destinations":{
               "AmazonCloudWatchLogs":{
                  "CloudWatchLogGroup":"arn:aws:logs:<REGION>:_<ACCOUNT ID>_:log-group:_<LOG GROUP NAME FOR AUDIT EVENTS>_"
               }
            }
         }
      }
   }
}
```

 PolicyRespositoryNames Sono i nomi dei servizi specificati nell'amministratore di Apache Ranger.

Crea una configurazione di sicurezza Amazon EMR con il seguente comando. Sostituisci security-configuration con un nome a tua scelta. Seleziona questa configurazione per nome quando crei il cluster.

```
aws emr create-security-configuration \
--security-configuration file://./security-configuration.json \
--name security-configuration
```

------

**Configurazione di caratteristiche di sicurezza aggiuntive**

Per integrare Amazon EMR con Apache Ranger in modo sicuro, configura le seguenti caratteristiche di sicurezza di EMR:
+ Abilita l'autenticazione Kerberos utilizzando il KDC dedicato al cluster o esterno. Per istruzioni, consulta [Utilizzo di Kerberos per l'autenticazione con Amazon EMR](emr-kerberos.md).
+ (Facoltativo) Abilita la crittografia in transito o inattiva. Per ulteriori informazioni, consulta [Opzioni di crittografia per Amazon EMR](emr-data-encryption-options.md).

Per ulteriori informazioni, consulta [Sicurezza in Amazon EMR](emr-security.md).

# Archivia i certificati TLS in Gestione dei segreti AWS
<a name="emr-ranger-tls-certificates"></a>

I plug-in Ranger installati su un cluster Amazon EMR e il server Admin Ranger devono comunicare tramite TLS per garantire che i dati delle policy e le altre informazioni inviate non possano essere letti se vengono intercettati. EMR impone inoltre che i plug-in eseguano l'autenticazione al server Admin Ranger fornendo il proprio certificato TLS ed eseguendo l'autenticazione TLS bidirezionale. Questa configurazione richiedeva la creazione di quattro certificati: due coppie di certificati TLS privati e pubblici. Per istruzioni sull'installazione del certificato nel server Admin Ranger, consulta [Configura un server di amministrazione Ranger per l'integrazione con Amazon EMR](emr-ranger-admin.md). Per completare la configurazione, i plug-in Ranger installati nel cluster EMR necessitano di due certificati: il certificato TLS pubblico del server di amministrazione e il certificato privato che il plug-in utilizzerà per autenticarsi sul server Admin Ranger. Per fornire questi certificati TLS, devono essere presenti in Gestione dei segreti AWS e forniti in una configurazione di sicurezza EMR.

**Nota**  
Si consiglia, per quanto non sia necessario, di creare una coppia di certificati per ciascuna delle applicazioni per limitare l'impatto in caso di compromissione di uno dei certificati del plug-in.

**Nota**  
È necessario monitorare e ruotare i certificati prima della data di scadenza. 

## Formato del certificato
<a name="emr-ranger-tls-cert-format"></a>

L'importazione dei certificati su Gestione dei segreti AWS è la stessa indipendentemente dal fatto che si tratti del certificato del plug-in privato o del certificato di amministrazione Ranger pubblico. Prima di importare i certificati TLS, questi devono essere in formato PEM 509x.

Un esempio di certificato pubblico è nel formato:

```
-----BEGIN CERTIFICATE-----
...Certificate Body...
-----END CERTIFICATE-----
```

Un esempio di certificato privato è nel formato:

```
-----BEGIN PRIVATE KEY-----
...Private Certificate Body...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...Trust Certificate Body...
-----END CERTIFICATE-----
```

Anche il certificato privato deve contenere un certificato di affidabilità.

Puoi verificare che i certificati siano nel formato corretto eseguendo il seguente comando:

```
openssl x509 -in <PEM FILE> -text
```

## Importazione di un certificato in Gestione dei segreti AWS
<a name="emr-ranger-tls-cert-import"></a>

Quando crei il tuo segreto nel Secrets Manager, seleziona **Other type of secrets** (Altro tipo di segreti) in **secret type** (Tipo di segreto) e incolla il certificato codificato PEM nel campo **Plaintext** (Testo normale).

![\[Importazione di un certificato in. Gestione dei segreti AWS\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/ranger-tls-cert-import.png)


# Avvia un cluster EMR con Apache Ranger
<a name="emr-ranger-start-emr-cluster"></a>

Prima di avviare un cluster Amazon EMR con Apache Ranger, assicurati che ogni componente soddisfi i seguenti requisiti minimi di versione:
+ Amazon EMR versione 5.32.0 o successive, o 6.3.0 o successive. Consigliamo di utilizzare la versione del rilascio di Amazon EMR più recente.
+ Server Admin Apache Ranger 2.x.

Completa questa procedura:
+ Installa Apache Ranger se non lo hai già fatto. Per ulteriori informazioni, consulta [Installazione di Apache Ranger 0.5.0](https://cwiki.apache.org/confluence/display/RANGER/Apache+Ranger+0.5.0+Installation).
+ Assicurati che ci sia connettività di rete tra il tuo cluster Amazon EMR e il server Admin Apache Ranger. Per informazioni, consultare [Configura un server di amministrazione Ranger per l'integrazione con Amazon EMR](emr-ranger-admin.md).
+ Crea i ruoli IAM necessari. Per informazioni, consulta [Ruoli IAM per l'integrazione nativa con Apache Ranger](emr-ranger-iam.md).
+ Crea una configurazione di sicurezza EMR per l'installazione di Apache Ranger. Per ulteriori informazioni, consulta [Creazione di una configurazione di sicurezza EMR](emr-ranger-security-config.md).

# Configurazione dei cluster Amazon EMR abilitati da Zeppelin per Apache Ranger
<a name="emr-ranger-configure-zeppelin"></a>

L'argomento illustra come configurare [Apache Zeppelin](https://zeppelin.apache.org/) per un cluster Amazon EMR abilitato per Apache Ranger in modo da poter utilizzare Zeppelin come notebook per l'esplorazione interattiva dei dati. Zeppelin è incluso nel rilascio di Amazon EMR versione 5.0.0 e successive. Le versioni precedenti includono Zeppelin come applicazione sandbox. Per ulteriori informazioni, consulta [Versioni del rilascio 4.x di Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-4x.html) nella *Guida ai rilasci di Amazon EMR*.

Per impostazione predefinita, Zeppelin è configurato con un log-in e una password di default che non sono sicuri in un ambiente multi-tenant.

Per configurare Zeppelin, completa la procedura riportata di seguito.

1. **Modifica del meccanismo di autenticazione**. 

   Modifica del file `shiro.ini` per implementare il meccanismo di autenticazione preferito. Zeppelin supporta Active Directory, LDAP, PAM e Knox SSO. Consulta [Autenticazione Apache Shiro per Apache Zeppelin](https://zeppelin.apache.org/docs/0.8.2/setup/security/shiro_authentication.html) per ulteriori informazioni.

1. **Configurazione di Zeppelin per rappresentare l'utente finale**

   Consentire a Zeppelin di rappresentare l'utente finale fa sì che i processi inviati da Zeppelin vengano eseguiti come utente finale. Aggiungi la seguente configurazione a `core-site.xml`:

   ```
   [
     {
       "Classification": "core-site",
       "Properties": {
         "hadoop.proxyuser.zeppelin.hosts": "*",
         "hadoop.proxyuser.zeppelin.groups": "*"
       },
       "Configurations": [
       ]
     }
   ]
   ```

   Quindi, aggiungi la seguente configurazione a `hadoop-kms-site.xml` in `/etc/hadoop/conf`:

   ```
   [
     {
       "Classification": "hadoop-kms-site",
       "Properties": {
         "hadoop.kms.proxyuser.zeppelin.hosts": "*",
         "hadoop.kms.proxyuser.zeppelin.groups": "*"
       },
       "Configurations": [
       ]
     }
   ]
   ```

   Puoi anche aggiungere queste configurazioni al tuo cluster Amazon EMR tramite la console seguendo la procedura descritta in [Riconfigurazione di un gruppo di istanze nella console](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html#emr-configure-apps-running-cluster-console).

1. **Consenti a Zeppelin di eseguire il comando sudo come utente finale**

   Crea un file `/etc/sudoers.d/90-zeppelin-user` che contenga quanto segue:

   ```
   zeppelin ALL=(ALL) NOPASSWD:ALL
   ```

1. **Modifica le impostazioni degli interpreti per eseguire i processi degli utenti nei propri processi**.

   Per tutti gli interpreti, configurali per creare un'istanza degli interpreti "per user" (per utente) nei processi "isolated" (isolati).  
![\[Diagramma dell'architettura Amazon EMR e Apache Ranger.\]](http://docs.aws.amazon.com/it_it/emr/latest/ManagementGuide/images/per_user.png)

1. **Modifica `zeppelin-env.sh`**

   Aggiungi quanto segue a `zeppelin-env.sh` in modo che Zeppelin inizi ad avviare interpreti come utente finale:

   ```
   ZEPPELIN_IMPERSONATE_USER=`echo ${ZEPPELIN_IMPERSONATE_USER} | cut -d @ -f1`
   export ZEPPELIN_IMPERSONATE_CMD='sudo -H -u ${ZEPPELIN_IMPERSONATE_USER} bash -c'
   ```

   Aggiungi quanto segue a `zeppelin-env.sh` per modificare le autorizzazioni predefinite del notebook in sola lettura solo per l'autore:

   ```
   export ZEPPELIN_NOTEBOOK_PUBLIC="false"
   ```

   Infine, aggiungete quanto segue `zeppelin-env.sh` per includere il percorso della RecordServer classe EMR dopo la prima `CLASSPATH` istruzione:

   ```
   export CLASSPATH="$CLASSPATH:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-connector-common.jar:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-spark-connector.jar:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-client.jar:/usr/share/aws/emr/record-server/lib/aws-emr-record-server-common.jar:/usr/share/aws/emr/record-server/lib/jars/secret-agent-interface.jar"
   ```

1. **Riavvia Zeppelin.**

   Per riavviare Zeppelin, esegui il comando seguente:

   ```
   sudo systemctl restart zeppelin
   ```

# Problemi noti per l'integrazione con Amazon EMR
<a name="emr-ranger-security-considerations"></a>

**Problemi noti**

C'è un problema noto all'interno del rilascio di Amazon EMR 5.32 in cui le autorizzazioni per `hive-site.xml` sono state modificate in modo che solo gli utenti privilegiati possano leggerlo, in quanto potrebbero esserci credenziali memorizzate al suo interno. Ciò potrebbe impedire a Hue di leggere `hive-site.xml` e fare in modo che le pagine Web vengano ricaricate continuamente. Se si verificano problemi, aggiungi la seguente configurazione per risolvere il problema:

```
[
  {
    "Classification": "hue-ini",
    "Properties": {},
    "Configurations": [
      {
        "Classification": "desktop",
        "Properties": {
          "server_group":"hive_site_reader"
         },
        "Configurations":[
        ]
      }
    ]
  }
]
```

Sussiste un problema noto per cui il plug-in EMRFS S3 per Apache Ranger attualmente non supporta la caratteristica Security Zone di Apache Ranger. Le restrizioni per il controllo degli accessi definite utilizzando la funzione Security Zone non vengono applicate ai cluster Amazon EMR.

**Applicazione UIs**

Per impostazione predefinita, l'interfaccia utente di un'applicazione non esegue l'autenticazione. Ciò include l'ResourceManager interfaccia utente, l'interfaccia NodeManager utente, l'interfaccia utente Livy, tra gli altri. Inoltre, qualsiasi utente che abbia la possibilità di accedere a UIs è in grado di visualizzare le informazioni sui lavori di tutti gli altri utenti.

Se questo comportamento non è desiderato, è necessario assicurarsi che venga utilizzato un gruppo di sicurezza per limitare l'accesso all'applicazione UIs da parte degli utenti.

**Autorizzazioni HDFS predefinite**

Per impostazione predefinita, agli oggetti creati dagli utenti in HDFS vengono concesse autorizzazioni leggibili a livello mondiale. Ciò può tradursi nella leggibilità dei dati da parte degli utenti che non dovrebbero avervi accesso. Per modificare questo comportamento in modo che le autorizzazioni predefinite dei file siano impostate per la lettura e la scrittura solo dall'autore del processo, esegui questa procedura.

Quando si crea il cluster EMR, fornisci la seguente configurazione:

```
[
  {
    "Classification": "hdfs-site",
    "Properties": {
      "dfs.namenode.acls.enabled": "true",
      "fs.permissions.umask-mode": "077",
      "dfs.permissions.superusergroup": "hdfsadmingroup"
    }
  }
]
```

Inoltre, esegui la seguente operazione di bootstrap:

```
--bootstrap-actions Name='HDFS UMask Setup',Path=s3://elasticmapreduce/hdfs/umask/umask-main.sh
```