全部产品
Search
文档中心

ApsaraDB RDS:Mengonversi data antara teks biasa dan teks terenkripsi

更新时间:Jul 02, 2025

Jika fitur basis data selalu rahasia diaktifkan untuk instance ApsaraDB RDS for PostgreSQL Anda, Anda dapat mengonversi data dalam kolom antara teks biasa dan teks terenkripsi.

Prasyarat

Sintaksis

ALTER TABLE <table_name> 
    ALTER COLUMN <column_name> [SET DATA] TYPE <Tipe data setelah konversi> 
    USING <Fungsi konversi data>(<column_name>[, <keyname>]);
Catatan
  • Jika Anda mengonversi data dari teks terenkripsi ke teks biasa, cukup konfigurasikan parameter column_name.

  • Jika Anda mengonversi data dari teks biasa ke teks terenkripsi, Anda dapat mengonfigurasikan hanya parameter column_name atau mengonfigurasikan parameter column_name dan keyname secara bersamaan.

Tabel 1 Fungsi Konversi Data

Data teks biasa

Data teks terenkripsi

Fungsi konversi teks biasa ke teks terenkripsi

Fungsi konversi teks terenkripsi ke teks biasa

int4

enc_int4

encdb.enc_int4_encrypt

encdb.decrypt

int8

enc_int8

encdb.enc_int8_encrypt

encdb.decrypt

float4

enc_float4

encdb.enc_float4_encrypt

encdb.decrypt

float8

enc_float8

encdb.enc_float8_encrypt

encdb.decrypt

numeric

enc_decimal

encdb.enc_decimal_encrypt

encdb.decrypt

text

enc_text

encdb.enc_text_encrypt

encdb.decrypt

timestamp

enc_timestamp

encdb.enc_timestamp_encrypt

encdb.decrypt

Contoh

  • Gunakan kunci dari keyname yang dibuat untuk mengonversi data dalam kolom dari teks biasa ke teks terenkripsi.

    1. Buat keyname.

      SELECT encdb.keyname_generate('<user_name>', '<database_name>', '<schema_name>', '<table_name>', '<column_name>');
    2. Buat kunci untuk keyname.

      SELECT encdb.dek_generate('<keyname>'[, '<json_params>']);

      Parameter json_params dalam encdb.dek_generate bersifat opsional. Anda dapat menentukan nilai berformat JSON untuk parameter ini. Tabel berikut menjelaskan pasangan kunci-nilai yang didukung.

      Kunci

      Nilai

      Contoh

      algoritma

      Algoritma enkripsi.

      Nilai default: AES_128_GCM.

      kebijakan

      DEFAULT

      Kebijakan enkripsi. Parameter ini dicadangkan. Nilainya tetap sebagai DEFAULT.

      flags

      • RND

      • DET

      Metode enkripsi. Nilai valid:

      • RND: enkripsi acak

      • DET: enkripsi deterministik

      Nilai default: RND.

      mekid

      ID kunci enkripsi utama (MEK) pengguna

      ID MEK yang digunakan untuk menghasilkan kunci enkripsi data (DEK).

      Nilai default adalah ID MEK pengguna saat ini.

    3. Gunakan kunci dari keyname untuk mengonversi data dalam kolom dari teks biasa ke teks terenkripsi. Sebagai contoh, Anda dapat mengonversi data dari tipe int4 ke tipe enc_int4.

      ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DATA TYPE enc_int4 USING encdb.enc_int4_encrypt(<column_name>, '<keyname>');
  • Konversikan data dalam kolom dari teks biasa ke teks terenkripsi menggunakan kunci default dari basis data saat ini.

    Catatan

    Keyname dari kunci default yang digunakan untuk basis data saat ini adalah |<User>|<Database>|.

    ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DATA TYPE enc_int4 USING encdb.enc_int4_encrypt(<column_name>);
  • Konversikan data dalam kolom dari teks biasa ke teks terenkripsi.

    ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DATA TYPE int4 USING encdb.decrypt(<column_name>, '<keyname>');

FAQ

  • Apa yang harus saya lakukan jika kesalahan ERROR: xxxx generate dek for keyname errno:f70a0000 dilaporkan?

    Kesalahan ini dilaporkan jika klien Anda belum terhubung ke basis data menggunakan EncDB SDK. Dalam hal ini, buat koneksi antara klien Anda dan basis data menggunakan EncDB SDK setidaknya sekali. Untuk informasi lebih lanjut, lihat Gunakan Fitur Basis Data Selalu Rahasia dari Klien.

  • Apa yang harus saya lakukan jika kesalahan ERROR: xxxx errno:fa030000 atau ERROR: xxxx error:fa020000 dilaporkan?

    Kesalahan ini dilaporkan jika tidak ada catatan otorisasi yang ditemukan untuk akun Anda atau akun Anda tidak diberi otorisasi untuk melakukan operasi berisiko. Dalam hal ini, otorisasi akun Anda dengan menggunakan BCL. Untuk informasi lebih lanjut, lihat Kelola Otorisasi.