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à.
Crittografia lato client Amazon S3
Con la crittografia lato client di Amazon S3, la crittografia e la decrittografia di Amazon S3 avvengono nel client del cluster. EMRFS 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 radice sul lato client (-C). CSE Le specifiche di crittografia sono leggermente diverse tra CSE - KMS e CSE -C, a seconda del provider specificato e dei metadati dell'oggetto da decrittografare 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 garantisce CSE solo che EMRFS i dati scambiati con Amazon S3 siano crittografati; non tutti i dati sui volumi delle istanze del cluster sono crittografati. Inoltre, poiché Hue non utilizzaEMRFS, gli oggetti che Hue S3 File Browser scrive su Amazon S3 non sono crittografati.
Per specificareCSE: KMS per EMRFS i dati in Amazon S3 utilizzando AWS CLI
-
Digita il seguente comando e sostituiscilo
MyKMSKeyID
con l'ID della chiave o ARN della KMS chiave da usare: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 durante la creazione di un provider di chiavi personalizzato, l'applicazione deve inoltre implementare EncryptionMaterialsProvider interfacce diverse. Entrambe le interfacce sono disponibili nella versione 1.11.0 e successive AWS SDK per Java.
-
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 locale del disco, l'algoritmo di crittografia da utilizzare per i materiali di crittografia personalizzati varia a seconda della versione. EMR Per Amazon EMR 7.0.0 e versioni precedenti, devi usare. AES/GCM/NoPadding Per Amazon EMR 7.1.0 e versioni successive, devi usare AES.
La EncryptionMaterialsProvider classe ottiene materiali di crittografia in base al contesto di crittografia. Amazon EMR inserisce le informazioni relative al contesto di crittografia in fase di esecuzione per aiutare il chiamante a determinare i materiali di crittografia corretti da restituire.
Esempio: utilizzo di un provider di chiavi personalizzate per la crittografia Amazon S3 con EMRFS
Quando Amazon EMR recupera i materiali di crittografia dalla EncryptionMaterialsProvider classe per eseguire la crittografia, EMRFS opzionalmente compila l' materialsDescription argomento con due campi: Amazon S3 URI per l'oggetto e il cluster, che possono essere utilizzati dalla EncryptionMaterialsProvider classe per restituire i materiali JobFlowId di crittografia in modo selettivo.
Ad esempio, il provider può restituire chiavi diverse per prefissi Amazon S3 URI diversi. È la descrizione del materiale di crittografia restituito che alla fine viene archiviato con l'oggetto Amazon S3 anziché il materialsDescription valore generato 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
Impostato Encryption
per ClientSide
abilitare la crittografia lato client, CustomProviderClass
è il nome dell'EncryptionMaterialsProvider
oggetto ed CustomProviderLocation
è la posizione locale o Amazon S3 da cui EMR Amazon CustomProviderClass
copia in ogni nodo del cluster e lo colloca nel classpath.
Specificare un fornitore di materiali personalizzati utilizzando un SDK
Per utilizzare unSDK, puoi impostare la proprietà fs.s3.cse.encryptionMaterialsProvider.uri
per scaricare la EncryptionMaterialsProvider
classe personalizzata archiviata in Amazon S3 su ogni nodo del cluster. La configuri in un emrfs-site.xml
file insieme alla posizione CSE abilitata e corretta 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.3.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.3.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
Le SDK versioni di S3 Java (1.11.837 e successive) supportano il client di crittografia versione 2 (S3EC V2) con vari miglioramenti della 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 in SDK per la compatibilità con le versioni precedenti. Per impostazione predefinita, EMRFS utilizzerà S3EC V1 per crittografare e decrittografare gli oggetti S3, se abilitato. CSE
Gli oggetti S3 crittografati con S3EC V2 non possono essere decrittografati EMRFS su un EMR cluster la cui versione di rilascio è precedente a emr-5.31.0 (emr-5.30.1 e precedenti, emr-6.1.0 e precedenti).
Esempio EMRFSConfigura per utilizzare S3EC V2
Per configurare l'utilizzo EMRFS 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 |
Se impostato 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'Amazon S3 URI in cui si JAR EncryptionMaterialsProvider trova il. Quando lo fornisciURI, Amazon EMR lo scarica automaticamente su tutti JAR 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 del KeyIdARN, o alias della KMS chiave 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 ObjectMetadata e. InstructionFile Per ulteriori informazioni, consulta Crittografia dei dati lato client con Amazon AWS SDK for Java S3 |