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à.
Crea chiavi e certificati per la crittografia dei dati con Amazon EMR
Prima di specificare le opzioni di crittografia utilizzando una configurazione di sicurezza, scegli il provider che desideri utilizzare per le chiavi e gli artefatti di crittografia. Ad esempio, puoi utilizzare AWS KMS o un provider personalizzato da te creato. Quindi, crea le chiavi o il provider di chiavi come descritto in questa sezione.
Fornitura di chiavi per crittografare i dati inattivi
Puoi utilizzare AWS Key Management Service (AWS KMS) o un provider di chiavi personalizzate per la crittografia dei dati a riposo in Amazon EMR. Quando si utilizza AWS KMS, vengono addebitati costi per l'archiviazione e l'uso delle chiavi di crittografia. Per ulteriori informazioni, consulta Prezzi di AWS KMS
Questo argomento fornisce dettagli sulla policy delle chiavi per una chiave KMS da utilizzare con Amazon EMR, nonché linee guida ed esempi di codice per scrivere una classe di provider di chiavi personalizzato per la crittografia di Amazon S3. Per ulteriori informazioni sulla creazione di chiavi, consulta Creazione di chiavi nella Guida per gli sviluppatori di AWS Key Management Service .
Utilizzo AWS KMS keys per la crittografia
La chiave di AWS KMS crittografia deve essere creata nella stessa regione dell'istanza del cluster Amazon EMR e dei bucket Amazon S3 utilizzati con EMRFS. Se la chiave specificata si trova in un account diverso da quello utilizzato per configurare un cluster, è necessario specificare la chiave utilizzando il relativo ARN.
Il ruolo per il profilo dell' EC2 istanza Amazon deve disporre delle autorizzazioni per utilizzare la chiave KMS specificata. Il ruolo predefinito per il profilo dell'istanza in Amazon EMR è EMR_EC2_DefaultRole
. Se utilizzi un ruolo diverso per il profilo dell'istanza o utilizzi ruoli IAM per le richieste EMRFS ad Amazon S3, assicurati che ogni ruolo venga aggiunto come utente chiave a seconda dei casi. Ciò concede al ruolo l'autorizzazione a utilizzare la chiave KMS. Per ulteriori informazioni, consulta Utilizzo di policy delle chiavi nella Guida per gli sviluppatori di AWS Key Management Service e Configurazione dei ruoli IAM per richieste EMRFS ad Amazon S3.
Puoi usare il AWS Management Console per aggiungere il tuo profilo di istanza o il tuo profilo di EC2 istanza all'elenco degli utenti chiave per la chiave KMS specificata, oppure puoi utilizzare il AWS CLI o un AWS SDK per allegare una policy chiave appropriata.
Nota che Amazon EMR supporta solo Chiavi KMS simmetriche. Non è possibile utilizzare una chiave KMS asimmetrica per crittografare i dati a riposo in un cluster Amazon EMR. Per informazioni su come determinare se una chiave KMS è simmetrica o asimmetrica, consulta Identificazione di chiavi KMS simmetriche e asimmetriche.
La procedura seguente descrive come aggiungere il profilo dell'istanza Amazon EMR predefinito, EMR_EC2_DefaultRole
come utente di chiavi utilizzando la AWS Management Console. Presuppone che tu abbia già creato una chiave KMS. Per creare una nuova chiave KMS, consulta Creazione di chiavi nella Guida per gli sviluppatori di AWS Key Management Service .
Per aggiungere il profilo di EC2 istanza per Amazon EMR all'elenco degli utenti delle chiavi di crittografia
-
Accedi a AWS Management Console e apri la console AWS Key Management Service (AWS KMS) su https://console.aws.amazon.com/kms
. -
Per modificare il Regione AWS, usa il selettore della regione nell'angolo in alto a destra della pagina.
-
Seleziona l'alias della chiave KMS da modificare.
-
Nella pagina dei dettagli della chiave, in Key Users (Utenti di chiavi), scegli Add (Aggiungi).
-
Nella finestra di dialogo Add key users (Aggiungi utenti chiave) selezionare il ruolo appropriato. Il nome del ruolo di default è
EMR_EC2_DefaultRole
. -
Scegliere Add (Aggiungi).
Abilitazione della crittografia EBS fornendo autorizzazioni aggiuntive per le chiavi KMS
A partire da Amazon EMR versione 5.24.0, puoi crittografare il dispositivo di root EBS e i volumi di archiviazione utilizzando un'opzione di configurazione di sicurezza. Per abilitare tale opzione, è necessario specificare AWS KMS come fornitore di chiavi. Inoltre, è necessario concedere al ruolo di servizio EMR_DefaultRole
le autorizzazioni per utilizzare AWS KMS key quelle specificate.
Puoi utilizzare il AWS Management Console per aggiungere il ruolo di servizio all'elenco degli utenti chiave per la chiave KMS specificata oppure puoi utilizzare il AWS CLI o un AWS SDK per allegare una politica di chiave appropriata.
La procedura seguente descrive come utilizzare per AWS Management Console aggiungere il ruolo di servizio Amazon EMR predefinito EMR_DefaultRole
come utente chiave. Presuppone che tu abbia già creato una chiave KMS. Per creare una nuova chiave KMS, consulta Creazione di chiavi nella Guida per gli sviluppatori di AWS Key Management Service .
Per aggiungere il ruolo del servizio Amazon EMR all'elenco degli utenti delle chiavi di crittografia
-
Accedi a AWS Management Console e apri la console AWS Key Management Service (AWS KMS) su https://console.aws.amazon.com/kms
. -
Per modificare il Regione AWS, usa il selettore della regione nell'angolo in alto a destra della pagina.
-
Nella barra laterale sinistra, scegli Customer managed keys (Chiavi gestite dal cliente).
-
Seleziona l'alias della chiave KMS da modificare.
-
Nella pagina dei dettagli della chiave, in Key Users (Utenti di chiavi), scegli Add (Aggiungi).
-
Nella sezione Aggiungi utenti chiave, seleziona il ruolo appropriato. Il nome del ruolo di servizio predefinito per Amazon EMR è.
EMR_DefaultRole
-
Scegli Aggiungi.
Creazione di un provider di chiavi personalizzato
Quando utilizzi una configurazione di sicurezza, devi specificare un nome di classe di provider differente per la crittografia per dischi locali e la crittografia di Amazon S3. I requisiti per il fornitore di chiavi personalizzate dipendono dall'utilizzo della crittografia locale del disco e della crittografia Amazon S3, nonché della versione di rilascio di Amazon EMR.
A seconda del tipo di crittografia utilizzato per la creazione di un provider di chiavi personalizzate, l'applicazione deve inoltre implementare interfacce diverse EncryptionMaterialsProvider . Entrambe le interfacce sono disponibili nella versione AWS SDK for Java 1.11.0 e successive.
-
Per implementare la crittografia locale del disco, usa com.amazonaws.services.elasticmapreduce.spi.security. EncryptionMaterialsProvider interfaccia.
È possibile utilizzare qualsiasi strategia per fornire materiali di crittografia per l'implementazione. Ad esempio, è possibile scegliere di fornire materiali di crittografia statici o integrarli con un sistema di gestione delle chiavi più complesso.
Se utilizzi la crittografia Amazon S3, devi utilizzare gli algoritmi di crittografia AES/GCM/NoPaddingper materiali di crittografia personalizzati.
Se utilizzi la crittografia del disco locale, l'algoritmo di crittografia da utilizzare per i materiali di crittografia personalizzati varia in base alla versione EMR. Per Amazon EMR 7.0.0 e versioni precedenti, è necessario utilizzare. AES/GCM/NoPadding Per Amazon EMR 7.1.0 e versioni successive, devi utilizzare AES.
La EncryptionMaterialsProvider classe ottiene materiali di crittografia in base al contesto di crittografia. Amazon EMR popola le informazioni sul contesto di crittografia al runtime per aiutare il chiamante a determinare i materiali di crittografia corretti da restituire.
Esempio: utilizzo di un provider di chiavi personalizzato per la crittografia Amazon S3 con EMRFS
Quando Amazon EMR recupera i materiali di crittografia dalla EncryptionMaterialsProvider classe per eseguire la crittografia, EMRFS compila facoltativamente l'argomento MaterialsDescription con due campi: l'URI Amazon S3 per l'oggetto JobFlowId e il cluster, che possono essere utilizzati dalla classe per restituire i materiali di crittografia in modo selettivo. EncryptionMaterialsProvider
Ad esempio, il provider potrebbe restituire chiavi diverse per diversi prefissi URI di Amazon S3. Sarà la descrizione dei materiali di crittografia restituiti a essere memorizzata con l'oggetto Amazon S3 anziché il valore materialsDescription generato da EMRFS e passato al provider. Durante la decrittografia di un oggetto Amazon S3, la descrizione dei materiali di crittografia viene passata alla EncryptionMaterialsProvider classe, in modo che possa, ancora una volta, restituire selettivamente la chiave corrispondente per decrittografare l'oggetto.
Di seguito viene fornita un'implementazione di riferimento EncryptionMaterialsProvider . Un altro provider personalizzato è disponibile presso GitHub. EMRFSRSAEncryptionMaterialsProvider
import com.amazonaws.services.s3.model.EncryptionMaterials; import com.amazonaws.services.s3.model.EncryptionMaterialsProvider; import com.amazonaws.services.s3.model.KMSEncryptionMaterials; import org.apache.hadoop.conf.Configurable; import org.apache.hadoop.conf.Configuration; import java.util.Map; /** * Provides KMSEncryptionMaterials according to Configuration */ public class MyEncryptionMaterialsProviders implements EncryptionMaterialsProvider, Configurable{ private Configuration conf; private String kmsKeyId; private EncryptionMaterials encryptionMaterials; private void init() { this.kmsKeyId = conf.get("my.kms.key.id"); this.encryptionMaterials = new KMSEncryptionMaterials(kmsKeyId); } @Override public void setConf(Configuration conf) { this.conf = conf; init(); } @Override public Configuration getConf() { return this.conf; } @Override public void refresh() { } @Override public EncryptionMaterials getEncryptionMaterials(Map<String, String> materialsDescription) { return this.encryptionMaterials; } @Override public EncryptionMaterials getEncryptionMaterials() { return this.encryptionMaterials; } }
Fornitura di certificati per la crittografia di dati in transito con Amazon EMR
Con Amazon EMR versione 4.8.0 o successive, sono disponibili due opzioni per specificare artifact di crittografia dei dati in transito utilizzando una configurazione di sicurezza:
-
Puoi creare manualmente certificati PEM, includerli in un file .zip e quindi fare riferimento al file .zip in Amazon S3.
-
Puoi implementare un provider di certificati personalizzato come classe Java, specificare il file JAR dell'applicazione in Amazon S3 e infine fornire il nome di classe completo del provider come dichiarato nell'applicazione. La classe deve implementare l'interfaccia TLSArtifactsProvider disponibile a partire dalla AWS SDK for Java versione 1.11.0.
Amazon EMR scarica automaticamente artifact in ogni nodo nel cluster e successivamente li utilizza per implementare le funzionalità di crittografia in transito open source. Per ulteriori informazioni sulle opzioni disponibili, consulta Crittografia in transito.
Utilizzo di certificati PEM
Quando specifichi un file ZIP per la crittografia in transito, per la configurazione di sicurezza i file PEM nel file ZIP devono essere denominati esattamente come illustrato di seguito:
Nome file | Obbligatorio/facoltativo | Informazioni |
---|---|---|
privateKey.pem | Richiesto | Chiave privata |
certificateChain.pem | Richiesto | Catena di certificati |
trustedCertificates.pem | Facoltativo | Si consiglia di fornire un certificato non firmato dalla Trusted Root Certification Authority (CA) predefinita di Java o da una CA intermedia che possa collegarsi alla CA root affidabile predefinita di Java. Non è consigliabile utilizzare il formato public CAs quando si utilizzano certificati wildcard o quando si disabilita la verifica del nome host. |
È probabile che tu intenda configurare il file PEM della chiave privata affinché sia un certificato generico che consente l'accesso al dominio Amazon VPC in cui si trovano le istanze di cluster. Ad esempio, se il cluster risiede in us-east-1 (Virginia settentrionale), puoi scegliere di specificare un nome comune nella configurazione del certificato che autorizza l'accesso al cluster specificando CN=*.ec2.internal
nella definizione di oggetto del certificato. Se il cluster risiede in us-west-2 (Oregon), puoi specificare CN=*.us-west-2.compute.internal
.
Se il file PEM fornito nell'elemento di crittografia non contiene un carattere jolly per il dominio del nome comune, devi modificare il valore di to. hadoop.ssl.hostname.verifier
ALLOW_ALL
Per farlo nelle versioni 7.3.0 e successive di Amazon EMR, aggiungi la core-site
classificazione quando invii le configurazioni a un cluster. Nelle versioni precedenti alla 7.3.0, aggiungi la configurazione "hadoop.ssl.hostname.verifier": "ALLOW_ALL"
direttamente nel file. core-site.xml
Questa modifica è necessaria perché il verificatore del nome host predefinito richiede un nome host senza il carattere jolly perché tutti gli host del cluster lo utilizzano. Per ulteriori informazioni sulla configurazione di cluster EMR in Amazon VPC, consulta Configurazione della rete in un VPC per Amazon EMR.
L'esempio seguente dimostra come utilizzare OpenSSLus-west-2
(Oregon) come specificato dal nome di dominio
come nome comune.*.us-west-2.compute.internal
Sono specificati altri elementi di oggetto facoltativi, come paese (C), stato (S) e lingua (L). Poiché viene generato un certificato autofirmato, il secondo comando dell'esempio copia il file certificateChain.pem
nel file trustedCertificates.pem
. Il terzo comando usa zip
per creare il file my-certs.zip
che contiene i certificati.
Importante
Questo esempio è solo una proof-of-concept dimostrazione. L'utilizzo di certificati autofirmati non è consigliato e presenta un potenziale rischio per la sicurezza. Per i sistemi di produzione, utilizza un'autorità di certificazione attendibile per emettere certificati.
$ openssl req -x509 -newkey rsa:2048 -keyout privateKey.pem -out certificateChain.pem -days 365 -nodes -subj '/C=US/ST=Washington/L=Seattle/O=MyOrg/OU=MyDept/CN=*.us-west-2.compute.internal' $ cp certificateChain.pem trustedCertificates.pem $ zip -r -X my-certs.zip certificateChain.pem privateKey.pem trustedCertificates.pem