All Products
Search
Document Center

Hologres:Enkripsi data saat diam

Last Updated:Sep 01, 2026

Enkripsi data saat diam di Hologres menggunakan kunci yang dikelola oleh KMS untuk melindungi data yang tersimpan dan memenuhi persyaratan kepatuhan. Topik ini menjelaskan cara kerja enkripsi saat diam, batasannya, cara mengaktifkannya di tingkat database dan tabel, serta cara mengganti kunci KMS dengan memigrasikan data ke database baru.

Mengapa mengenkripsi data saat diam dengan KMS

Key Management Service (KMS) adalah layanan Alibaba Cloud yang membuat, menyimpan, dan mengelola kunci enkripsi untuk melindungi data sensitif saat diam maupun dalam perjalanan.

Hologres menggunakan kunci KMS untuk mengenkripsi data yang Anda simpan di database. Enkripsi saat diam melindungi data di lapisan penyimpanan dari serangan eksternal dan membantu memenuhi persyaratan regulasi serta kepatuhan perusahaan.

Cara kerja

Hologres mengenkripsi dan mendekripsi data dengan kunci yang dikelola oleh KMS. Mekanisme enkripsi bekerja sebagai berikut:

  • Hologres mengenkripsi dan mendekripsi data yang tersimpan per database melalui KMS. Data dienkripsi menjadi ciphertext di lapisan penyimpanan, dan hanya kunci yang sesuai yang dapat mendekripsi data tersebut.

  • KMS menghasilkan dan mengelola kunci Anda serta menjaganya tetap aman.

  • Hologres mendukung algoritma enkripsi AES256, AESCTR, dan RC4.

  • Hologres hanya mengenkripsi dan mendekripsi data dengan Bring Your Own Key (BYOK). Dua jenis bahan kunci didukung: bahan kunci yang dihasilkan KMS saat Anda membuat customer master key (CMK), dan bahan kunci yang Anda impor.

    Anda membuat kunci BYOK di KMS dan memilihnya di Hologres untuk mengenkripsi database. Untuk informasi selengkapnya tentang cara membuat kunci BYOK di KMS, lihat Create a key.

  • Saat membaca dan menulis data, Hologres memanggil operasi API KMS untuk mendapatkan informasi kunci dan menyimpan cache informasi tersebut selama 24 jam secara default.

Catatan penggunaan

  • Cakupan enkripsi — Enkripsi saat diam hanya berlaku untuk tabel yang dibuat setelah fitur ini diaktifkan. Tabel yang dibuat sebelum fitur diaktifkan tidak dienkripsi.

  • Jenis tabel yang didukung — Hanya tabel berorientasi kolom dan bagian berorientasi kolom dari tabel hibrida baris-kolom yang dienkripsi. Jenis tabel lainnya tidak dienkripsi. Setelah Anda mengaktifkan enkripsi saat diam, Anda masih dapat membuat tabel eksternal Hologres di MaxCompute untuk membaca dan menulis data.

  • Kunci tingkat tabel — Hologres V2.0 dan versi lebih baru mendukung pengaturan enkripsi terpisah untuk setiap tabel, sehingga Anda dapat mengenkripsi tabel berbeda dengan kunci KMS yang berbeda. Untuk informasi selengkapnya, lihat Pengaturan enkripsi tingkat tabel.

  • Kinerja — Proses enkripsi dan dekripsi menambahkan beban pemrosesan. Enkripsi saat diam mengurangi kinerja kueri dan penulisan sekitar 20% hingga 40%, tergantung pada karakteristik kueri.

  • Operasi kunci — Operasi kunci KMS seperti menonaktifkan atau menghapus BYOK memengaruhi enkripsi dan dekripsi di Hologres. Karena Hologres menyimpan cache informasi kunci, operasi ini berlaku dalam waktu 24 jam.

  • Ketersediaan kunci — Jika kunci KMS yang digunakan oleh tabel terenkripsi dinonaktifkan atau tidak valid, tabel tersebut menjadi tidak dapat dibaca dan ditulis.

  • Penggantian kunci — Hologres tidak mendukung penggantian kunci KMS untuk database yang sudah dienkripsi. Untuk mengenkripsi data dengan kunci berbeda, buat database baru dan migrasikan data ke dalamnya. Untuk informasi selengkapnya, lihat Ganti kunci KMS dan migrasikan data.

  • Menonaktifkan enkripsi — Menonaktifkan enkripsi saat diam untuk database tidak mendekripsi data yang sudah dienkripsi. Untuk informasi selengkapnya, lihat Nonaktifkan enkripsi saat diam untuk database.

Penagihan

Enkripsi saat diam menimbulkan biaya KMS karena Hologres memanggil operasi API KMS untuk mendapatkan informasi kunci. Untuk informasi harga, lihat KMS billing.

