Topik ini menjelaskan cara mengenkripsi data saat diam di Hologres, termasuk mekanisme enkripsi, batasan, dan prosedurnya.
Informasi latar belakang
Key Management Service (KMS) adalah layanan cloud yang memungkinkan Anda membuat, menyimpan, dan mengelola kunci enkripsi. Layanan ini membantu melindungi data sensitif dengan memastikan data dienkripsi baik saat diam maupun dalam perjalanan (in transit).
Hologres menggunakan KMS untuk mengenkripsi data saat diam. Diperlukan kunci untuk memulihkan data asli, yang melindungi data di lapisan penyimpanan dari serangan eksternal serta membantu memenuhi persyaratan kepatuhan regulasi dan keamanan perusahaan. Mengaktifkan enkripsi saat diam berdampak pada performa kueri dan penulisan akibat operasi enkripsi dan dekripsi. Overhead performa berkisar antara 20% hingga 40%, tergantung pada karakteristik kueri.
Batasan
Hanya Hologres V1.1 ke atas yang mendukung enkripsi data saat diam. Jika instans Anda menjalankan versi sebelumnya, lihat Kesalahan umum selama persiapan upgrade atau bergabunglah dengan grup DingTalk Hologres untuk memberikan masukan. Untuk informasi lebih lanjut, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.
Jika Anda mengaktifkan enkripsi data saat diam pada instans versi sebelum V1.3.31, Anda harus menambahkan konfigurasi backend. Mulai dari Hologres V1.3.31, konfigurasi backend tidak lagi diperlukan. Kami menyarankan Anda melakukan upgrade instans untuk menggunakan fitur ini. Untuk informasi lebih lanjut, lihat Upgrade instans.
Operasi yang Anda lakukan pada Bring-Your-Own-Keys (BYOKs) di KMS—seperti menonaktifkan atau menghapus kunci—akan memengaruhi enkripsi dan dekripsi data di Hologres. Karena layanan Hologres menggunakan cache, perubahan yang dilakukan di KMS akan berlaku dalam waktu 24 jam.
Enkripsi saat diam hanya berlaku untuk tabel yang dibuat setelah Anda mengaktifkan fitur ini. Tabel yang dibuat sebelum fitur diaktifkan tidak dienkripsi.
Setelah Anda mengaktifkan enkripsi saat diam, Anda tetap dapat membuat tabel eksternal Hologres di MaxCompute untuk membaca dan menulis data.
Setelah mengaktifkan enkripsi saat diam, Anda dapat menggunakan pernyataan SQL berikut untuk menonaktifkannya pada database. Data di tabel yang dibuat sebelum Anda menonaktifkan fitur ini tetap dienkripsi. Hanya tabel baru yang dibuat setelah fitur dinonaktifkan yang tidak dienkripsi.
ALTER DATABASE <database_name> set hg_experimental_encryption_options='';Jika kunci KMS yang digunakan oleh tabel terenkripsi dinonaktifkan atau menjadi tidak valid, Anda tidak dapat membaca dari atau menulis ke tabel tersebut.
Mulai dari Hologres V2.0, Anda dapat mengonfigurasi aturan enkripsi terpisah untuk setiap tabel, sehingga tabel yang berbeda dapat menggunakan kunci KMS yang berbeda.
Anda hanya dapat mengaktifkan enkripsi data saat diam untuk tabel berorientasi kolom dan bagian penyimpanan kolom dari tabel hibrida baris-kolom. Jenis tabel lain tidak didukung. Setelah mengaktifkan fitur ini, Anda tetap dapat membuat tabel eksternal Hologres di MaxCompute untuk membaca dan menulis data. Hanya tabel berorientasi kolom dan bagian penyimpanan kolom dari tabel hibrida baris-kolom yang dienkripsi.
Mekanisme enkripsi data
Hologres menggunakan kunci yang dikelola oleh KMS untuk mengenkripsi dan mendekripsi data. Mekanisme enkripsi data bekerja sebagai berikut.
Hologres mengenkripsi atau mendekripsi data di tingkat database menggunakan KMS. Sebelum menggunakan fitur enkripsi data, pastikan KMS telah diaktifkan di wilayah tempat instans Hologres Anda berada.
KMS menghasilkan dan mengelola kunci Anda serta menjamin keamanannya.
Hologres mendukung algoritma enkripsi AES256, AESCTR, RC4, dan SM4.
Hologres hanya mendukung Bring-Your-Own-Key (BYOK) untuk enkripsi dan dekripsi data. Dua jenis bahan kunci didukung: bahan kunci yang dihasilkan oleh KMS saat Anda membuat customer master key (CMK), dan bahan kunci yang Anda impor sendiri.
Anda dapat membuat BYOK di KMS dan memilihnya di Hologres untuk mengenkripsi data suatu database. Untuk informasi lebih lanjut tentang pembuatan BYOK di KMS, lihat Buat kunci.
Saat Anda membaca atau menulis data, Hologres memanggil API KMS untuk mengambil informasi kunci. Sistem menyimpan informasi ini dalam cache selama 24 jam secara default. Akibatnya, biaya KMS dikenakan saat Anda menggunakan fitur enkripsi data. Untuk informasi lebih lanjut tentang penagihan KMS, lihat Penagihan KMS 1.0.
Prosedur
Buat kebijakan kustom.
Masuk ke Konsol Resource Access Management (RAM). Di panel navigasi sebelah kiri, pilih Permissions > Policies. Pada halaman Policies, klik Create Policy.

