Enkripsi transparan dalam HDFS di Amazon EMR - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Enkripsi transparan dalam HDFS di Amazon EMR

Enkripsi transparan diimplementasikan melalui penggunaan HDFS zona enkripsi, yang merupakan jalur HDFS yang Anda tetapkan. Setiap zona enkripsi memiliki kunci sendiri, yang disimpan di server kunci yang ditentukan menggunakan hdfs-site klasifikasi konfigurasi.

Dimulai dengan rilis Amazon EMR versi 4.8.0, Anda dapat menggunakan konfigurasi keamanan Amazon EMR untuk mengonfigurasi pengaturan enkripsi data untuk klaster lebih mudah. Konfigurasi keamanan menawarkan pengaturan untuk mengaktifkan keamanan untuk data dalam transit dan data at rest di volume penyimpanan Amazon Elastic Block Store (Amazon EBS) dan EMRFS di Amazon S3. Untuk informasi selengkapnya, lihat Enkripsi data dalam transit dan data yang tersisa di Panduan Pengelolaan Amazon EMR.

Amazon EMR menggunakan Hadoop KMS secara default; Namun, Anda dapat menggunakan KMS lain yang mengimplementasikan operasi KeyProvider API. Setiap file di zona enkripsi HDFS memiliki keunikan kunci enkripsi data tersendiri, yang dienkripsi oleh kunci zona enkripsi. Data HDFS dienkripsi end-to-end (yang tersisa dan yang ada di transit) ketika data ditulis ke zona enkripsi karena kegiatan enkripsi dan dekripsi hanya terjadi di klien.

Anda tidak dapat memindahkan file antara zona enkripsi atau dari zona enkripsi ke jalur yang tidak terenkripsi.

Klien HDFS berinteraksi dengan Hadoop KMS (atau KMS alternatif yang Anda konfigurasi) melalui operasi KeyProvider API. NameNode KMS bertanggung jawab untuk menyimpan kunci enkripsi di penyimpanan kunci dukungan. Juga, Amazon EMR memasukkan kebijakan kekuatan terbatas JCE, sehingga Anda dapat membuat kunci dengan panjang yang diinginkan.

Untuk informasi selengkapnya, lihat Enkripsi transparan dalam HDFS di dokumentasi Hadoop.

catatan

Di Amazon EMR, KMS melalui HTTPS tidak diaktifkan secara default dengan Hadoop KMS. Untuk informasi selengkapnya tentang cara mengaktifkan KMS melalui HTTPS, lihat dokumentasi Hadoop KMS.

Mengonfigurasi enkripsi transparan HDFS

Anda dapat mengonfigurasi enkripsi transparan di Amazon EMR dengan membuat kunci dan menambahkan zona enkripsi. Anda dapat melakukannya dengan dua cara:

  • Menggunakan operasi API konfigurasi Amazon EMR ketika Anda membuat sebuah klaster

  • Menggunakan langkah JAR Hadoop dengan command-runner.jar

  • Login ke klaster simpul utama Hadoop dan menggunakan hadoop key dan hdfs crypto klien baris perintah

  • Menggunakan API REST untuk Hadoop KMS dan HDFS

Untuk informasi lebih lanjut tentang API REST, lihat dokumentasi masing-masing untuk Hadoop KMS dan HDFS.

Untuk membuat zona enkripsi serta pembuatan kunci dan klasternya menggunakan CLI

hdfs-encryption-zones Klasifikasi dalam operasi API konfigurasi memungkinkan Anda untuk menentukan nama kunci dan zona enkripsi ketika Anda membuat sebuah klaster. Amazon EMR menciptakan kunci ini di Hadoop KMS pada klaster Anda dan mengonfigurasi zona enkripsi.

  • Buat klaster Anda dengan perintah berikut.

    aws emr create-cluster --release-label emr-5.36.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    catatan

    Karakter lanjutan baris Linux (\) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

    myConfig.json:

    [ { "Classification": "hdfs-encryption-zones", "Properties": { "/myHDFSPath1": "path1_key", "/myHDFSPath2": "path2_key" } } ]