Prasyarat

  • Instans Hologres Anda menjalankan V1.1 atau versi lebih baru. Hanya Hologres V1.1 dan versi lebih baru yang mendukung enkripsi saat diam. Jika instans Anda menjalankan versi sebelumnya, lakukan upgrade instans. Untuk kesalahan persiapan upgrade, lihat Troubleshooting upgrade preparation errors, atau bergabunglah dengan grup DingTalk Hologres untuk dukungan. Untuk informasi selengkapnya, lihat How do I get more online support?.

  • Instans sebelum V1.3.31 memerlukan konfigurasi backend untuk enkripsi saat diam. Instans V1.3.31 dan versi lebih baru tidak memerlukannya. (Disarankan) Upgrade your instance.

  • KMS telah diaktifkan di wilayah Anda.

  • Peran RAM telah dibuat. Anda menentukan nama peran ini dalam pengaturan enkripsi.

Aktifkan enkripsi saat diam untuk database

  1. Buat kebijakan kustom yang memberikan izin KMS yang diperlukan kepada Hologres.

    1. Login ke RAM console. Di panel navigasi kiri, pilih Permissions > Policies. Pada halaman Policies, klik Create Policy.

      权限策略

    2. Pada halaman Create Policy, klik JSON. Di editor kode, masukkan kebijakan berikut, lalu atur Name menjadi AliyunHologresEncryptionDefaultRolePolicy.

      创建权限策略

      Kebijakan ini memberikan izin KMS yang dibutuhkan Hologres untuk mendapatkan dan mendekripsi kunci data saat mengkueri data MaxCompute terenkripsi.

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "kms:Encrypt",
                      "kms:Decrypt",
                      "kms:GenerateDataKey",
                      "kms:DescribeKey"
                  ],
                  "Resource": "acs:kms:*:*:*/*",
                  "Effect": "Allow"
              }
          ]
      }
    3. Klik OK. Kebijakan kustom berhasil dibuat.

  2. Buat peran RAM untuk Hologres dan sambungkan kebijakan tersebut.

    Hologres memerlukan peran RAM untuk memanggil API KMS atas nama Anda. Buat peran tersebut dan sambungkan kebijakan yang dibuat pada langkah 1.

    1. Login ke RAM console. Di panel navigasi kiri, pilih Identities > Roles.

    2. Pada halaman Roles, klik Create Role. Atur Principal Type menjadi Cloud Service dan Principal Name menjadi Hologres.

    3. Klik OK. Di dialog yang muncul, masukkan AliyunHologresEncryptionDefaultRole di bidang Role Name, lalu klik OK.

      创建角色

    4. Di halaman detail peran, klik Grant Permission.

    5. Di panel Grant Permission, atur Resource Scope menjadi Account. Untuk Policy, pilih AliyunHologresEncryptionDefaultRolePolicy.

      添加权限

    6. Klik OK. Di halaman detail peran, klik tab Trust Policy untuk memverifikasi kebijakan kepercayaan.

  3. Buat kunci.

    Untuk detailnya, lihat Create a key.

    Hologres hanya mendukung kunci simetris tipe Aliyun_AES_256.

  4. Konfigurasikan pengaturan enkripsi.

    1. Sambungkan ke instansiasi basis data tempat Anda ingin mengaktifkan enkripsi saat diam. Untuk petunjuknya, lihat Connect to a database instance.

    2. Di halaman Ad-hoc Query, atur Instance Name dan Database, masukkan pernyataan berikut di editor kueri SQL, lalu klik Run.

ALTER DATABASE <db_name> SET hg_experimental_encryption_options='<encryption_type>,<cmk_id>,<ram_role>,<uid>';

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Deskripsi

db_name

Nama database yang ingin Anda enkripsi.

encryption_type

Algoritma enkripsi. Nilai yang valid: AES256, AESCTR, dan RC4.

cmk_id

ID kunci. Login ke Key Management Service console dan dapatkan ID dari halaman detail kunci.

ram_role

Nama peran RAM yang telah Anda buat.

uid

ID akun Alibaba Cloud Anda. Untuk informasi selengkapnya tentang cara mendapatkannya, lihat View the account ID.

Contoh berikut mengonfigurasi pengaturan enkripsi lalu mengkueri data.

  1. Aktifkan enkripsi saat diam untuk database.

    ALTER DATABASE hoxxxx set hg_experimental_encryption_options=
    'AES256,623c26ee-xxxx-xxxx-xxxx-91d323cc4855,AliyunHologresEncryptionDefaultRole,187xxxxxxxxxxxxx';
  2. Buat tabel 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. Ini memungkinkan Anda melihat hasilnya segera.
  3. Kueri data.

    SELECT * FROM a;

Jika Anda menonaktifkan kunci di KMS, sebuah error akan dilaporkan saat Anda mengkueri tabel a setelah instans dimulai ulang atau setelah 24 jam.

Di Hologres V2.0 dan versi lebih baru, Anda juga dapat melihat pengaturan enkripsi yang berlaku untuk setiap tabel. Untuk petunjuknya, lihat Lihat pengaturan enkripsi.

Nonaktifkan enkripsi saat diam untuk database

