Enkripsi kolom, yang disediakan oleh Data Security Center (DSC), melindungi data sensitif pada kolom di ApsaraDB RDS untuk PostgreSQL dengan menyimpannya dalam bentuk terenkripsi di tingkat database. Pemilik data dapat membaca datanya dalam bentuk teks biasa melalui klien yang selalu rahasia, sedangkan administrator basis data dan operator platform cloud—bahkan yang memiliki akses langsung ke database—hanya melihat ciphertext. Pemisahan antara pemilik data dan pengelola infrastruktur database inilah yang menjadi jaminan keamanan utama dari fitur ini.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Instans ApsaraDB RDS untuk PostgreSQL 16 dengan versi mesin minor 20250228 atau lebih baru
-
Instans yang berjalan di salah satu wilayah yang didukung:
-
Tiongkok daratan: Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Hohhot), Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Shenzhen), Tiongkok (Guangzhou), Tiongkok (Chengdu)
-
Di luar Tiongkok daratan: Tiongkok (Hong Kong), Singapura, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Jerman (Frankfurt)
-
Cara kerja
DSC menggunakan algoritma enkripsi AES-256-GCM dengan metode enkripsi kunci lokal. Kolom sensitif disimpan sebagai ciphertext di database. Akun database dibagi menjadi dua jenis izin:
-
Plaintext Permission — akun dapat melakukan kueri pada kolom terenkripsi dan menerima teks biasa secara langsung. Berikan izin ini kepada pemilik data yang perlu membaca data sensitif.
-
Ciphertext Permission (JDBC Decryption) — akun menerima ciphertext dan dapat mendekripsinya secara lokal melalui driver JDBC enkripsi kolom. Ini merupakan izin default untuk semua akun setelah enkripsi diaktifkan. Berikan izin ini kepada aplikasi yang mengakses database melalui kode Java.
Jika instans gagal dalam pemeriksaan enkripsi di DSC, enkripsi kolom tidak dapat dikonfigurasi. Penyebab umumnya adalah: versi utama database bukan PostgreSQL 16, versi mesin minor lebih awal dari 20250228, atau instans tersebut merupakan instansi hanya baca. Lihat FAQ untuk langkah penyelesaiannya.
Menyiapkan enkripsi kolom
Penyiapan enkripsi kolom mencakup lima langkah: mengaktifkan DSC, memberikan otorisasi DSC untuk mengakses sumber daya cloud, memberikan otorisasi instans RDS, menghubungkan ke database, dan mengaktifkan enkripsi pada kolom tertentu.
Langkah 1: Aktifkan atau upgrade DSC
Langkah 2: Otorisasi DSC untuk mengakses sumber daya cloud
Langkah 3: Otorisasi instans database RDS
Langkah 4: Hubungkan ke database dan jalankan tugas identifikasi data sensitif
Langkah 5: Aktifkan enkripsi kolom
-
Masuk ke Konsol Data Security Center. Di panel navigasi kiri, pilih Risk Governance > Column Encryption.
PentingKolom Encryption Check harus menampilkan Passed sebelum Anda dapat mengaktifkan dan mengonfigurasi enkripsi kolom. Jika menampilkan Failed, lihat FAQ.
-
Klik Rapid Encryption di atas daftar instans database untuk mengonfigurasi enkripsi pada semua kolom yang belum dienkripsi di seluruh instans. Atau, klik Rapid Encryption pada kolom Actions instans database tertentu untuk membatasi cakupan hanya pada instans tersebut.

