Pelajari cara mengenkripsi data at rest untuk instans Hologres Anda.
Latar belakang
Key Management Service (KMS) milik Alibaba Cloud membuat, menyimpan, dan mengelola key enkripsi guna melindungi data sensitif, baik data at rest maupun data in transit.
Hologres mendukung enkripsi at rest melalui KMS. Ketika diaktifkan, KMS mengenkripsi data menjadi ciphertext sebelum disimpan, dan hanya key yang sesuai yang dapat mendekripsi data asli. Fitur ini melindungi data di lapisan penyimpanan, memperkuat keamanan terhadap serangan eksternal, sekaligus membantu memenuhi persyaratan compliance perusahaan. Karena enkripsi at rest membutuhkan komputasi intensif, performa query dan write dapat menurun antara 20% hingga 40% tergantung karakteristik query Anda.
Catatan penting
-
Hanya Hologres V1.1 ke atas yang mendukung enkripsi at rest. Jika instans Anda menjalankan versi lebih lama, upgrade instans Anda atau hubungi dukungan online.
-
Untuk instans di bawah V1.3.31, Anda harus menambahkan konfigurasi backend agar dapat menggunakan enkripsi at rest. Kami menyarankan Anda meng-upgrade instans tersebut.
-
Operasi pada Bring Your Own Key (BYOK) Anda di KMS, misalnya menonaktifkan atau menghapus key, akan memengaruhi enkripsi dan dekripsi di Hologres. Karena Hologres menerapkan caching, perubahan yang Anda lakukan di KMS baru berlaku dalam waktu 24 jam.
-
Enkripsi at rest hanya berlaku untuk table yang dibuat setelah fitur diaktifkan. Table yang sudah ada tidak otomatis dienkripsi.
-
Setelah Anda mengaktifkan enkripsi at rest, Anda tetap dapat memetakan table ke MaxCompute untuk membaca dan menulis data.
-
Menonaktifkan enkripsi at rest melalui SQL statement yang disediakan tidak mendekripsi data yang sudah ada. Hanya table baru yang dibuat setelah fitur dinonaktifkan yang tidak terenkripsi.
ALTER DATABASE <database_name> set hg_experimental_encryption_options=''; -
Jika key KMS untuk table terenkripsi menjadi nonaktif atau tidak valid, Anda tidak akan dapat membaca dari atau menulis ke table tersebut.
-
Mulai Hologres V2.0, Anda dapat mengatur pengaturan enkripsi yang berbeda untuk tiap table.
-
Enkripsi at rest didukung untuk columnar table dan bagian columnar dari hybrid row-column store table. Setelah fitur diaktifkan, foreign table Hologres di MaxCompute tetap dapat dibuat untuk akses data, namun hanya data pada tipe table yang didukung yang akan terenkripsi.
Cara kerja
Mekanisme enkripsi bekerja sebagai berikut.
-
Hologres mengenkripsi dan mendekripsi data per database menggunakan key yang dikelola KMS. Fitur ini mensyaratkan KMS aktif di region Anda.
-
KMS menghasilkan dan mengelola key Anda serta menjamin keamanannya.
-
Hologres mendukung algoritma enkripsi AES256, AESCTR, RC4, dan SM4.
-
Hologres mengadopsi model BYOK, sehingga Anda dapat menggunakan material Customer Master Key (CMK) yang dihasilkan KMS atau material key milik Anda sendiri yang Anda impor.
Buat BYOK key di KMS, lalu pilih key tersebut di Hologres untuk mengenkripsi sebuah database. Untuk informasi lebih lanjut, lihat Buat key.
-
Selama operasi data, Hologres memanggil API KMS untuk mengambil informasi key, yang di-cache selama 24 jam secara default. Penggunaan fitur enkripsi ini menimbulkan biaya KMS. Lihat Penagihan KMS 1.0.
Prosedur
Buat kebijakan kustom.
Masuk ke Konsol Resource Access Management (RAM). Di panel navigasi sisi 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 untuk menyelesaikan pembuatan kebijakan kustom.
Buat peran RAM dan berikan izin kepada peran RAM.
Masuk ke Konsol RAM. Di panel navigasi sisi 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. Dalam dialog, masukkan
AliyunHologresEncryptionDefaultRoledi bidang Role Name, dan klik OK.
Pada halaman detail peran, klik Grant Permission.
Di 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 key.
Untuk detail, lihat Memulai manajemen kunci.
PentingHologres hanya mendukung symmetric key bertipe Aliyun_AES_256.
-
Aktifkan enkripsi untuk database.
-
Hubungkan ke database Hologres yang ingin Anda aktifkan enkripsi at rest-nya. Untuk informasi lebih lanjut, lihat Login ke database.
-
Pilih SQL Editor pada menu navigasi atas. Di halaman Ad-hoc Query, atur Instance Name dan Database. Masukkan statement berikut di SQL editor, lalu klik Run.
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.
encryption_type
Algoritma enkripsi. Nilai yang valid mencakup AES256, AESCTR, dan RC4.
cmk_id
ID key, diperoleh dari halaman detail key di konsol KMS.
ram_role
Nama RAM role yang Anda buat.
uid
ID Akun Alibaba Cloud Anda. Untuk informasi lebih lanjut, lihat Lihat ID akun.
Contoh:
-
Aktifkan enkripsi at rest untuk database hoxxxx.
ALTER DATABASE hoxxxx set hg_experimental_encryption_options= 'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,187xxxxxxxxxxxxx'; -
Buat table dan masukkan data.
DROP TABLE IF EXISTS a; CREATE TABLE a(id int); INSERT INTO a values(1); SELECT hg_admin_command('flush'); -- Hanya untuk pengujian. Statement ini memungkinkan Anda melihat hasil query dengan segera. -
Query data tersebut.
SELECT * FROM a;Hasil berikut dikembalikan.

