全部产品
Search
文档中心

ApsaraDB RDS:Kemampuan yang Didukung

更新时间:Jul 02, 2025

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;.

    Catatan

    Dalam pernyataan di atas, table_name menunjukkan nama tabel, plaintext_col menunjukkan kolom teks biasa, dan ciphertext_col menunjukkan 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.

Catatan

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.

Catatan

Dalam contoh berikut, table_name menunjukkan nama tabel, col menunjukkan nama kolom, dan ciphertext_col menunjukkan kolom teks terenkripsi.

Klausa

Contoh

WHERE

SELECT col1, col2
    FROM table_name
    WHERE ciphertext_col1 > ciphertext_col2 
    ORDER BY col1;

ORDER BY

GROUP BY

SELECT col1, count(*)
    FROM table_name
    GROUP BY col1
    HAVING col1 IS NOT NULL;

HAVING

INTERSECT

SELECT ACCOUNT 
    FROM table_name
    WHERE col1 IS NOT NULL
EXCEPT
    SELECT ACCOUNT 
    FROM table_name
    WHERE ciphertext_col1 > ciphertext_col2 
LIMIT 1;

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);
Catatan

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.

Penting

Sebelum mengonversi data antara teks biasa dan teks terenkripsi, pastikan Anda telah diberi otorisasi menggunakan BCL.