Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Enkripsi di sisi klien Amazon S3
Dengan enkripsi sisi klien Amazon S3, enkripsi dan dekripsi Amazon S3 berlangsung di klien di cluster Anda. EMRFS Objek dienkripsi sebelum diunggah ke Amazon S3 dan didekripsi setelah diunduh. Penyedia yang Anda tentukan menyediakan kunci enkripsi yang digunakan klien. Klien dapat menggunakan kunci yang disediakan oleh AWS KMS (CSE-KMS) atau kelas Java kustom yang menyediakan kunci root sisi klien (CSE-C). Spesifikasi enkripsi sedikit berbeda antara CSE - KMS dan CSE -C, tergantung pada penyedia yang ditentukan dan metadata objek yang didekripsi atau dienkripsi. Untuk informasi selengkapnya tentang perbedaan ini, lihat Melindungi data menggunakan enkripsi sisi klien di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
catatan
Amazon S3 CSE hanya memastikan bahwa EMRFS data yang dipertukarkan dengan Amazon S3 dienkripsi; tidak semua data pada volume instans cluster dienkripsi. Selain itu, karena Hue tidak menggunakanEMRFS, objek yang ditulis oleh Browser File Hue S3 ke Amazon S3 tidak dienkripsi.
Untuk menentukan CSE - KMS untuk EMRFS data di Amazon S3 menggunakan AWS CLI
-
Ketik perintah berikut dan ganti
MyKMSKeyID
dengan ID Kunci atau ARN KMS kunci yang akan digunakan:aws emr create-cluster --release-label
emr-4.7.2 or earlier
--emrfs Encryption=ClientSide,ProviderType=KMS,KMSKeyId=MyKMSKeyId
Membuat penyedia kunci khusus
Bergantung pada jenis enkripsi yang Anda gunakan saat membuat penyedia kunci khusus, aplikasi juga harus menerapkan EncryptionMaterialsProvider antarmuka yang berbeda. Kedua antarmuka tersedia dalam versi AWS SDK untuk Java 1.11.0 dan yang lebih baru.
-
Untuk mengimplementasikan enkripsi disk lokal, gunakan com.amazonaws.services.elasticmapreduce.spi.security. EncryptionMaterialsProvider antarmuka.
Anda dapat menggunakan strategi apa pun untuk menyediakan materi enkripsi untuk implementasi. Misalnya, Anda dapat memilih untuk menyediakan materi enkripsi statis atau mengintegrasikan dengan sistem manajemen kunci yang lebih kompleks.
Jika Anda menggunakan enkripsi Amazon S3, Anda harus menggunakan algoritme enkripsi AES/GCM/NoPaddinguntuk materi enkripsi khusus.
Jika Anda menggunakan enkripsi disk lokal, algoritme enkripsi yang digunakan untuk materi enkripsi kustom bervariasi menurut EMR rilis. Untuk Amazon EMR 7.0.0 dan yang lebih rendah, Anda harus menggunakan. AES/GCM/NoPadding Untuk Amazon EMR 7.1.0 dan yang lebih tinggi, Anda harus menggunakan AES.
EncryptionMaterialsProvider Kelas mendapatkan materi enkripsi dengan konteks enkripsi. Amazon EMR mengisi informasi konteks enkripsi saat runtime untuk membantu penelepon menentukan materi enkripsi yang benar untuk dikembalikan.
contoh Contoh: Menggunakan penyedia kunci khusus untuk enkripsi Amazon S3 dengan EMRFS
Saat Amazon EMR mengambil materi enkripsi dari EncryptionMaterialsProvider kelas untuk melakukan enkripsi, EMRFS secara opsional mengisi materialsDescription argumen dengan dua bidang: Amazon S3 URI untuk objek dan cluster, yang dapat digunakan oleh EncryptionMaterialsProvider kelas untuk mengembalikan materi enkripsi secara selektif. JobFlowId
Misalnya, penyedia dapat mengembalikan kunci yang berbeda untuk awalan Amazon S3 URI yang berbeda. Ini adalah deskripsi materi enkripsi yang dikembalikan yang akhirnya disimpan dengan objek Amazon S3 daripada materialsDescription nilai yang dihasilkan oleh EMRFS dan diteruskan ke penyedia. Saat mendekripsi objek Amazon S3, deskripsi bahan enkripsi diteruskan ke EncryptionMaterialsProvider kelas, sehingga dapat, sekali lagi, secara selektif mengembalikan kunci yang cocok untuk mendekripsi objek.
Implementasi EncryptionMaterialsProvider referensi disediakan di bawah ini. Penyedia kustom lain 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; } }
Menentukan penyedia bahan khusus menggunakan AWS CLI
Untuk menggunakan AWS CLI, teruskan argumen Encryption
, ProviderType
, CustomProviderClass
, dan CustomProviderLocation
ke opsi 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
Pengaturan Encryption
untuk ClientSide
mengaktifkan enkripsi sisi klien, CustomProviderClass
adalah nama EncryptionMaterialsProvider
objek Anda, dan CustomProviderLocation
merupakan lokasi lokal atau Amazon S3 dari mana EMR Amazon CustomProviderClass
menyalin ke setiap node di cluster dan menempatkannya di classpath.
Menentukan penyedia bahan kustom menggunakan SDK
Untuk menggunakanSDK, Anda dapat mengatur properti fs.s3.cse.encryptionMaterialsProvider.uri
untuk mengunduh EncryptionMaterialsProvider
kelas khusus yang Anda simpan di Amazon S3 ke setiap node di cluster Anda. Anda mengonfigurasi ini dalam emrfs-site.xml
file bersama dengan CSE diaktifkan dan lokasi yang tepat dari penyedia kustom.
Misalnya, dalam AWS SDK for Java penggunaan RunJobFlowRequest, kode Anda mungkin terlihat seperti berikut:
<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>
Kustom EncryptionMaterialsProvider dengan argumen
Anda mungkin perlu menyampaikan argumen langsung ke penyedia. Untuk melakukannya, Anda dapat menggunakan klasifikasi konfigurasi emrfs-site
dengan argumen khusus yang didefinisikan sebagai properti. Contoh konfigurasi ditunjukkan di bawah ini, yang mana disimpan sebagai file, myConfig.json
:
[ { "Classification": "emrfs-site", "Properties": { "myProvider.arg1":"value1", "myProvider.arg2":"value2" } } ]
Menggunakan create-cluster
perintah dari AWS CLI, Anda dapat menggunakan --configurations
opsi untuk menentukan file seperti yang ditunjukkan di bawah ini:
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
Mengkonfigurasi dukungan EMRFS S3EC V2
SDKRilis S3 Java (1.11.837 dan yang lebih baru) mendukung klien enkripsi Versi 2 (S3EC V2) dengan berbagai peningkatan keamanan. Untuk informasi selengkapnya, lihat postingan blog S3 Pembaruan untuk klien enkripsi Amazon S3
Klien enkripsi V1 masih tersedia di SDK untuk kompatibilitas mundur. Secara default EMRFS akan menggunakan S3EC V1 untuk mengenkripsi dan mendekripsi objek S3 jika diaktifkan. CSE
Objek S3 yang dienkripsi dengan S3EC V2 tidak dapat didekripsi oleh EMRFS pada EMR cluster yang versi rilisnya lebih awal dari emr-5.31.0 (emr-5.30.1 dan sebelumnya, emr-6.1.0 dan sebelumnya).
contoh Konfigurasikan EMRFS untuk menggunakan S3EC V2
Untuk mengkonfigurasi EMRFS untuk menggunakan S3EC V2, tambahkan konfigurasi berikut:
{ "Classification": "emrfs-site", "Properties": { "fs.s3.cse.encryptionV2.enabled": "true" } }
emrfs-site.xml
Properti untuk enkripsi di sisi klien Amazon S3
Properti | Nilai default | Deskripsi |
---|---|---|
fs.s3.cse.enabled |
false |
Saat disetel ke |
fs.s3.cse.encryptionV2.enabled |
false |
Ketika diatur ke |
fs.s3.cse.encryptionMaterialsProvider.uri |
N/A |
Berlaku saat menggunakan materi enkripsi khusus. Amazon S3 URI tempat JAR dengan EncryptionMaterialsProvider berada. Saat Anda menyediakan iniURI, Amazon EMR secara otomatis mengunduh JAR ke semua node di cluster. |
fs.s3.cse.encryptionMaterialsProvider |
N/A |
Jalur kelas |
fs.s3.cse.materialsDescription.enabled |
false |
Ketika diatur ke |
fs.s3.cse.kms.keyId |
N/A |
Berlaku saat menggunakan CSE -KMS. Nilai KeyId,ARN, atau alias KMS kunci yang digunakan untuk enkripsi. |
fs.s3.cse.cryptoStorageMode |
ObjectMetadata |
Mode penyimpanan Amazon S3. Secara default, deskripsi informasi enkripsi akan disimpan dalam metadata objek. Anda juga dapat menyimpan deskripsi dalam file instruksi. Nilai yang valid adalah ObjectMetadata danInstructionFile. Untuk informasi selengkapnya, lihat Enkripsi data sisi klien dengan Amazon S3 AWS SDK for Java dan Amazon |