Peran dengan hak istimewa tinggi, seperti administrator basis data (DBA) dan pengembang, berisiko mengekspos data sensitif—seperti informasi identitas pengguna atau catatan transaksi—saat memelihara database produksi. Fitur PolarDB Always-confidential untuk PolarDB for MySQL mengurangi risiko tersebut dengan mengenkripsi hasil kueri secara on-the-fly di lapisan database proxy. Hanya aplikasi yang berwenang dan menggunakan driver tertentu yang dapat mendekripsi serta melihat data sensitif. Dengan perubahan minimal pada kode aplikasi, fitur ini membantu melindungi data sensitif dan memenuhi persyaratan kepatuhan.
Cara kerja
Fitur PolarDB Always-confidential beroperasi di lapisan database proxy. Ketika kueri SQL sesuai dengan kebijakan enkripsi yang dikonfigurasi, proxy mengenkripsi data pada bidang yang ditentukan sebelum mengembalikan hasil kueri ke klien.
-
Penyimpanan data: Fitur ini tidak mengubah cara data disimpan secara fisik di database. Data tetap dalam bentuk teks biasa di file sistem operasi (OS) dan pada disk cloud.
-
Perspektif pengguna:
-
Super Admin: Hasil kueri selalu dikembalikan sebagai teks biasa. Kebijakan enkripsi tidak memengaruhi akun ini, sehingga menyederhanakan manajemen database.
-
Akun Standar: Hasil kueri dikembalikan sebagai ciphertext. Diperlukan driver enkripsi khusus, seperti driver EncJDBC atau driver GoLang, serta kunci yang benar di sisi klien untuk mendekripsi data.
-
Pengguna lain: Hasil kueri dikembalikan sebagai ciphertext dan tidak dapat didekripsi, bahkan jika kuncinya tersedia.
-
Prasyarat
Versi database proxy kluster PolarDB for MySQL Anda harus 2.9.12 atau lebih baru.
-
Lihat nomor versi: Lihat versi database proxy kluster Anda di halaman .
-
Kompatibilitas versi: Jika versi database proxy lebih lama dari 2.9.12 tetapi lebih baru dari 2.8.18, antarmuka konfigurasi kebijakan enkripsi digabungkan dengan fitur dynamic data masking. Untuk meningkatkan pengalaman pengguna dan mengelola fitur secara independen, kami merekomendasikan peningkatan proxy ke versi 2.9.12 atau lebih baru.
Konfigurasi enkripsi on-the-fly
Mengonfigurasi enkripsi on-the-fly mencakup tiga langkah utama: mengonfigurasi kunci, menentukan izin berbasis peran, dan membuat kebijakan enkripsi.
Prosedur
-
Masuk ke PolarDB console. Di panel navigasi kiri, klik Clusters. Pilih region tempat kluster Anda ditempatkan dan klik ID kluster tersebut.
-
Di panel navigasi kiri, pilih , lalu buka tab Encrypt.
Langkah 1: Konfigurasi kunci
Di halaman Encrypt, aktifkan sakelar Key Management untuk mengonfigurasi kunci guna enkripsi dan dekripsi di sisi klien.
Gunakan kunci KMS (direkomendasikan)
Key Management Service (KMS) Alibaba Cloud menyimpan kunci Anda, mendukung rotasi kunci otomatis, serta menyediakan tingkat keamanan dan kemudahan pemeliharaan yang tinggi. Jika Pasangan Kunci Akses yang digunakan untuk mengakses KMS dikompromikan, Anda dapat mengurangi risiko dengan menonaktifkan Pasangan Kunci Akses tersebut atau membatasi kebijakan aksesnya. Kunci itu sendiri tidak diekspos.
Hanya tipe customer master key (CMK) dari KMS yang didukung. Tipe default key tidak didukung. Untuk informasi lebih lanjut, lihat Overview of Key Management Service.
Konfigurasi customer master key (CMK)
-
Kembali ke PolarDB console, pilih CMK yang sesuai, lalu klik OK.
Gunakan kunci yang dikelola sendiri
Jika Anda tidak mengonfigurasi KMS, sistem secara default menggunakan kunci yang dikelola sendiri. Anda bertanggung jawab untuk menghasilkan, mendistribusikan, dan menyimpan kunci tersebut.
Kunci yang dikelola sendiri berisiko hilang atau dikompromikan, dan rotasi kunci tidak didukung. Jika kunci hilang, data terenkripsi yang sesuai tidak dapat didekripsi. Anda harus menerapkan prosedur keamanan ketat untuk mengelola kunci Anda.
Langkah 2: Tentukan izin peran
Di tab Role Policy Settings pada halaman Encrypt, konfigurasikan peran untuk akun database yang berbeda. Konfigurasi ini menentukan apakah pengguna melihat teks biasa atau ciphertext saat mengkueri data.
-
Klik Create Role Permission Policy.
-
Di kotak dialog Role Permission Settings, tentukan nama kebijakan dan tetapkan akun database ke peran tertentu.
-
Policy Name: Tentukan nama untuk kebijakan tersebut. Nama dapat memiliki panjang hingga 64 karakter.
-
Super Account: Pilih kotak centang akun database yang ingin Anda tetapkan ke peran ini. Anda dapat memilih beberapa akun. Akun database dalam daftar ini selalu menerima hasil kueri sebagai teks biasa.
CatatanPeran Super Account memiliki tingkat izin tertinggi. Berikan peran ini hanya kepada akun manajemen atau audit yang esensial dan kendalikan penggunaannya secara ketat.
-
Standard Account: Pilih kotak centang akun database yang ingin Anda tetapkan ke peran ini. Anda dapat memilih beberapa akun. Akun database dalam daftar ini menerima hasil kueri sebagai ciphertext tetapi dapat mendekripsi data menggunakan driver enkripsi khusus dan kunci yang benar.
CatatanPengguna lain: Setiap akun database yang tidak ditetapkan ke peran Super Admin atau Standard Account akan menerima hasil kueri sebagai ciphertext dan tidak dapat mendekripsi data tersebut.
-