Jika Anda menjalankan pernyataan berikut untuk menonaktifkan enkripsi saat diam untuk database, data di tabel yang dibuat sebelum Anda menonaktifkannya tetap terenkripsi. Hanya tabel yang dibuat setelah Anda menonaktifkannya yang tidak dienkripsi.

ALTER DATABASE <database_name> set hg_experimental_encryption_options='';

Pengaturan enkripsi tingkat tabel

Mulai dari Hologres V2.0, setelah enkripsi saat diam diaktifkan untuk database, Anda dapat mengonfigurasi kebijakan enkripsi berbeda untuk masing-masing tabel. Tabel dapat tetap tidak dienkripsi atau menggunakan kunci KMS yang berbeda dari default database.

Konfigurasikan pengaturan enkripsi tingkat tabel ketika tabel dalam database yang sama harus menggunakan kunci KMS berbeda, atau ketika tabel tertentu harus tetap tidak dienkripsi.

Tetapkan pengaturan enkripsi tingkat tabel

Perhatikan hal berikut sebelum menetapkan pengaturan enkripsi tingkat tabel:

  • Jika Anda tidak mengonfigurasi pengaturan enkripsi terpisah untuk tabel, tabel tersebut menggunakan pengaturan yang ditentukan oleh hg_experimental_encryption_options.

  • Konfigurasikan pengaturan saat Anda membuat tabel. Anda tidak dapat mengonfigurasinya setelah tabel dibuat.

Jalankan pernyataan berikut untuk menetapkan pengaturan enkripsi tabel:

CALL SET_TABLE_PROPERTY('<table_name>', 'encryption_options', '<encryption_type>,<cmk_id>,<ram_role>,<uid>');

Tabel berikut menjelaskan parameter-parameter tersebut. Kecuali table_name, parameter ini sama dengan parameter pengaturan enkripsi tingkat database.

Parameter

Deskripsi

table_name

Nama tabel yang ingin Anda enkripsi.

encryption_type

Algoritma enkripsi. Nilai yang valid: AES256, AESCTR, dan RC4.

cmk_id

ID kunci. Login ke Key Management Service console dan dapatkan ID dari halaman detail kunci.

ram_role

Nama peran RAM yang telah Anda buat.

uid

ID akun Alibaba Cloud Anda. Untuk informasi selengkapnya tentang cara mendapatkannya, lihat View the account ID.

Contoh berikut membuat tabel bernama lineitem dan mengenkripsinya dengan 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 pengaturan enkripsi

Di Hologres V2.0 dan versi lebih baru, jalankan pernyataan SQL berikut untuk melihat pengaturan enkripsi setiap tabel:

SELECT
    *
FROM
    hologres.hg_table_properties
WHERE
    property_key = 'encryption_options';

Contoh hasil:

Hasil berisi empat kolom: table_namespace, table_name, property_key, dan property_value. Kolom property_value mencatat algoritma enkripsi (misalnya, AES256), ID CMK, peran RAM (misalnya, AliyunHologresEncryptionDefaultRole), dan UID.

Ganti kunci KMS dan migrasikan data

Hologres tidak mendukung penggantian kunci KMS untuk database yang sudah dienkripsi. Data yang dienkripsi dengan suatu kunci hanya dapat didekripsi oleh kunci tersebut, dan database hanya dapat memiliki satu pengaturan enkripsi efektif di tingkat database. Jika Anda menjalankan ALTER DATABASE pada database terenkripsi untuk mengarah ke kunci baru, pernyataan tersebut mungkin berhasil tanpa error, tetapi kunci tidak benar-benar diganti dan data yang ada tetap didekripsi dengan kunci aslinya.

Untuk mengganti kunci KMS—misalnya ketika kunci saat ini akan dinonaktifkan—buat database dengan pengaturan enkripsi baru dan migrasikan data ke dalamnya. Prosedur ini berlaku untuk pengaturan enkripsi tingkat database.

Peringatan

Jangan menonaktifkan atau menghapus kunci asli hingga migrasi selesai. Jika kunci KMS yang digunakan oleh tabel terenkripsi dinonaktifkan atau tidak valid, tabel tersebut menjadi tidak dapat dibaca dan ditulis.

Penting

Konfigurasikan pengaturan enkripsi untuk database baru sebelum Anda memigrasikan data. Enkripsi saat diam hanya berlaku untuk tabel yang dibuat setelah enkripsi diaktifkan. Jika Anda memigrasikan data terlebih dahulu lalu mengonfigurasi pengaturan enkripsi setelahnya, tabel yang dibuat selama migrasi tidak akan dienkripsi.

Migrasikan data dalam urutan berikut:

  1. Buat database baru.

  2. Konfigurasikan pengaturan enkripsi KMS baru untuk database baru. Gunakan sintaks yang sama seperti pada Aktifkan enkripsi saat diam untuk database.

    ALTER DATABASE <db_name> SET hg_experimental_encryption_options='<encryption_type>,<cmk_id>,<ram_role>,<uid>';
  3. Gunakan tugas sinkronisasi data, seperti tugas Flink atau DataWorks, untuk memigrasikan data dari database lama ke database baru.