Topik ini menjelaskan kemampuan fitur Basis Data Selalu Rahasia yang didukung oleh berbagai jenis instans.
Batasan
Anda tidak dapat mengeksekusi pernyataan untuk melakukan operasi pada kolom teks biasa dan kolom teks terenkripsi secara bersamaan. Contoh:
SELECT * FROM table_name WHERE plaintext_col < ciphertext_col;.CatatanDalam pernyataan di atas,
table_namemenunjukkan nama tabel,plaintext_colmenunjukkan kolom teks biasa, danciphertext_colmenunjukkan kolom teks terenkripsi.Fitur Basis Data Selalu Rahasia tidak mendukung pembuatan otomatis atau pencadangan kunci enkripsi utama (MEK). Anda harus membuat MEK secara manual. Jika Anda kehilangan MEK, Anda tidak akan dapat mengakses data terenkripsi yang ada. Kami sarankan Anda mencadangkan MEK.
Catatan Penggunaan
Untuk menggunakan fitur Basis Data Selalu Rahasia, pastikan versi mesin minor dari instans ApsaraDB RDS for PostgreSQL Anda adalah 20230830 atau lebih baru.
Untuk informasi lebih lanjut tentang cara memperbarui versi mesin minor dari instans RDS, lihat Perbarui versi mesin minor.
Tipe data yang didukung dan operator terkait
Fitur Basis Data Selalu Rahasia menyediakan tipe data berikut. Tipe data dan operator terkait mendukung kueri SQL serta transaksi dan kompatibel dengan sintaksis SQL standar.
Tipe Data | Deskripsi | Operator yang Didukung |
enc_int4 | Integer terenkripsi yang sesuai dengan integer 4-byte dalam teks biasa. | +, -, *, /, %, >, =, <, ≥, ≤, dan != |
enc_int8 | Integer terenkripsi yang sesuai dengan integer 8-byte dalam teks biasa. | |
enc_float4 | Nomor floating-point terenkripsi yang sesuai dengan nomor floating-point presisi tunggal 4-byte dalam teks biasa. | +, -, *, /, >, =, <, ≥, ≤, dan != |
enc_float8 | Nomor floating-point terenkripsi yang sesuai dengan nomor floating-point presisi ganda 8-byte dalam teks biasa. | +, -, *, /, >, =, <, ≥, ≤, !=, dan pow |
enc_decimal | Nomor desimal terenkripsi yang sesuai dengan data teks biasa dari tipe data DECIMAL. | +, -, *, /, >, =, <, ≥, ≤, !=, pow, dan % |
enc_text | String karakter terenkripsi dengan panjang variabel yang sesuai dengan data teks biasa dari tipe data TEXT. String tersebut dikodekan dalam UTF-8. | substr/substring, ||, like, ~~, !~~, >, =, <, ≥, ≤, dan != |
enc_timestamp | Timestamp terenkripsi yang sesuai dengan data teks biasa dari tipe data TIMESTAMP WITHOUT TIME ZONE. | ekstrak tahun, >, =, <, ≥, ≤, dan != |
det_type | Data terenkripsi apa pun. Data teks biasa yang sama dienkripsi menjadi data teks terenkripsi yang sama. | = |
rnd_type | Data terenkripsi apa pun. Data teks biasa yang sama dienkripsi menjadi data teks terenkripsi yang berbeda. | T/A (Penyimpanan teks terenkripsi didukung tetapi komputasi teks terenkripsi tidak didukung.) |
ore_int8 | Integer yang dienkripsi secara berurutan dan sesuai dengan integer 8-byte dalam teks biasa. Enkripsi tidak bergantung pada perangkat keras tepercaya. | >, =, <, >=, <=, dan != |
ore_float8 | Nomor floating-point yang dienkripsi secara berurutan dan sesuai dengan nomor floating-point presisi ganda 8-byte dalam teks biasa. Enkripsi tidak bergantung pada perangkat keras tepercaya. | >, =, <, >=, <=, dan != |
Contoh Pernyataan SQL:
CREATE TABLE example (
account enc_int4, -- Akun yang sesuai dengan data teks biasa dari tipe INTEGER.
name enc_text, -- Nama yang sesuai dengan data teks biasa dari tipe TEXT.
balance enc_float4, -- Saldo akun yang sesuai dengan data teks biasa dari tipe REAL.
credit enc_float4, -- Batas kredit akun yang sesuai dengan data teks biasa dari tipe REAL.
quota real, -- Kolom teks biasa.
address enc_text, -- Alamat yang sesuai dengan data teks biasa dari tipe TEXT.
remark text, -- Keterangan.
PRIMARY KEY (account) -- Kolom akun yang digunakan sebagai kunci utama.
);Klausa Kueri
Fitur Basis Data Selalu Rahasia mendukung klausa berikut yang diperlukan untuk kueri database umum.
Dalam contoh berikut, table_name menunjukkan nama tabel, col menunjukkan nama kolom, dan ciphertext_col menunjukkan kolom teks terenkripsi.
Klausa | Contoh |
WHERE | |
ORDER BY | |
GROUP BY | |
HAVING | |
INTERSECT | |
EXCEPT | |
UNION | |
LIMIT | |
OFFSET |
Indeks
Fitur Basis Data Selalu Rahasia memungkinkan Anda membuat indeks pada kolom terenkripsi untuk mempercepat kueri. Contoh:
CREATE INDEX IF NOT EXISTS name_index_btree on table_name USING btree (name);
CREATE INDEX IF NOT EXISTS name_index_hash on table_name USING hash (name);ApsaraDB RDS for PostgreSQL mendukung ekstensi encdb_btree. Ini memfasilitasi operasi pada indeks teks terenkripsi dari Basis Data Selalu Rahasia. Untuk informasi lebih lanjut, lihat Gunakan encdb_btree untuk memfasilitasi operasi pada indeks teks terenkripsi.
Otorisasi multi-pengguna
Dalam Basis Data Selalu Rahasia, data teks terenkripsi dari pengguna yang berbeda secara otomatis diisolasi. Untuk melakukan komputasi terintegrasi pada data teks terenkripsi, Anda dapat menerbitkan daftar kontrol perilaku (BCL) untuk memberikan izin akses pada data teks terenkripsi. Untuk informasi lebih lanjut, lihat Berikan izin akses pada data multi-pengguna dari instans ApsaraDB RDS for PostgreSQL.
Konversi antara teks biasa dan teks terenkripsi
Fitur Basis Data Selalu Rahasia memungkinkan Anda mengubah tipe kolom antara teks biasa dan teks terenkripsi. Untuk informasi lebih lanjut, lihat Konversi teks biasa dan teks terenkripsi.
Sebelum mengonversi data antara teks biasa dan teks terenkripsi, pastikan Anda telah diberi otorisasi menggunakan BCL.