Untuk membuat zona enkripsi dan kunci secara manual pada simpul utama
  1. Luncurkan klaster Anda menggunakan rilis Amazon EMR yang lebih besar dari 4.1.0.

  2. Connect ke simpul utama klaster menggunakan SSH

  3. Buat kunci dalam Hadoop KMS.

    $ hadoop key create path2_key path2_key has been successfully created with options Options{cipher='AES/CTR/NoPadding', bitLength=256, description='null', attributes=null}. KMSClientProvider[http://ip-x-x-x-x.ec2.internal:16000/kms/v1/] has been updated.
    penting

    Hadoop KMS membutuhkan nama kunci Anda menjadi huruf kecil. Jika Anda menggunakan kunci yang memiliki karakter huruf besar, maka klaster Anda akan gagal selama peluncuran.

  4. Buat jalur zona enkripsi di HDFS.

    $ hadoop fs -mkdir /myHDFSPath2
  5. Buat jalur HDFS zona enkripsi menggunakan kunci yang Anda buat.

    $ hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2 Added encryption zone /myHDFSPath2
Untuk membuat zona enkripsi dan kunci secara manual menggunakan AWS CLI
  • Tambahkan langkah-langkah untuk membuat KMS kunci dan zona enkripsi secara manual dengan perintah berikut.

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Create First Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path1_key\""] \ Type=CUSTOM_JAR,Name="Create First Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create First Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path1_key -path /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path2_key\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath2\""] \ Type=CUSTOM_JAR,Name="Create Second Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2\""]
    catatan

    Karakter lanjutan baris Linux (\) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

Pertimbangan untuk enkripsi transparan HDFS

Praktik terbaik adalah untuk membuat zona enkripsi untuk setiap aplikasi di mana mereka dapat menulis file. Juga, Anda dapat mengenkripsi semua HDFS dengan menggunakan hdfs-encryption-zones klasifikasi dalam konfigurasi API dan menentukan jalur akar (/) sebagai zona enkripsi.

Server manajemen kunci Hadoop

Hadoop KMS adalah server manajemen kunci yang menyediakan kemampuan untuk menerapkan layanan kriptografi untuk klaster Hadoop, dan dapat berfungsi sebagai vendor kunci untuk Enkripsi transparan dalam HDFS di Amazon EMR. Hadoop KMS di Amazon EMR diinstal dan diaktifkan secara default ketika Anda memilih aplikasi Hadoop saat meluncurkan klaster EMR. Hadoop KMS tidak menyimpan kunci itu sendiri kecuali dalam kasus caching sementara. Hadoop KMS bertindak sebagai proksi antara penyedia kunci dan wali amanat klien untuk dukungan keystore—itu bukan keystore. Keystore default yang dibuat untuk Hadoop KMS adalah Java Kriptografi Ekstensi KeyStore (JCEKS). Kebijakan kekuatan JCE tak terbatas juga dimasukkan, sehingga Anda dapat membuat kunci dengan panjang yang diinginkan. Hadoop KMS juga mendukung berbagai ACL yang mengontrol akses ke kunci dan operasi kunci secara independen dari aplikasi klien lain seperti HDFS. Panjang kunci default di Amazon EMR adalah 256 bit.

Untuk mengonfigurasi Hadoop KMS, gunakan hadoop-kms-site klasifikasi untuk mengubah pengaturan. Untuk mengonfigurasi ACL, Anda menggunakan klasifikasi kms-acls.

Untuk informasi selengkapnya, lihat dokumentasi Hadoop KMS. Hadoop KMS digunakan dalam enkripsi transparan Hadoop HDFS. Untuk mempelajari selengkapnya tentang enkripsi transparan HDFS, lihat topik Enkripsi transparan HDFS dalam dokumentasi Apache Hadoop.

catatan

Di Amazon EMR, KMS melalui HTTPS tidak diaktifkan secara default dengan Hadoop KMS. Untuk mempelajari cara mengaktifkan KMS melalui HTTPS, lihat dokumentasi Hadoop KMS.

penting

Hadoop KMS membutuhkan nama kunci Anda menjadi huruf kecil. Jika Anda menggunakan kunci yang memiliki karakter huruf besar, maka klaster Anda akan gagal selama peluncuran.

Mengonfigurasi Hadoop KMS di Amazon EMR

Menggunakan rilis Amazon EMR versi 4.6.0 atau yang lebih baru, kms-http-port adalah 9700 dan kms-admin-port adalah 9701.

Anda dapat mengonfigurasi Hadoop KMS pada saat pembuatan klaster menggunakan API konfigurasi untuk rilis Amazon EMR. Berikut ini adalah klasifikasi objek konfigurasi yang tersedia untuk Hadoop KMS:

Klasifikasi konfigurasi Hadoop KMS
Klasifikasi Nama berkas
hadoop-kms-site kms-site.xml
hadoop-kms-acls kms-acls.xml
hadoop-kms-env kms-env.sh
hadoop-kms-log4j kms-log4j.properties
Mengatur Hadoop KMS ACLs menggunakan CLI
  • Membuat klaster dengan Hadoop KMS dengan ACL menggunakan perintah berikut:

    aws emr create-cluster --release-label emr-5.36.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    catatan

    Karakter lanjutan baris Linux (\) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

    myConfig.json:

    [ { "Classification": "hadoop-kms-acls", "Properties": { "hadoop.kms.blacklist.CREATE": "hdfs,foo,myBannedUser", "hadoop.kms.acl.ROLLOVER": "myAllowedUser" } } ]
Untuk menonaktifkan cache Hadoop KMS menggunakan CLI
  • Buat klaster dengan Hadoop KMS hadoop.kms.cache.enable atur ke false, menggunakan perintah berikut:

    aws emr create-cluster --release-label emr-5.36.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    catatan

    Karakter lanjutan baris Linux (\) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

    myConfig.json:

    [ { "Classification": "hadoop-kms-site", "Properties": { "hadoop.kms.cache.enable": "false" } } ]
Untuk mengatur variabel lingkungan di kms-env.sh skrip menggunakan CLI
  • Ubah setelan di kms-env.sh melalui hadoop-kms-env konfigurasi. Buat klaster dengan Hadoop KMS menggunakan perintah berikut:

    aws emr create-cluster --release-label emr-5.36.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    catatan

    Karakter lanjutan baris Linux (\) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

    myConfig.json:

    [ { "Classification": "hadoop-kms-env", "Properties": { }, "Configurations": [ { "Classification": "export", "Properties": { "JAVA_LIBRARY_PATH": "/path/to/files", "KMS_SSL_KEYSTORE_FILE": "/non/Default/Path/.keystore", "KMS_SSL_KEYSTORE_PASS": "myPass" }, "Configurations": [ ] } ] } ]

Untuk informasi tentang konfigurasi Hadoop KMS, lihat dokumentasi Hadoop KMS.

Anda dapat mengonfigurasi enkripsi transparan HDFS pada klaster EMR dengan beberapa simpul utama

Apache Ranger KMS digunakan dalam sebuah klaster EMR dengan beberapa simpul utama untuk enkripsi transparan dalam HDFS.

Apache Ranger KMS menyimpan kunci akar dan kunci Encryption Zone (EZ) di Amazon RDS Anda untuk klaster EMR dengan beberapa simpul utama. Untuk mengaktifkan enkripsi transparan dalam HDFS pada klaster EMR dengan beberapa simpul utama, Anda harus menyediakan konfigurasi berikut.

  • Amazon RDS atau URL koneksi server MySQL Anda sendiri untuk menyimpan kunci akar Ranger KMS dan kunci EZ

  • Nama pengguna dan kata sandi untuk MySQL

  • Kata sandi untuk kunci akar Ranger KMS

  • Sertifikat Otoritas (CA) file PEM untuk koneksi SSL ke server MySQL

Anda dapat menyediakan konfigurasi ini dengan menggunakan ranger-kms-dbks-site klasifikasi dan ranger-kms-db-ca klasifikasi, sebagai contoh berikut menunjukkan.

[ { "Classification": "ranger-kms-dbks-site", "Properties": { "ranger.ks.jpa.jdbc.url": "jdbc:log4jdbc:mysql://mysql-host-url.xx-xxx-1.xxx.amazonaws.com:3306/rangerkms", "ranger.ks.jpa.jdbc.user": "mysql-user-name", "ranger.ks.jpa.jdbc.password": "mysql-password", "ranger.db.encrypt.key.password": "password-for-encrypting-a-master-key" } }, { "Classification": "ranger-kms-db-ca", "Properties": { "ranger.kms.trust.ca.file.s3.url": "s3://rds-downloads/rds-ca-2019-root.pem" } } ]

Berikut ini adalah klasifikasi objek konfigurasi untuk Apache Ranger KMS.

Klasifikasi konfigurasi Hadoop KMS
Klasifikasi Deskripsi
ranger-kms-dbks-site Ubah nilai dalam file dbks-site.xml Ranger KMS.
ranger-kms-site Ubah nilai dalam ranger-kms-site file.xmlRanger KMS.
ranger-kms-env Ubah nilai di lingkungan Ranger KMS.
ranger-kms-log4j Ubah nilai dalam file kms-log4j.properties Ranger KMS.
ranger-kms-db-ca Ubah nilai untuk file CA pada S3 untuk koneksi MySQL SSL dengan Ranger KMS.

Pertimbangan

  • Anda sangat dianjurkan untuk mengenkripsi instans Amazon RDS untuk meningkatkan keamanan. Untuk informasi selengkapnya, lihat Pratinjau mengenkripsi sumber daya Amazon RDS.

  • Anda sangat dianjurkan untuk menggunakan database MySQL terpisah untuk setiap klaster EMR dengan beberapa master utama untuk bar keamanan yang tinggi.

  • Untuk mengonfigurasi enkripsi transparan dalam HDFS pada klaster EMR dengan beberapa simpul utama, Anda harus menentukan hdfs-encryption-zones klasifikasi sekaligus menciptakan klaster. Jika tidak, Ranger KMS tidak akan dikonfigurasi atau dimulai. Mengonfigurasi ulang hdfs-encryption-zones klasifikasi atau salah satu klasifikasi konfigurasi Hadoop KMS pada klaster yang berjalan tidak didukung pada klaster EMR dengan beberapa simpul utama.