Langkah 3: Buat dan aktifkan kebijakan enkripsi
Di tab Encryption Policy Settings pada halaman Encrypt, konfigurasikan kebijakan enkripsi.
-
Klik Create Encryption Policy.
-
Di kotak dialog yang muncul, konfigurasikan parameter kebijakan seperti dijelaskan dalam tabel berikut.
CatatanTentukan cakupan enkripsi yang tepat: Saat membuat kebijakan, selalu tentukan nama database, tabel, dan bidangnya. Hindari menerapkan kebijakan ke semua database atau semua tabel agar tidak secara tidak sengaja memengaruhi layanan lain.
Parameter
Deskripsi
Rule Name
Wajib diisi. Pengenal unik untuk kebijakan, misalnya
encrypt-user-email. Nama dapat memiliki panjang hingga 64 karakter.Description
Opsional. Deskripsi untuk kebijakan, misalnya
Encrypts the email field in the user table of the customer database. Deskripsi dapat memiliki panjang hingga 64 karakter.Enable/Disable Rule
Mengontrol aktivasi kebijakan. Kebijakan diaktifkan secara default dan tidak dapat dinonaktifkan saat pembuatan. Anda dapat mengubah pengaturan ini nanti dari daftar kebijakan.
Associate Permission Policy
Wajib diisi. Pilih kebijakan izin peran yang telah Anda tentukan di Langkah 2.
Database
Opsional. Database tempat kebijakan diterapkan. Opsi berikut tersedia:
-
(Default) All databases: Menerapkan kebijakan ke semua database dalam kluster.
-
Specify databases: Menerapkan kebijakan hanya ke database yang ditentukan. Pisahkan beberapa nama database dengan koma (
,).
Table Name
Opsional. Tabel tempat kebijakan diterapkan. Opsi berikut tersedia:
-
(Default) All tables: Menerapkan kebijakan ke semua tabel dalam database yang ditentukan.
-
Specify tables: Menerapkan kebijakan hanya ke tabel yang ditentukan. Pisahkan beberapa nama tabel dengan koma (
,).
Column Name
Wajib diisi. Nama bidang yang akan dienkripsi. Pisahkan beberapa nama bidang dengan koma (
,).Encryption Algorithm
Wajib diisi. Algoritma yang digunakan untuk enkripsi. Algoritma berikut didukung:
-
Seri SM4:
SM4-128-CBC,SM4-128-ECB,SM4-128-GCM,SM4-128-GTR. -
Seri AES-128:
AES-128-CBC,AES-128-ECB,AES-128-GCM,AES-128-GTR. -
Seri AES-256:
AES-256-CBC,AES-256-ECB,AES-256-GCM,AES-256-GTR.
-
-
Klik OK untuk membuat kebijakan.
Langkah 4: Kelola kebijakan enkripsi
Di tab Encryption Policy Settings pada halaman Encrypt, Anda dapat mengelola kebijakan yang telah dibuat dalam daftar kebijakan.
-
Ubah kebijakan: Temukan kebijakan yang ingin diubah, lalu klik Modify di kolom Actions.
-
Hapus kebijakan: Temukan kebijakan yang ingin dihapus, klik Delete di kolom Actions, lalu klik OK di kotak dialog konfirmasi.
-
Aktifkan atau nonaktifkan kebijakan: Temukan kebijakan tersebut, lalu klik sakelar di kolom Enable/Disable Rule.
Penguatan Keamanan dengan izin detail halus
Untuk mencegah DBA atau pengembang yang memiliki izin konsol memodifikasi atau menghapus kebijakan enkripsi secara jahat, Anda dapat menggunakan Resource Access Management (RAM) untuk Penguatan Keamanan.
Konsep inti
Buat pengguna RAM terpisah untuk personel terkait. Berikan izin kepada pengguna ini untuk mengelola PolarDB, tetapi secara eksplisit tolak izin mereka untuk memodifikasi atau menghapus kebijakan enkripsi.
Prosedur
-
Buat kebijakan untuk menolak modifikasi
-
Masuk ke RAM console. Di panel navigasi kiri, pilih Permissions > Policies. Klik Create Policy.
-
Di tab editor visual, konfigurasikan parameter berikut:
-
Effect: Deny.
-
Service: PolarDB.
-
Actions: Pilih Specify Action. Di bagian Write, pilih
polardb:ModifyMaskingRulesdanpolardb:DeleteMaskingRules. -
Resource dan Condition: Tentukan resource tempat kebijakan diterapkan dan kondisi di mana kebijakan berlaku. Untuk informasi lebih lanjut, lihat Elements of an access policy.
-
Setelah konfigurasi selesai, klik OK. Di kotak dialog Create Policy, atur Policy Name dan Remarks.
-
-
-
Menetapkan izin kepada Pengguna RAM
-
Masuk ke RAM console. Di panel navigasi kiri, pilih Identities > Users. Temukan pengguna RAM target, lalu klik Add Permissions di kolom Actions.
-
Di bagian Policies, pilih kebijakan deny yang telah Anda buat, lalu klik OK.
-
Hasil
Ketika pengguna RAM yang dibatasi mencoba memodifikasi atau menghapus kebijakan enkripsi, pesan error akan muncul yang menunjukkan izin tidak mencukupi.
Langkah berikutnya
Setelah mengonfigurasi kebijakan enkripsi, aplikasi Anda harus menggunakan driver yang mendukung enkripsi, seperti driver JDBC (EncJDBC) atau driver GoLang, untuk membaca dan menulis data terenkripsi secara benar.