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à.
File crittografato lato client Amazon S3
Con la crittografia lato client di Amazon S3, la crittografia e la decrittografia Amazon S3 avvengono nel client EMRFS nel tuo cluster. Gli oggetti vengono crittografati prima di essere caricati su Amazon S3 e decrittati dopo il loro download. Il provider specificato fornisce la chiave di crittografia utilizzata dal client. Il client può utilizzare le chiavi fornite da AWS KMS (CSE-KMS) o una classe Java personalizzata che fornisce la chiave principale lato client (CSE-C). Le specifiche di crittografia sono leggermente diverse tra CSE-KMS e CSE-C, a seconda del provider specificato e dei metadati dell'oggetto da decrittare o crittografare. Per ulteriori informazioni su queste differenze, consulta Protezione dei dati tramite la crittografia lato client nella Guida per l'utente di Amazon Simple Storage Service.
Nota
Amazon S3 CSE garantisce solo che i dati EMRFS scambiati con Amazon S3 siano crittografati; non tutti i dati sui volumi delle istanze del cluster sono crittografati. Inoltre, poiché Hue non utilizza EMRFS, gli oggetti che il browser di file Hue S3 scrive su Amazon S3 non vengono crittografati.
Per specificare CSE-KMS per i dati EMRFS in Amazon S3 utilizzando AWS CLI
-
Digita il comando seguente e
MyKMSKeyID
sostituiscilo con l'ID chiave o l'ARN della chiave KMS da utilizzare:aws emr create-cluster --release-label
emr-4.7.2 or earlier
--emrfs Encryption=ClientSide,ProviderType=KMS,KMSKeyId=MyKMSKeyId
Creazione di un provider di chiavi personalizzato
A seconda del tipo di crittografia utilizzato per la creazione di un provider di chiavi personalizzato, 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, utilizza 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; } }
Specificare un fornitore di materiali personalizzati utilizzando il AWS CLI
Per utilizzare AWS CLI, passa gli argomenti Encryption
, ProviderType
, CustomProviderClass
e CustomProviderLocation
all'opzione emrfs
.
aws emr create-cluster --instance-type m5.xlarge --release-label
emr-4.7.2 or earlier
--emrfs Encryption=ClientSide,ProviderType=Custom,CustomProviderLocation=s3://amzn-s3-demo-bucket/myfolder/provider.jar,CustomProviderClass=classname
Con l'impostazione di Encryption
su ClientSide
, si attiva la crittografia lato client, CustomProviderClass
è il nome dell'oggetto EncryptionMaterialsProvider
e CustomProviderLocation
è la posizione locale o Amazon S3 da cui Amazon EMR copia CustomProviderClass
in ogni nodo nel cluster e lo inserisce nel classpath.
Configurazione di un provider di materiali personalizzato mediante un kit SDK
Per utilizzare un SDK, puoi impostare la proprietà fs.s3.cse.encryptionMaterialsProvider.uri
per scaricare la classe EncryptionMaterialsProvider
personalizzata che memorizzi in Amazon S3 in ogni nodo del cluster. Questa configurazione viene eseguita nel file emrfs-site.xml
con la CSE abilitata e la corretta posizione del provider personalizzato.
Ad esempio, durante l' AWS SDK for Java utilizzo RunJobFlowRequest, il codice potrebbe essere simile al seguente:
<snip> Map<String,String> emrfsProperties = new HashMap<String,String>(); emrfsProperties.put("fs.s3.cse.encryptionMaterialsProvider.uri","s3://amzn-s3-demo-bucket/MyCustomEncryptionMaterialsProvider.jar"); emrfsProperties.put("fs.s3.cse.enabled","true"); emrfsProperties.put("fs.s3.consistent","true"); emrfsProperties.put("fs.s3.cse.encryptionMaterialsProvider","full.class.name.of.EncryptionMaterialsProvider"); Configuration myEmrfsConfig = new Configuration() .withClassification("emrfs-site") .withProperties(emrfsProperties); RunJobFlowRequest request = new RunJobFlowRequest() .withName("Custom EncryptionMaterialsProvider") .withReleaseLabel("
emr-7.6.0
") .withApplications(myApp) .withConfigurations(myEmrfsConfig) .withServiceRole("EMR_DefaultRole_V2") .withJobFlowRole("EMR_EC2_DefaultRole") .withLogUri("s3://myLogUri
/") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myEc2Key
") .withInstanceCount(2) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m5.xlarge") .withSlaveInstanceType("m5.xlarge") ); RunJobFlowResult result = emr.runJobFlow(request); </snip>
Personalizza EncryptionMaterialsProvider con argomenti
È possibile che sia necessario passare degli argomenti direttamente al provider. A questo proposito, puoi utilizzare la classificazione di configurazione emrfs-site
con argomenti personalizzati definiti come proprietà. Un esempio di configurazione, salvato come file myConfig.json
, è riportato di seguito:
[ { "Classification": "emrfs-site", "Properties": { "myProvider.arg1":"value1", "myProvider.arg2":"value2" } } ]
Utilizzando il create-cluster
comando di AWS CLI, è possibile utilizzare l'--configurations
opzione per specificare il file come illustrato di seguito:
aws emr create-cluster --release-label
--instance-type
emr-7.6.0
m5.xlarge
--instance-count2
--configurations file://myConfig.json --emrfs Encryption=ClientSide,CustomProviderLocation=s3://amzn-s3-demo-bucket/myfolder/myprovider.jar
,CustomProviderClass=classname
Configurazione del supporto EMRFS S3EC V2
Per i rilasci S3 Java SDK (1.11.837 e versioni successive), è stato introdotto il client di crittografia versione 2 (S3EC V2) con vari miglioramenti alla sicurezza. Per maggiori informazioni, consulta il post del blog S3 Updates to the Amazon S3 Encryption Client (Aggiornamenti al client di crittografia Amazon S3)
Il client di crittografia V1 è ancora disponibile nell'SDK per la compatibilità con le versioni precedenti. Per impostazione predefinita, EMRFS utilizzerà S3EC V1 per crittografare e decrittare gli oggetti S3 se CSE è abilitato.
Gli oggetti S3 crittografati con S3EC V2 non possono essere decritati da EMRFS su un cluster EMR la cui versione di rilascio è precedente a emr-5.31.0 (emr-5.30.1 e precedenti, emr-6.1.0 e precedenti).
Esempio Configurazione di EMRFS per l'utilizzo di S3EC V2
Per configurare EMRFS per l'utilizzo di S3EC V2, aggiungi la seguente configurazione:
{ "Classification": "emrfs-site", "Properties": { "fs.s3.cse.encryptionV2.enabled": "true" } }
Proprietà di emrfs-site.xml
per la crittografia lato client di Amazon S3
Proprietà | Valore predefinito | Descrizione |
---|---|---|
fs.s3.cse.enabled |
false |
Quando impostata su |
fs.s3.cse.encryptionV2.enabled |
false |
Se impostato su |
fs.s3.cse.encryptionMaterialsProvider.uri |
N/A |
Si applica quando si utilizzano materiali di crittografia personalizzati. L'URI Amazon S3 in cui si trova il file JAR con EncryptionMaterialsProvider . Quando si fornisce questo URI, Amazon EMR scarica automaticamente il JAR in tutti i nodi del cluster. |
fs.s3.cse.encryptionMaterialsProvider |
N/A |
Il percorso della classe |
fs.s3.cse.materialsDescription.enabled |
false |
Se impostato su |
fs.s3.cse.kms.keyId |
N/A |
Si applica quando si utilizza CSE-KMS. Il valore dell' KeyIdARN o dell'alias della chiave KMS utilizzata per la crittografia. |
fs.s3.cse.cryptoStorageMode |
ObjectMetadata |
La modalità di archiviazione Amazon S3. Per impostazione predefinita, la descrizione delle informazioni di crittografia è archiviata nei metadati degli oggetti. È anche possibile archiviare la descrizione in un file di istruzioni. I valori validi sono e. ObjectMetadata InstructionFile Per ulteriori informazioni, consulta Crittografia dei dati lato client con Amazon AWS SDK for Java S3 |