Jika Anda menonaktifkan key tersebut lalu me-restart instans, atau melakukan query terhadap table a setelah 24 jam, akan muncul error.
-
Pengaturan enkripsi tingkat table
Mulai Hologres V2.0, Anda dapat menerapkan kebijakan enkripsi yang berbeda untuk masing-masing table di dalam database yang terenkripsi. Pendekatan ini memberi fleksibilitas: Anda bebas memilih agar suatu table tetap tidak terenkripsi atau dienkripsi dengan KMS key tersendiri.
Atur enkripsi tingkat table
-
Catatan:
-
Secara default, pengaturan enkripsi sebuah table mengikuti pengaturan database, yaitu yang ditentukan melalui
hg_experimental_encryption_options. -
Untuk mengatur enkripsi yang independen pada sebuah table, tentukan saat membuat table. Pengaturan ini tidak dapat diubah setelah table dibuat.
-
-
Sintaks:
CALL SET_TABLE_PROPERTY('<table_name>', 'encryption_options', '<encryption_type>,<cmk_id>,<ram_role>,<uid>'); -
Deskripsi parameter:
Parameter
Deskripsi
table_name
Nama table.
encryption_type
Algoritma enkripsi. Nilai yang valid mencakup AES256, AESCTR, dan RC4.
cmk_id
ID key. Dapatkan ID key dari halaman detail key di konsol Key Management Service.
ram_role
Nama RAM role.
uid
ID akun Alibaba Cloud Anda. Untuk informasi lebih lanjut, lihat Lihat ID akun.
-
Contoh:
Buat table bernama lineitem dan enkripsi dengan algoritma AES256 serta CMK ber-ID 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 pengaturan enkripsi
Mulai Hologres V2.0, Anda dapat menggunakan SQL statement berikut untuk melihat aturan enkripsi tiap table.
SELECT
*
FROM
hologres.hg_table_properties
WHERE
property_key = 'encryption_options';
Contoh hasil: