Transparent Data Encryption (TDE) mengenkripsi data sebelum ditulis ke disk dan mendekripsinya saat dibaca ke memori, tanpa peningkatan ukuran file maupun perubahan pada aplikasi. Anda dapat mengaktifkan TDE melalui Konsol ApsaraDB for MongoDB untuk melindungi data instans.
Prasyarat
-
Tipe penyimpanan dan arsitektur instans harus memenuhi persyaratan berikut:
-
Instans disk lokal: Mendukung replica set dan sharded cluster dengan versi database 4.0 atau 4.2.
-
Instans disk cloud: Mendukung replica set dengan versi database 4.2 hingga 8.3 (semua versi).
-
-
Instans menggunakan storage engine WiredTiger.
-
Versi minor instans disk cloud tidak boleh lebih awal dari versi berikut:
Major version
Minimum minor version
4.2
4.0.36
4.4
5.0.22
5.0
6.0.23
6.0
7.0.24
7.0
8.0.16
8.0
9.0.9
8.3
9.3.1
PentingJika versi minor instans Anda lebih awal dari versi yang dipersyaratkan, lakukan upgrade versi minor sebelum mengaktifkan TDE. Untuk informasi selengkapnya, lihat Ubah konfigurasi instans.
Jika instans Anda tidak memenuhi persyaratan ini, Ubah konfigurasi instans.
Dampak
-
Mengaktifkan TDE akan me-restart instans dan menyebabkan gangguan koneksi sementara. Lakukan operasi ini pada jam sepi serta pastikan aplikasi Anda memiliki mekanisme penghubungan ulang.
-
TDE meningkatkan pemanfaatan CPU.
-
Koleksi terenkripsi tidak dapat dipulihkan ke database yang dikelola sendiri menggunakan backup fisik. Gunakan cadangan logis sebagai gantinya. Pulihkan data ke database yang dikelola sendiri menggunakan cadangan logis.
Pertimbangan
-
Setelah diaktifkan, TDE tidak dapat dinonaktifkan.
-
Anda tidak dapat memulihkan instans yang telah dirilis dan diaktifkan TDE dari Recycle Bin.
-
TDE melakukan enkripsi pada tingkat instans dan hanya berlaku untuk koleksi. Untuk mengenkripsi bidang tertentu, gunakan Client-Side Field-Level Encryption (hanya untuk MongoDB 4.2).
CatatanUntuk melewatkan enkripsi pada koleksi tertentu, Kecualikan koleksi dari enkripsi.
-
TDE hanya mengenkripsi koleksi baru yang dibuat setelah diaktifkan. Koleksi yang sudah ada tetap tidak terenkripsi.
-
Key Management Service (KMS) menghasilkan dan mengelola kunci TDE. ApsaraDB for MongoDB tidak menyediakan kunci enkripsi atau Sertifikat. Apa itu Key Management Service?
-
Kunci enkripsi tidak dapat diubah setelah TDE diaktifkan. Untuk menggunakan kunci berbeda, migrasikan data ke instans baru yang dikonfigurasi dengan kunci baru menggunakan Data Transmission Service (DTS). Migrasikan data antar instans ApsaraDB for MongoDB.
-
Pastikan kunci KMS yang digunakan oleh TDE selalu tersedia. Jika kunci dinonaktifkan, dihapus, atau kedaluwarsa, instans akan terkunci dan menjadi tidak tersedia, serta backup yang ada tidak dapat digunakan untuk pemulihan.
Prosedur
-
Buka halaman Replica Set Instances atau Sharded Cluster Instances. Di bilah navigasi atas, pilih kelompok sumber daya dan Wilayah, lalu klik ID instans target.
-
Di panel navigasi kiri, klik .
-
Aktifkan sakelar di samping TDE Status:.
-
Pada kotak dialog Enable TDE, pilih metode pembuatan kunci sesuai kebutuhan Anda.
-
Use Automatically Generated Key: Sistem secara otomatis menghasilkan kunci.
-
Use Custom Key: Pilih kunci yang sudah ada dari daftar drop-down. Jika kunci yang ingin Anda gunakan tidak tersedia, Anda harus membuatnya terlebih dahulu. Untuk petunjuknya, lihat Buat kunci.
-
-
Klik OK.
Instans memasuki status Updating TDE. Operasi selesai ketika status berubah menjadi Running.
Kecualikan koleksi dari enkripsi
Setelah TDE diaktifkan, semua koleksi baru dienkripsi secara default. Untuk membuat koleksi yang tidak terenkripsi, tentukan konfigurasi storage engine saat pembuatan.
-
Hubungkan ke database menggunakan mongo shell: Hubungkan ke instans replica set atau Hubungkan ke instans sharded cluster.
-
Jalankan perintah berikut untuk membuat koleksi yang tidak terenkripsi.
-
Sintaks:
db.createCollection("<collection_name>",{ storageEngine: { wiredTiger: { configString: "encryption=(name=none)" } } })CatatanDalam perintah ini,
collection_nameadalah nama koleksi. -
Contoh:
db.createCollection("customer",{ storageEngine: { wiredTiger: { configString: "encryption=(name=none)" } } })
-