-
Di panel Encryption Configuration, pilih Asset Type, Instance name, Plaintext Permission Accounts, serta Databases, Table, dan Column target, lalu klik OK. Perhatikan hal berikut:
-
RDS PostgreSQL hanya mendukung algoritma AES-256-GCM dan metode local encryption.
-
Setelah enkripsi dikonfigurasi, semua akun database secara default memiliki Ciphertext Permission (JDBC Decryption). Akun dengan izin ini mengakses ciphertext secara default dan mendekripsinya secara lokal menggunakan klien JDBC.
-
Untuk memberikan akses teks biasa langsung kepada suatu akun, tambahkan akun tersebut di bawah Plaintext Permission Accounts.
-
Ubah konfigurasi enkripsi
Ubah cakupan kolom yang dienkripsi
Setelah mengaktifkan enkripsi kolom, Anda dapat menyesuaikan kolom mana saja yang dienkripsi kapan pun.
-
Masuk ke Konsol Data Security Center. Di panel navigasi kiri, pilih Risk Governance > Column Encryption.
-
Di daftar instans, perluas instans target. Temukan Databases, Table, dan Column target, lalu klik Enable Encryption atau Disable Encryption.

Ubah izin akun
Semua akun secara default memiliki Ciphertext Permission (JDBC Decryption) kecuali secara eksplisit diatur sebagai Plaintext Permission. Ubah izin berdasarkan peran masing-masing akun:
-
Plaintext Permission: Untuk pemilik data yang perlu membaca data sensitif langsung melalui konsol atau DMS.
-
Ciphertext Permission (JDBC Decryption): Untuk aplikasi dan administrator yang mengakses database melalui JDBC dan mendekripsi secara lokal.
Untuk mengubah izin:
-
Masuk ke Konsol Data Security Center.
-
Di halaman Risk Governance > Column Encryption, klik Accounts di bagian Permission Settings. Atau, klik Edit pada kolom Actions instans, lalu klik Account Permissions di panel Configure.
-
Di panel Permission Settings, cari instans dan akun target untuk melihat izin saat ini.
Catatan Jika akun database yang baru ditambahkan tidak terdaftar, jalankan Asset Synchronization terlebih dahulu, lalu periksa kembali. -
Klik Modify Permissions pada kolom Actions akun target. Untuk memperbarui beberapa akun dengan izin yang sama sekaligus, pilih akun tersebut lalu klik Batch Modify Permissions.
-
Di kotak dialog Modify Permissions, pilih izin target lalu klik OK.
Verifikasi enkripsi kolom
Contoh ini menggunakan kolom birth_date pada tabel students01. Satu akun database memiliki Plaintext Permission; yang lain memiliki Ciphertext Permission (JDBC Decryption).
-
Hubungkan instans RDS PostgreSQL 16 ke DSC, selesaikan klasifikasi data sensitif, dan aktifkan enkripsi kolom pada kolom target. Tetapkan satu akun ke Plaintext Permission dan biarkan akun lain tetap pada Ciphertext Permission (JDBC Decryption).

-
Masuk ke Data Management Service (DMS) dengan akun yang memiliki Ciphertext Permission (JDBC Decryption). Jalankan
SELECT * FROM students01;. Kolom yang dienkripsi mengembalikan ciphertext.
-
Masuk ke Data Management Service (DMS) dengan akun yang memiliki Plaintext Permission. Jalankan
SELECT * FROM students01;. Kolom yang dienkripsi mengembalikan teks biasa.
Akses kolom terenkripsi dari aplikasi
Untuk akun dengan Ciphertext Permission (JDBC Decryption), gunakan driver enkripsi kolom (JDBC) untuk mengakses data kolom terenkripsi dari aplikasi Java. Driver ini secara otomatis mendekripsi ciphertext sebelum mengembalikan hasil, sehingga prosesnya transparan bagi aplikasi.
FAQ
Apa yang harus saya lakukan jika instans RDS gagal dalam pemeriksaan enkripsi?
Langkah selanjutnya
-
Untuk arsitektur dan prinsip di balik enkripsi kolom, lihat Column encryption overview.
-
Jika data kolom sensitif berubah setelah otorisasi, lakukan pemindaian ulang database. Untuk detailnya, lihat Scan sensitive data through detection tasks.

