全部产品
Search
文档中心

Hologres:Enkripsi data saat diam

更新时间:Jan 06, 2026

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

  1. Buat kebijakan kustom.

    1. Masuk ke Konsol Resource Access Management (RAM). Di panel navigasi sebelah kiri, pilih Permissions > Policies. Pada halaman Policies, klik Create Policy.

      权限策略

    2. 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"
              }
          ]
      }
    3. Klik OK. Kebijakan kustom telah dibuat.

  2. Buat Peran RAM dan berikan izin kepada Peran RAM tersebut.

    1. Masuk ke Konsol RAM. Di panel navigasi kiri, pilih Identities > Roles.

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

    3. Klik OK. Di dialog yang muncul, masukkan AliyunHologresEncryptionDefaultRole di kolom Role Name, lalu klik OK.创建角色

    4. Pada halaman detail peran, klik Grant Permission.

    5. Pada panel Grant Permission, atur Resource Scope menjadi Account. Untuk Policy, pilih kebijakan kustom AliyunHologresEncryptionDefaultRolePolicy yang dibuat pada langkah 1.添加权限

    6. Klik Grant permissions.

      Pada halaman detail peran, klik tab Trust Policy untuk memeriksa pengaturan kebijakan kepercayaan.

  3. Buat kunci

    Untuk informasi lebih lanjut, lihat Panduan Cepat Key Management.

    Penting

    Hologres hanya mendukung kunci simetris tipe Aliyun_AES_256.

  4. Atur aturan enkripsi

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

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

    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 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.
    3. 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:Lihat aturan enkripsi penyimpanan