Pada halaman Create Policy, klik JSON. Pada tab JSON, masukkan skrip berikut di editor kode dan atur Name menjadi AliyunHologresEncryptionDefaultRolePolicy.

{ "Version": "1", "Statement": [ { "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "acs:kms:*:*:*/*", "Effect": "Allow" } ] }Klik OK. Kebijakan kustom telah dibuat.
Buat Peran RAM dan berikan izin kepada Peran RAM tersebut.
Masuk ke Konsol RAM. Di panel navigasi kiri, pilih .
Pada halaman Roles, klik Create Role. Pada halaman Create Role, atur Principal Type menjadi Cloud Service, dan Principal Name menjadi Hologres.
Klik OK. Di dialog yang muncul, masukkan
AliyunHologresEncryptionDefaultRoledi kolom Role Name, lalu klik OK.
Pada halaman detail peran, klik Grant Permission.
Pada panel Grant Permission, atur Resource Scope menjadi Account. Untuk Policy, pilih kebijakan kustom
AliyunHologresEncryptionDefaultRolePolicyyang dibuat pada langkah 1.
Klik Grant permissions.
Pada halaman detail peran, klik tab Trust Policy untuk memeriksa pengaturan kebijakan kepercayaan.
Buat kunci
Untuk informasi lebih lanjut, lihat Panduan Cepat Key Management.
PentingHologres hanya mendukung kunci simetris tipe Aliyun_AES_256.
Atur aturan enkripsi
Masuk ke instansiasi basis data tempat Anda ingin mengenkripsi data saat diam. Untuk informasi lebih lanjut tentang cara masuk ke database, lihat Masuk ke database.
Pada halaman Ad-hoc Query, pilih Instance Name dan Database. Di editor SQL, masukkan pernyataan berikut lalu klik Run.
Pernyataan SQL berikut mengatur aturan enkripsi data.
ALTER DATABASE <db_name> SET hg_experimental_encryption_options='<encryption_type>,<cmk_id>,<ram_role>,<uid>';Deskripsi parameter
Parameter
Deskripsi
db_name
Nama database tempat Anda ingin mengaktifkan enkripsi saat diam.
encryption_type
Algoritma enkripsi. Nilai yang valid: AES256, AESCTR, dan RC4.
cmk_id
ID kunci. Masuk ke Konsol Key Management Service dan dapatkan ID tersebut dari halaman detail kunci.
ram_role
Nama peran proxy Hologres yang telah Anda buat.
uid
ID Akun Alibaba Cloud Anda. Untuk informasi lebih lanjut, lihat Lihat ID akun.
Contoh berikut menunjukkan cara mengatur aturan enkripsi dan melakukan kueri data.
Aktifkan enkripsi saat diam untuk database.
ALTER DATABASE hoxxxx set hg_experimental_encryption_options= 'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,187xxxxxxxxxxxxx';Buat tabel dan tulis data ke dalamnya.
DROP TABLE IF EXISTS a; CREATE TABLE a(id int); INSERT INTO a values(1); SELECT hg_admin_command('flush'); -- Hanya untuk pengujian. Ini memungkinkan Anda melihat hasil kueri segera.Lakukan kueri terhadap data.
SELECT * FROM a;Hasil berikut dikembalikan.

Jika Anda menonaktifkan kunci KMS, terjadi error saat Anda melakukan kueri terhadap tabel a setelah instans dimulai ulang atau setelah 24 jam.
Pengaturan enkripsi tingkat tabel
Mulai dari Hologres V2.0, setelah Anda mengaktifkan enkripsi saat diam untuk suatu database, Anda dapat mengonfigurasi kebijakan enkripsi yang berbeda untuk masing-masing tabel. Hal ini memungkinkan beberapa tabel tetap tidak dienkripsi atau memungkinkan tabel yang berbeda dienkripsi dengan kunci KMS yang terpisah.
Atur aturan enkripsi tingkat tabel
Catatan:
Jika Anda tidak menentukan aturan enkripsi untuk suatu tabel, sistem akan menggunakan aturan tingkat database yang ditentukan oleh
hg_experimental_encryption_options.Anda harus mengatur aturan enkripsi saat membuat tabel. Anda tidak dapat mengatur aturan tersebut setelah tabel dibuat.
Sintaks:
CALL SET_TABLE_PROPERTY('<table_name>', 'encryption_options', '<encryption_type>,<cmk_id>,<ram_role>,<uid>');Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
table_name
Nama tabel tempat Anda ingin mengaktifkan enkripsi saat diam.
encryption_type
Algoritma enkripsi. Nilai yang valid: AES256, AESCTR, dan RC4.
cmk_id
ID kunci. Masuk ke Konsol Key Management Service dan dapatkan ID tersebut dari halaman detail kunci.
ram_role
Nama peran proxy Hologres yang telah Anda buat.
uid
ID Akun Alibaba Cloud Anda. Untuk informasi lebih lanjut, lihat Lihat ID akun.
Contoh:
Buat tabel bernama LINEITEM dan enkripsi menggunakan algoritma AES256 serta kunci 623c26ee-xxxx-xxxx-xxxx-91d323cc4855.
BEGIN; CREATE TABLE LINEITEM ( L_ORDERKEY BIGINT NOT NULL, L_PARTKEY INT NOT NULL, L_SUPPKEY INT NOT NULL, L_LINENUMBER INT NOT NULL, L_QUANTITY DECIMAL(15,2) NOT NULL, L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL, L_DISCOUNT DECIMAL(15,2) NOT NULL, L_TAX DECIMAL(15,2) NOT NULL, L_RETURNFLAG TEXT NOT NULL, L_LINESTATUS TEXT NOT NULL, L_SHIPDATE TIMESTAMPTZ NOT NULL, L_COMMITDATE TIMESTAMPTZ NOT NULL, L_RECEIPTDATE TIMESTAMPTZ NOT NULL, L_SHIPINSTRUCT TEXT NOT NULL, L_SHIPMODE TEXT NOT NULL, L_COMMENT TEXT NOT NULL, PRIMARY KEY (L_ORDERKEY,L_LINENUMBER) ); CALL SET_TABLE_PROPERTY('LINEITEM', 'encryption_options', 'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,153xxxxxxxxxxxxx'); COMMIT;
Lihat aturan enkripsi penyimpanan
Mulai dari Hologres V2.0, Anda dapat menggunakan pernyataan SQL berikut untuk melihat aturan enkripsi setiap tabel.
SELECT
*
FROM
hologres.hg_table_properties
WHERE
property_key = 'encryption_options';Contoh hasil: