全部产品
Search
文档中心

MaxCompute:Fungsi Enkripsi dan Dekripsi

更新时间:Jul 02, 2025

MaxCompute SQL menyediakan fungsi enkripsi dan dekripsi yang dapat digunakan untuk mengenkripsi atau mendekripsi data sesuai kebutuhan bisnis. Topik ini menjelaskan sintaksis, parameter, serta contoh penggunaan fungsi enkripsi dan dekripsi yang didukung oleh MaxCompute SQL.

Kemampuan enkripsi dan dekripsi data MaxCompute

  • Enkripsi dan dekripsi kunci tunggal: Sistem menghasilkan kunci acak tunggal untuk enkripsi atau dekripsi kolom tertentu. Anda harus menyimpan kunci yang dihasilkan.

    单一密钥加密.jpg

    Tabel berikut menjelaskan fungsi enkripsi dan dekripsi kunci tunggal yang didukung oleh MaxCompute SQL.

    Fungsi

    Deskripsi

    SYM_DECRYPT

    Mendekripsi data terenkripsi di kolom tabel tertentu dengan menggunakan kunci acak dan mengembalikan teks biasa tipe BINARY.

    SYM_ENCRYPT

    Mengenkripsi data di kolom tabel tertentu dengan menggunakan kunci acak dan mengembalikan ciphertext tipe BINARY.

  • Enkripsi dan dekripsi multi-kunci: Set kunci adalah objek manajemen kunci MaxCompute yang dapat menyimpan satu atau lebih kunci. Anda dapat menambahkan kunci secara manual ke set kunci, memutar kunci, dan melihat kunci asli.

    多密钥加密.jpg

    Tabel berikut menjelaskan fungsi enkripsi dan dekripsi multi-kunci yang didukung oleh MaxCompute SQL.

    Fungsi

    Deskripsi

    NEW_KEYSET

    Membuat set kunci berdasarkan tipe algoritma yang ditentukan.

    ADD_KEY_TO_KEYSET

    Menambahkan kunci ke set kunci dan mengonfigurasi kunci yang ditambahkan sebagai kunci utama.

    KEYSET_TO_JSON

    Mengonversi set kunci tipe BINARY menjadi set kunci JSON yang dapat dibaca. Setelah konversi, Anda dapat melihat detail set kunci.

    KEYSET_FROM_JSON

    Mengonversi set kunci tipe JSON menjadi set kunci tipe BINARY.

    ROTATE_KEYSET

    Mengizinkan sistem untuk secara otomatis menghasilkan kunci baru dan mengonfigurasinya sebagai kunci utama.

  • Enkripsi dan dekripsi multi-kunci berbasis Key Management Service (KMS): MaxCompute mendukung enkripsi dan dekripsi data berbasis KMS. Sistem secara otomatis menghasilkan set kunci dasar untuk enkripsi dan dekripsi data. Set kunci dasar digabungkan dengan kunci KMS untuk menghasilkan set kunci terenkripsi, yang disebut Keyset_KMS. Anda harus menyimpan Keyset_KMS. Untuk mendekripsi data, Anda perlu menyediakan Keyset_KMS. Sistem mendekripsi Keyset_KMS berdasarkan kunci KMS untuk mengembalikan set kunci dasar, lalu mendekripsi data menggunakan set kunci dasar.

    keyset.jpg

    Tabel berikut menjelaskan fungsi enkripsi dan dekripsi multi-kunci berbasis KMS yang didukung oleh MaxCompute SQL.

    Fungsi

    Deskripsi

    NEW_WRAPPED_KEYSET

    Asumsikan Alibaba Cloud Resource Name (ARN) dari suatu peran yang dapat menggunakan Key Management Service (KMS) customer master key (CMK) ARN untuk MaxCompute dan membuat Set kunci terbungkus. ARN peran ditentukan oleh role_arn, sedangkan ARN KMS CMK ditentukan oleh kms_cmk_arn. Fungsi ini juga digunakan untuk memberikan izin kepada akun Alibaba Cloud lainnya guna mendekripsi Set kunci berdasarkan role_chain.

    REWRAP_KEYSET

    Menjadi-enskripsi ulang set kunci yang dibungkus dengan menggunakan kunci KMS tertentu.

    ROTATE_WRAPPED_KEYSET

    Mendekripsi set kunci yang dienkripsi, menerapkan rotasi kunci, dan menggunakan kunci baru untuk mengenkripsi set kunci.

    USE_WRAPPED_KEYSET

    Mengonversi keyset yang dibungkus menjadi keyset dasar yang digunakan sebagai parameter dalam fungsi enkripsi atau dekripsi. Anda juga dapat menggunakan fungsi USE_WRAPPED_KEYSET untuk memperoleh informasi tentang keyset yang dibungkus dan menyimpan informasi tersebut untuk pemeliharaan keyset selanjutnya.

    ENHANCED_SYM_ENCRYPT

    Mengenkripsi data dengan menggunakan set kunci tertentu.

    ENHANCED_SYM_DECRYPT

    Mendekripsi data menggunakan set kunci tertentu.

Catatan penggunaan

MaxCompute 2.0 menyediakan fungsi tambahan. Jika fungsi yang Anda gunakan melibatkan tipe data baru yang didukung dalam edisi tipe data MaxCompute 2.0, Anda harus mengeksekusi pernyataan SET untuk mengaktifkan edisi tipe data MaxCompute 2.0. Tipe data baru tersebut mencakup TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP, dan BINARY.

  • Tingkat sesi: Untuk mengaktifkan edisi tipe data MaxCompute 2.0 pada tingkat sesi, tambahkan set odps.sql.type.system.odps2=true; sebelum pernyataan SQL yang ingin dieksekusi, lalu kirimkan dan eksekusi bersama-sama.

  • Tingkat proyek: Pemilik proyek dapat menjalankan perintah berikut untuk mengaktifkan edisi tipe data MaxCompute 2.0 untuk proyek berdasarkan kebutuhan proyek. Konfigurasi akan berlaku setelah 10 hingga 15 menit. Untuk mengaktifkan edisi tipe data MaxCompute 2.0 pada tingkat proyek, eksekusi pernyataan berikut:

    setproject odps.sql.type.system.odps2=true;

    Untuk informasi lebih lanjut tentang setproject, lihat Operasi Proyek. Untuk informasi lebih lanjut tentang tindakan pencegahan yang harus diambil saat mengaktifkan edisi tipe data MaxCompute 2.0 pada tingkat proyek, lihat Edisi Tipe Data.

SYM_DECRYPT

  • Sintaksis

    binary sym_decrypt(binary <value_to_decrypt>,
                       binary <key>
                       [,string <encryption_method> ,
                        [ string <additional_authenticated_data> ]
                       ]
                      )
  • Deskripsi

    Mendekripsi data yang dienkripsi menggunakan kunci acak di kolom tertentu dari sebuah tabel.

  • Parameter

    • value_to_decrypt: wajib. Data yang ingin didekripsi. Hanya data bertipe BINARY yang dapat didekripsi.

    • key: wajib. Kunci yang digunakan untuk mendekripsi data. Kunci harus bertipe BINARY dan panjangnya harus 256 bit.

    • encryption_method: opsional. Metode yang digunakan untuk mendekripsi data, yang harus sama dengan metode enkripsi.

    • additional_authenticated_data: opsional. Data autentikasi tambahan (AAD), yang digunakan untuk memverifikasi keaslian dan integritas data. Parameter ini diperlukan jika AAD digunakan selama enkripsi data.

  • Nilai Kembali

    Teks biasa bertipe BINARY dikembalikan. Anda dapat menggunakan fungsi CAST untuk mengonversi tipe BINARY menjadi tipe STRING sesuai kebutuhan bisnis.

  • Contoh

    Contoh berikut menggambarkan cara mendekripsi data yang dienkripsi menggunakan SYM_ENCRYPT.

    • Contoh 1: Mendekripsi data yang dienkripsi menggunakan kunci teks biasa.

      • Gunakan algoritma enkripsi otentikasi dengan data terkait (AEAD) untuk mendekripsi data.

        -- Mendekripsi data di kolom id_card_no.
        insert overwrite table mf_user_info
        select id,
            name,
            gender,
               cast(sym_decrypt(unbase64(id_card_no),
                           cast('b75585cf321cdcad42451690cdb7bfc4' as binary)
                          ) as string) as id_card_no,
               tel
        from mf_user_info;
        
        -- Meminta data teks biasa yang didekripsi.
        select * from mf_user_info;

        Hasil berikut dikembalikan:

        +------------+------+--------+------------+-------------+
        | id         | name | gender | id_card_no | tel         |
        +------------+------+--------+------------+-------------+
        | 1          | bob  | male   | 0001       | 13900001234 |
        | 2          | allen| male   | 0011       | 13900001111 |
        | 3          | kate | female | 0111       | 13900002222 |
        | 4          | annie| female | 1111       | 13900003333 |
        +------------+------+--------+------------+-------------+
      • Gunakan algoritma AEAD dengan AAD untuk mendekripsi data.

        -- Mendekripsi data di kolom id_card_no.
        insert overwrite table mf_user_info
        select id,
                     name,
                     gender,
                      cast(sym_decrypt(unbase64(id_card_no),
                        cast('b75585cf321cdcad42451690cdb7bfc4' as binary),
                           'AES-GCM-256',
                               'test'
                          )as string)as id_card_no,
               tel
        from mf_user_info;
        
        -- Meminta data teks biasa yang didekripsi.
        select * from mf_user_info;

        Hasil berikut dikembalikan:

        +------------+------+--------+------------+------------+
        | id         | name | gender | id_card_no |    tel     |
        +------------+------+--------+------------+------------+
        | 1          | bob  | male   | 0001       | 13900001234|
        | 2          | allen| male   | 0011       | 13900001111|
        | 3          | kate | female | 0111       | 13900002222|
        | 4          | annie| female | 1111       | 13900003333|
        +------------+------+--------+------------+------------+
    • Contoh 2: Mendekripsi data yang dienkripsi menggunakan tabel kunci.

      -- Mendekripsi data di kolom tertentu dari tabel mf_user_info.
      insert overwrite table mf_user_info
      select /*+mapjoin(b)*/
            a.id,
            a.name,
            a.gender,
            cast(sym_decrypt(unbase64(a.id_card_no), b.key) as string) as id_card_no,
            a.tel
       from mf_user_info as a join mf_id_key as b on a.id>=b.id;
      
      -- Meminta data yang didekripsi.
      select * from mf_user_info;

      Hasil berikut dikembalikan:

      +------------+------+--------+------------+-------------+
      | id         | name | gender | id_card_no | tel         |
      +------------+------+--------+------------+-------------+
      | 1          | bob  | male   | 0001       | 13900001234 |
      | 2          | allen| male   | 0011       | 13900001111 |
      | 3          | kate | female | 0111       | 13900002222 |
      | 4          | annie| female | 1111       | 13900003333 |
      +------------+------+--------+------------+-------------+

SYM_ENCRYPT

  • Sintaksis

    binary sym_encrypt(string|binary <value_to_encrypt>,
                       binary <key>
                       [,string <encryption_method> ,
                          [ string <additional_authenticated_data> ]
                        ]
                      )
  • Deskripsi

    Mengenkripsi data di kolom tertentu tabel menggunakan kunci acak.

  • Parameter

    • value_to_encrypt: wajib. Data yang ingin dienkripsi. Anda hanya dapat mengenkripsi data bertipe STRING dan BINARY.

    • key: wajib. Kunci yang digunakan untuk mengenkripsi data. Kunci harus bertipe BINARY dan memiliki panjang 256 bit.

    • encryption_method: opsional. Metode enkripsi. Hanya algoritma enkripsi AES-GCM-256 yang tersedia dan digunakan sebagai nilai default.

    • additional_authenticated_data: opsional. AAD, yang digunakan untuk memverifikasi keaslian dan integritas data. Parameter ini berlaku hanya jika Anda menggunakan algoritma enkripsi authenticated encryption with associated data (AEAD), seperti AES GCM.

  • Nilai Kembali

    Teks terenkripsi bertipe BINARY dikembalikan.

    • Nilai kembali berisi Initialization Vector (IV), ciphertext, dan tag AEAD secara berurutan.

    • Nilai kembali bersifat acak dan berbeda setiap kali meskipun Anda menggunakan kunci yang sama untuk mengenkripsi plaintext yang sama.

  • Data Sampel

    -- Membuat tabel.
    create table mf_user_info(id bigint,
                              name string,
                              gender string,
                              id_card_no string,
                              tel string);
    -- Menyisipkan data ke dalam tabel eksternal.
    insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"),
                                           (2,"allen","male","0011","13900001111"),
                                         (3,"kate","female","0111","13900002222"),
                                         (4,"annie","female","1111","13900003333");
    -- Meminta data dari tabel.
    select * from mf_user_info;
    +------------+------+--------+------------+------------+
    | id         | name | gender | id_card_no |    tel     |
    +------------+------+--------+------------+------------+
    | 1          | bob  | male   | 0001       | 13900001234|
    | 2          | allen| male   | 0011       | 13900001111|
    | 3          | kate | female | 0111       | 13900002222|
    | 4          | annie| female | 1111       | 13900003333|
    +------------+------+--------+------------+------------+
  • Contoh 1: Mengenkripsi data menggunakan kunci teks biasa.

    Mengenkripsi data di kolom tertentu tabel mf_user_info berdasarkan data sampel. Contoh pernyataan:

    • Gunakan algoritma AEAD untuk mengenkripsi data.

      -- Enkripsi data di kolom id_card_no.
      insert overwrite table mf_user_info
      select id,
          name,
          gender,
             base64(sym_encrypt(id_card_no,
                         cast('b75585cf321cdcad42451690cdb7bfc4' as binary)
                        ))as id_card_no,
            tel
      from mf_user_info;
      
      select * from mf_user_info;

      Hasil berikut dikembalikan:

      +------------+------+--------+------------+-----+
      | id         | name | gender | id_card_no | tel |
      +------------+------+--------+------------+-----+
      | 1          | bob  | male   | frgJZAEAQMeEuHqpS8lK9VxQhgPYpZ317V+oUla/xEc= | 13900001234|
      | 2          | allen| male   | frgJZAIAQMeEuHqpLeXQfETsFSLJxBwHhPx6tpzWUg4= | 13900001111|
      | 3          | kate | female | frgJZAMAQMeEuHqpdphXAU6iWelWenlDnVy+R0HMvAY= | 13900002222|
      | 4          | annie| female | frgJZAQAQMeEuHqpR5c8bj21dYCeM0C25bLRZIrP71c= | 13900003333|
      +------------+------+--------+------------+-----+
    • Gunakan algoritma AEAD untuk mengenkripsi data dan melampirkan AAD.

      -- Enkripsi data di kolom id_card_no.
      insert overwrite table mf_user_info
      select id,
                   name,
                   gender,
             base64(sym_encrypt(id_card_no,
                    cast('b75585cf321cdcad42451690cdb7bfc4' as binary),
                    'AES-GCM-256',
                    'test'
                    ))as id_card_no,
            tel
      from mf_user_info;
      select * from mf_user_info;

      Hasil berikut dikembalikan:

      +------------+------+--------+------------+-----+
      | id         | name | gender | id_card_no | tel |
      +------------+------+--------+------------+-----+
      | 1          | bob  | male   | gJ0QaAEAoGGWVw90H/zETg... | 13900001234|
      | 2          | allen| male   | gJ0QaAIAoGGWVw90TpNFC0... | 13900001111|
      | 3          | kate | female | gJ0QaAMAoGGWVw90KaQ8Vm... | 13900002222|
      | 4          | annie| female | gJ0QaAQAoGGWVw90nYCAS1... | 13900003333|
      +------------+------+--------+------------+-----+
  • Contoh 2: Mengenkripsi data menggunakan tabel kunci.

    Buat tabel kunci berdasarkan data sampel untuk mengelola kunci.

    • Prinsip

      • Untuk enkripsi data, Anda dapat menyimpan kunci di tabel MaxCompute dan melakukan operasi JOIN pada tabel kunci MaxCompute dan tabel yang kolom datanya ingin dienkripsi. Ini mencegah kunci bocor saat kunci dilewatkan.

      • Untuk dekripsi data, administrator proyek tidak memberikan izin pada tabel kunci MaxCompute kepada pengguna yang ingin menggunakan tabel kunci. Sebagai gantinya, administrator proyek membuat tampilan aman dan memberi otorisasi kepada pengguna untuk mengakses tabel kunci dan memanggil fungsi dekripsi untuk mendekripsi data berdasarkan tampilan tersebut. Pengguna hanya dapat mendekripsi data setelah mereka mendapatkan izin akses pada tampilan tersebut. Teks biasa kunci tidak termasuk dalam tampilan. Dengan cara ini, kunci tidak bocor.

    • Perhatian

      • Pelanggan bertanggung jawab atas pembuatan dan pengelolaan kunci. MaxCompute tidak menyimpan kunci atau pemetaan antara kunci dan ciphertext. Jika kunci hilang, data tidak dapat didekripsi.

      • Untuk memastikan keamanan data, pemrosesan khusus diperlukan saat Anda melewati parameter yang melibatkan kunci teks biasa.

      • Jika data yang ingin dienkripsi adalah bertipe BINARY, Anda harus menjalankan perintah set odps.sql.type.system.odps2=true; untuk mengaktifkan edisi tipe data MaxCompute V2.0.

    Contoh pernyataan:

    -- Membuat tabel kunci.
    create table mf_id_key(id bigint,key binary);
    -- Menyisipkan kunci ke dalam tabel kunci.
    insert overwrite table mf_id_key
      values (1,cast('b75585cf321cdcad42451690cdb7bfc4' as binary));
    -- Meminta kunci.
    select * from mf_id_key;
    +------------+------+
    | id         | key  |
    +------------+------+
    | 1          | b75585cf321cdcad42451690cdb7bfc4 |
    +------------+------+
    
    -- Meminta data dari tabel mf_user_info.
    select * from mf_user_info;
    +------------+------+--------+------------+------------+
    | id         | name | gender | id_card_no |    tel     |
    +------------+------+--------+------------+------------+
    | 1          | bob  | male   | 0001       | 13900001234|
    | 2          | allen| male   | 0011       | 13900001111|
    | 3          | kate | female | 0111       | 13900002222|
    | 4          | annie| female | 1111       | 13900003333|
    +------------+------+--------+------------+------------+
    
    -- Enkripsi data di kolom tertentu tabel mf_user_info.
    insert overwrite table mf_user_info
    select /*+mapjoin(b)*/
          a.id,
          a.name,
          a.gender,
          base64(
            (sym_encrypt(a.id_card_no, b.key))
          ) as id_card_no,
          a.tel
     from mf_user_info as a join mf_id_key as b on a.id>=b.id;
    
    -- Meminta data terenkripsi.
    select * from mf_user_info;

    Hasil berikut dikembalikan:

    +------------+------+--------+------------+-----+
    | id         | name | gender | id_card_no | tel |
    +------------+------+--------+------------+-----+
    | 1          | bob  | male   | 9esKZAEAoBquXVJo3ZptvoI09XuM4bSFTqF1mXH1BO4= | 13900001234|
    | 2          | allen| male   | 9esKZAIAoBquXVJoJYqnXieAANih7FR59luePvdHB9U= | 13900001111|
    | 3          | kate | female | 9esKZAMAoBquXVJoppwxgVwPYBnvjIMklWLmJ/sU0Y8= | 13900002222|
    | 4          | annie| female | 9esKZAQAoBquXVJoB85RUFCLMbdyEBSz7LdS4M3Guvk= | 13900003333|
    +------------+------+--------+------------+-----+

NEW_KEYSET

  • Sintaksis

    binary NEW_KEYSET(string <key_type>, [string <description>])
  • Deskripsi

    Membuat sebuah keyset berdasarkan tipe algoritma yang ditentukan.

  • Parameter

    • key_type: wajib. Parameter ini menentukan tipe algoritma dari kunci data dalam keyset baru. Nilai yang valid: AES-GCM-256, AES-SIV-CMAC-128, dan AES-SIV-CMAC-256.

    • description: opsional. Parameter ini memberikan deskripsi untuk kunci data dalam keyset baru.

  • Nilai Pengembalian

    Sebuah keyset dengan tipe BINARY dikembalikan.

    Catatan

    Anda dapat menggunakan fungsi HEX untuk mengonversi tipe BINARY menjadi tipe STRING atau menggunakan fungsi UNHEX untuk mengonversi tipe STRING menjadi tipe BINARY sesuai kebutuhan bisnis Anda.

  • Contoh

    select hex(NEW_KEYSET('AES-GCM-256', 'hello world'));

    Hasil berikut dikembalikan:

    +------------+
    | _c0        |
    +------------+
    | 0A10577567735A514541554D42776E684C4212580A330A0B4145532D47434D2D323536122017F7A430B9D4B59B55454FD4B486216059F1B748CE0502D901EBEACEAB6569191801200210011A10577567735A514541554D42776E684C4220022A0B68656C6C6F20776F726C64 |
    +------------+

ADD_KEY_TO_KEYSET

  • Sintaksis

    binary ADD_KEY_TO_KEYSET(binary <keyset>, string <key_type>, binary <raw_key>, [string <description>])
  • Deskripsi

    Menambahkan kunci ke dalam set kunci dan mengonfigurasi kunci tersebut sebagai kunci utama.

  • Parameter

    • keyset: wajib. Parameter ini menentukan set kunci yang sudah ada dengan tipe BINARY.

    • key_type: wajib. Parameter ini menentukan tipe algoritma dari kunci yang ingin ditambahkan. Nilai valid: AES-GCM-256, AES-SIV-CMAC-128, dan AES-SIV-CMAC-256.

    • raw_key: wajib. Parameter ini menentukan kunci yang ingin ditambahkan dan dikonfigurasi sebagai kunci utama. Kunci tersebut bertipe BINARY.

    • description: opsional. Parameter ini memberikan deskripsi untuk kunci data.

  • Nilai Kembali

    Set kunci dengan tipe BINARY dikembalikan.

    Catatan

    Anda dapat menggunakan fungsi HEX untuk mengonversi tipe BINARY menjadi tipe STRING atau menggunakan fungsi UNHEX untuk mengonversi tipe STRING menjadi tipe BINARY sesuai dengan kebutuhan bisnis Anda.

  • Contoh

    select hex(ADD_KEY_TO_KEYSET(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), 'AES-SIV-CMAC-128', unhex('b75585cf321cdcad42451690cdb7bfc49c26092f60f854e72d43244c55620a3d'),'deskripsi') );

    Hasil berikut dikembalikan:

    +------------+
    | _c0        |
    +------------+
    | 0A10596530735A5145414150447273424C4212580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64125D0A380A104145532D5349562D434D41432D3132381220B75585CF321CDCAD42451690CDB7BFC49C26092F60F854E72D43244C55620A3D1801200110011A10596530735A5145414150447273424C4220022A0B6465736372697074696F6E |
    +------------+

KEYSET_FROM_JSON

  • Sintaksis

    binary KEYSET_FROM_JSON(string <json_keyset>)
  • Deskripsi

    Mengonversi set kunci bertipe JSON menjadi set kunci bertipe BINARY.

  • Parameter

    json_keyset: wajib. Parameter ini menentukan set kunci bertipe JSON.

  • Nilai Pengembalian

    Set kunci bertipe BINARY dikembalikan.

    Catatan

    Anda dapat menggunakan fungsi HEX untuk mengonversi tipe BINARY menjadi tipe STRING atau menggunakan fungsi UNHEX untuk mengonversi tipe STRING menjadi tipe BINARY sesuai dengan kebutuhan bisnis Anda.

  • Contoh

    select hex(KEYSET_FROM_JSON('{
        "key": [{
                "description": "hello world",
                "key_id": "r8MqZAEA8PDd3QSL",
                "key_meta_data": {
                    "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE",
                    "key_material_type": "SYMMETRIC",
                    "type": "AES-GCM-256",
                    "value": "Jqj7ESbfT1td0DwYDmkZVl13FsuykYFe+1u/MPi++a8="},
                "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE",
                "status": "ENABLED"}],
        "primary_key_id": "r8MqZAEA8PDd3QSL"}')) ;

    Hasil berikut dikembalikan:

    +------------+
    | _c0        |
    +------------+
    | 0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64 |
    +------------+

KEYSET_TO_JSON

  • Sintaksis

    STRING KEYSET_TO_JSON(BINARY <keyset>)
  • Deskripsi

    Mengonversi Set kunci tipe BINARY menjadi string JSON yang dapat dibaca. Setelah konversi, Anda dapat melihat detail dari Set kunci tersebut.

  • Parameter

    keyset: wajib. Nilai bertipe BINARY. Parameter ini menentukan Set kunci yang sudah ada.

  • Nilai Kembali

    Set kunci dalam format JSON dikembalikan. Deskripsi parameter:

    • key_id: ID dari kunci.

    • key_material_origin: asal dari kunci.

    • key_material_type: tipe enkripsi dari kunci.

    • type: tipe algoritma dari kunci.

    • value: nilai dari kunci.

    • output_prefix_type: format teks sandi setelah enkripsi.

  • Contoh

    SELECT KEYSET_TO_JSON(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64')) ;

    Hasil berikut dikembalikan:

     +------------+
    | _c0        |
    +------------+
    | {
        "key": [{
                "description": "hello world",
                "key_id": "r8MqZAEA8PDd3QSL",
                "key_meta_data": {
                    "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE",
                    "key_material_type": "SYMMETRIC",
                    "type": "AES-GCM-256",
                    "value": "Jqj7ESbfT1td0DwYDmkZVl13FsuykYFe+1u/MPi++a8="},
                "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE",
                "status": "ENABLED"}],
        "primary_key_id": "r8MqZAEA8PDd3QSL"} |
    +------------+

ROTATE_KEYSET

  • Sintaksis

    binary ROTATE_KEYSET(binary <keyset>, string <key_type>, [string <description> ])
  • Deskripsi

    Mengizinkan sistem untuk secara otomatis menghasilkan kunci baru dan mengonfigurasi kunci baru tersebut sebagai kunci utama.

  • Parameter

    • keyset: wajib. Nilai bertipe BINARY. Parameter ini menentukan set kunci yang ingin diperbarui.

    • key_type: wajib. Parameter ini menentukan tipe algoritma dari kunci baru. Nilai yang valid: AES-GCM-256, AES-SIV-CMAC-128, dan AES-SIV-CMAC-256.

    • description: opsional. Parameter ini memberikan deskripsi untuk kunci data baru.

  • Nilai Kembali

    Set kunci bertipe BINARY dikembalikan.

    Catatan

    Anda dapat menggunakan fungsi HEX untuk mengonversi tipe BINARY menjadi tipe STRING atau menggunakan fungsi UNHEX untuk mengonversi tipe STRING menjadi tipe BINARY sesuai dengan kebutuhan bisnis Anda.

  • Contoh

    select ROTATE_KEYSET(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), 'AES-SIV-CMAC-256', 'hello world') ;

    Hasil berikut dikembalikan:

    +------------+
    | _c0        |
    +------------+
    | =0A=10BVIuZQEAcHHPLfn1=12X=0A3=0A=0BAES-GCM-256=12=20&=A8=FB=11&=DFO[]=D0<=18=0Ei=19V]w=16=CB=B2=91=81^=FB[=BF0=F8=BE=F9=AF=18=01=20=02=10=01=1A=10r8MqZAEA8PDd3QSL=20=02*=0Bhello=20world=12}=0AX=0A=10AES-SIV-CMAC-256=12@=9D=AD=B7=D6=AF=01=B2=9D=CE=C3=02y=A9=DB=E1=17q>'F=DC=F5=EF=FFI=7F=F0w)=95F=07>=9C=EDqn=DF=0E=1E=16bP&=D3=7F>gV=CBl=8AGJCm=93=FF=F9=96=AD=1A=C0=BC=18=01=20=02=10=01=1A=10BVIuZQEAcHHPLfn1=20=02*=0Bhello=20world |
    +-----------

NEW_WRAPPED_KEYSET

  • Sintaksis

    binary NEW_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <key_type>
    [, string <description>, [string <role_chain>]])
  • Deskripsi

    Anda dapat menggunakan MaxCompute dengan KMS untuk mengelola kunci. Anda dapat menghasilkan set kunci terbungkus dengan mengenkripsi set kunci berdasarkan kunci KMS. Setelah Anda menghasilkan set kunci terbungkus, Anda harus mencatat dan menyimpan secara manual set kunci terbungkus tersebut untuk keperluan enkripsi dan dekripsi data berbasis kunci KMS selanjutnya. Dalam proses enkripsi atau dekripsi, semua kunci dihasilkan secara otomatis oleh sistem. Anda tidak dapat melihat kunci asli yang digunakan untuk enkripsi dan dekripsi. Dengan cara ini, data dapat dienkripsi atau didekripsi dengan cara yang lebih aman. Fungsi NEW_WRAPPED_KEYSET mengasumsikan bahwa Alibaba Cloud Resource Name (ARN) dari peran yang dapat menggunakan ARN Kunci Utama Pelanggan (CMK) KMS telah diberikan kepada MaxCompute dan membuat set kunci terbungkus. ARN peran ditentukan oleh role_arn. ARN CMK KMS ditentukan oleh kms_cmk_arn. Fungsi ini juga digunakan untuk memberikan izin kepada akun Alibaba Cloud lainnya untuk menggunakan set kunci terbungkus berdasarkan role_chain.

    Sebelum Anda menggunakan fungsi NEW_WRAPPED_KEYSET, pastikan prasyarat berikut telah dipenuhi:

    • Set kunci terbungkus dihasilkan menggunakan fungsi NEW_WRAPPED_KEYSET. Untuk informasi lebih lanjut, lihat NEW_WRAPPED_KEYSET.

    • Set kunci dasar diperoleh dari set kunci terbungkus menggunakan fungsi USE_WRAPPED_KEYSET. Prasyarat ini harus dipenuhi untuk menggunakan set kunci terbungkus dalam mengenkripsi data. Set kunci dasar berfungsi sebagai parameter dalam fungsi ENHANCED_SYM_ENCRYPT untuk proses enkripsi data. Selain itu, akun Anda harus memiliki peran dengan izin untuk menggunakan set kunci terbungkus.

    • Peran RAM telah dibuat dan MaxCompute telah diberi otorisasi untuk mengakses KMS. ARN dari peran RAM telah diperoleh. ARN peran ditentukan oleh role_arn.

  • Parameter

    • kms_cmk_arn: wajib. Parameter ini menentukan ARN dari CMK KMS yang digunakan untuk mengenkripsi set kunci. Nilai parameter ini dalam format 'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId menentukan ID wilayah, UserId menentukan ID pengguna, dan CmkId menentukan ID CMK. Anda dapat memperoleh ARN dari halaman Detail Kunci di Konsol KMS.

    • role_arn: wajib. Parameter ini menentukan ARN dari peran RAM yang memiliki izin pada KMS. Peran ini perlu diasumsikan oleh MaxCompute. Nilai parameter ini dalam format 'acs:ram:${<userAID>}:role/${<roleName>}'. userAID menentukan ID pengguna, dan roleName menentukan nama peran.

    • wrapped_keyset: Wajib. Parameter ini menentukan set kunci yang dibungkus yang akan dienkripsi ulang.

    • description: opsional. Parameter ini memberikan deskripsi dari kunci.

    • role_chain: opsional. Parameter ini menentukan rantai peran untuk otorisasi pengguna. Nilai parameter ini dalam format 'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Anda dapat menggunakan rantai peran untuk memanggil set kunci terbungkus lintas akun Alibaba Cloud.

  • Nilai Pengembalian

    Set kunci terbungkus bertipe BINARY dikembalikan. Anda dapat menggunakan fungsi HEX untuk mengonversi set kunci terbungkus bertipe BINARY menjadi set kunci bertipe STRING sesuai dengan kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang fungsi HEX, lihat HEX.

  • Contoh

    • Buat set kunci terbungkus.

      insert overwrite table mf_user_info
      select id,
          name,
          gender,
             base64(ENHANCED_SYM_ENCRYPT(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), nomor_ktp ))as nomor_ktp,
            tel
      from mf_user_info;

      Hasil berikut dikembalikan:

      +-----+
      | _c0 |
      +-----+
      | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78434A373434582F54756C5A547A4E69337562786F4B3543412F616655573262786D345A41306B464C674A2F5758324F4E514E346746306F303236376D35335A6471797237366E57565A6836387A52687A4A673945784B6E677568794A376E6F4A68573677684B5A555A42786E4A383742536C4D46326A374F71474F4C414A6B665779694557394D58664876576E306C6D49777052746A77325643707A4259517277327944354343396C50586F31346A4351506253612F3044394C4C6E6E622F747A6B57316E4F564A6C5359354B35526130537565584F33507856773D |
      +-----+
    • Buat set kunci terbungkus dan izinkan peran lain untuk memanggil set kunci terbungkus.

      @origin_key := unhex('<wrapped_keyset>');
      @role_chain := 'acs:ram:${<UserAId>}:role/${<roleName2>},acs:ram:${<UserBId>}:role/${<roleName3>}';
      select hex(REWRAP_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz******************', 'acs:ram:${<UserId>}:role/${<roleName>}', @origin_key, @role_chain));

      Hasil berikut dikembalikan:

      +-----+
      | _c0 |
      +-----+
      | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D784D59716D4C767954716B3562444779574C7A387965774966432F516B4A59616F57623648364A546A62434F7A7A42634F517A687A6E526F36543866714E4E63555546566874696C4A3947713556667A2F7851757A55686467504C517A2B6C433337485A535449744B53714E396B6639587666487A4D7957643842334D3179392F67423774726835437A556F786A74614571612F5A3543447668524A7731426566525647796A77574974476243475A4E594550714E767963532B333432743347396B714777626C54336F57706939706E437A667A4E4D6F4C63714F453D |
      +-----+

REWRAP_KEYSET

  • Sintaksis

    binary REWRAP_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>, [string <role_chain>])
  • Deskripsi

    Anda dapat menggunakan MaxCompute dengan KMS untuk mengelola kunci. Anda dapat menghasilkan set kunci terbungkus dengan mengenkripsi set kunci berdasarkan kunci KMS. Fungsi REWRAP_KEYSET menggunakan kunci KMS baru untuk mengenkripsi ulang set kunci terbungkus yang dihasilkan menggunakan fungsi NEW_WRAPPED_KEYSET.

    Sebelum menggunakan fungsi REWRAP_KEYSET, pastikan prasyarat berikut telah dipenuhi:

    • Set kunci terbungkus dihasilkan menggunakan fungsi NEW_WRAPPED_KEYSET. Untuk informasi lebih lanjut, lihat NEW_WRAPPED_KEYSET.

    • Kunci KMS dibuat dan ARN kunci yang ditentukan oleh kms_cmk_arn diperoleh. Peran RAM diberi izin untuk menggunakan kunci baru.

  • Parameter

    • kms_cmk_arn: wajib. Parameter ini menentukan ARN dari kunci master pelanggan KMS (CMK) yang ingin Anda gunakan untuk mengenkripsi ulang set kunci terbungkus. Nilai parameter ini dalam format 'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId menentukan ID wilayah, UserId menentukan ID pengguna, dan CmkId menentukan ID CMK. Anda dapat memperoleh ARN dari halaman Detail Kunci di Konsol KMS.

    • role_arn: wajib. Parameter ini menentukan ARN dari peran RAM yang memiliki izin pada kunci KMS lama dan baru. Peran RAM harus diasumsikan oleh MaxCompute. Nilai parameter ini dalam format 'acs:ram:${<userAID>}:role/${<roleName>}'. userAID menentukan ID pengguna, dan roleName menentukan nama peran.

    • wrapped_keyset: wajib. Parameter ini menentukan set kunci terbungkus yang ingin Anda enkripsi ulang.

    • role_chain: opsional. Parameter ini menentukan rantai peran untuk otorisasi pengguna. Nilai parameter ini dalam format 'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Anda dapat menggunakan rantai peran untuk memanggil set kunci terbungkus di seluruh akun Alibaba Cloud.

  • Nilai Kembali

    Set kunci terbungkus tipe BINARY dikembalikan. Anda dapat menggunakan fungsi HEX untuk mengonversi set kunci terbungkus tipe BINARY menjadi set kunci tipe STRING sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang fungsi HEX, lihat HEX.

  • Contoh

    Catatan

    Kode sampel berikut berisi variabel. Anda harus menjalankan kode dalam mode skrip atau mengganti variabel dengan nilai sebenarnya dalam pernyataan SQL.

    • Mengenkripsi ulang set kunci terbungkus.

      @kms_resource_keyId := 'acs:kms:${<RegionId>}:${<UserId>}:key/${<CmkId>}';
      @role_arn := 'acs:ram:${<UserId>}:role/${<roleName>}';
      @origin_key := unhex('<wrapped_keyset>');
      select hex(ROTATE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, 'AES-GCM-256', 'hello world'));
    • Mengenkripsi ulang set kunci terbungkus dan mengizinkan akun Alibaba Cloud lain untuk memanggil set kunci terbungkus.

      @origin_key := unhex('<wrapped_keyset>');
      @role_chain := 'acs:ram:${<UserAId>}:role/${<roleName2>},acs:ram:${<UserBId>}:role/${<roleName3>}';
      select hex(REWRAP_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz******************', 'acs:ram:${<UserId>}:role/${<roleName>}', @origin_key, @role_chain));

ROTATE_WRAPPED_KEYSET

  • Sintaksis

    binary ROTATE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>,string <key_type> [,string description,[string <role_chain>]])
  • Deskripsi

    Anda dapat menggunakan MaxCompute dengan KMS untuk mengelola kunci. Anda dapat menghasilkan set kunci terbungkus dengan mengenkripsi set kunci berdasarkan kunci KMS. Fungsi ROTATE_WRAPPED_KEYSET menggunakan kunci KMS baru dan algoritma kunci baru untuk mengenkripsi ulang set kunci terbungkus yang dihasilkan menggunakan fungsi NEW_WRAPPED_KEYSET. Dibandingkan dengan fungsi REWRAP_KEYSET, fungsi ROTATE_WRAPPED_KEYSET dapat menggunakan algoritma kunci baru untuk enkripsi ulang.

    Sebelum menggunakan fungsi ROTATE_WRAPPED_KEYSET, pastikan prasyarat berikut telah terpenuhi:

    • Set kunci terbungkus dihasilkan menggunakan fungsi NEW_WRAPPED_KEYSET. Untuk informasi lebih lanjut, lihat NEW_WRAPPED_KEYSET.

    • Kunci KMS dibuat dan ARN kunci yang ditentukan oleh kms_cmk_arn diperoleh. Peran RAM diberi izin untuk menggunakan kunci baru.

  • Parameter

    • kms_cmk_arn: wajib. Parameter ini menentukan ARN dari kunci master pelanggan (CMK) KMS yang ingin Anda gunakan untuk mengenkripsi ulang set kunci terbungkus. Nilai parameter ini dalam format 'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId menentukan ID wilayah, UserId menentukan ID pengguna, dan CmkId menentukan ID CMK. Anda dapat memperoleh ARN dari halaman Detail Kunci di Konsol KMS.

    • role_arn: wajib. Parameter ini menentukan ARN dari peran RAM yang memiliki izin pada kunci KMS lama dan baru. Nilai parameter ini dalam format 'acs:ram:${<userAID>}:role/${<roleName>}'. userAID menentukan ID pengguna, dan roleName menentukan nama peran.

    • wrapped_keyset: wajib. Parameter ini menentukan set kunci terbungkus yang ingin Anda enkripsi ulang.

    • key_type: wajib. Parameter ini menentukan tipe algoritma kunci dalam set kunci yang baru dihasilkan. Nilai valid: AES-GCM-256, AES-SIV-CMAC-128, dan AES-SIV-CMAC-256.

    • description: opsional. Parameter ini memberikan deskripsi kunci.

    • role_chain: opsional. Parameter ini menentukan rantai peran untuk otorisasi pengguna. Nilai parameter ini dalam format 'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Anda dapat menggunakan rantai peran untuk memanggil set kunci terbungkus di seluruh akun Alibaba Cloud.

  • Nilai Kembali

    Set kunci terbungkus tipe BINARY dikembalikan. Anda dapat menggunakan fungsi HEX untuk mengonversi set kunci terbungkus tipe BINARY menjadi set kunci tipe STRING sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang fungsi HEX, lihat HEX.

  • Contoh

    Catatan

    Kode sampel berikut berisi variabel. Anda harus menjalankan kode dalam mode skrip atau mengganti variabel dengan nilai sebenarnya dalam pernyataan SQL.

    • Mengenkripsi ulang set kunci terbungkus.

      @kms_resource_keyId := 'acs:kms:${<RegionId>}:${<UserId>}:key/${<CmkId>}';
      @role_arn := 'acs:ram:${<UserId>}:role/${<roleName>}';
      @origin_key := unhex('<wrapped_keyset>');
      select hex(ROTATE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, 'AES-GCM-256', 'hello world'));
    • Mengenkripsi ulang set kunci terbungkus, dan mengizinkan peran lain untuk memanggil set kunci terbungkus.

      @kms_resource_keyId := 'acs:kms:${<RegionId>}:${<UserId>}:key/${<CmkId>}';
      @role_arn := 'acs:ram:${<UserId>}:role/${<roleName>}';
      @origin_key := unhex('<wrapped_keyset>');
      @role_chain := 'acs:ram:${<UserAId>}:role/${<roleName2>},acs:ram:${<UserBId>}:role/${<roleName3>}';
      select hex(ROTATE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, 'AES-GCM-256', 'hello world', @role_chain));

USE_WRAPPED_KEYSET

  • Sintaksis

    binary USE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset> [,string <role_chain>])
  • Deskripsi

    Anda dapat menggunakan MaxCompute dengan KMS untuk mengelola kunci. Anda dapat menghasilkan wrapped keyset dengan mengenkripsi set kunci yang ada berdasarkan kunci KMS. Fungsi USE_WRAPPED_KEYSET mengonversi wrapped keyset yang dihasilkan menggunakan fungsi NEW_WRAPPED_KEYSET menjadi set kunci dasar. Set kunci dasar digunakan sebagai parameter dalam fungsi enkripsi atau dekripsi untuk mengenkripsi atau mendekripsi data. Anda juga dapat menggunakan fungsi USE_WRAPPED_KEYSET untuk memperoleh informasi tentang wrapped keyset dan menyimpan informasi tersebut untuk pemeliharaan selanjutnya.

    Sebelum Anda menggunakan fungsi USE_WRAPPED_KEYSET, pastikan prasyarat berikut terpenuhi:

    • Wrapped keyset dihasilkan menggunakan fungsi NEW_WRAPPED_KEYSET. Untuk informasi lebih lanjut, lihat NEW_WRAPPED_KEYSET.

    • Kunci KMS dibuat dan Alibaba Cloud Resource Name (ARN) dari kunci diperoleh. ARN kunci ditentukan oleh kms_cmk_arn. Peran RAM diberikan izin untuk menggunakan kunci baru.

  • Parameter

    • kms_cmk_arn: wajib. Parameter ini menentukan ARN KMS customer master key (CMK) dari set kunci yang ingin Anda enkripsi. Nilai parameter ini dalam format 'acs:kms:<RegionId>:<UserId>:key/<CmkId>'. RegionId menentukan ID wilayah, UserId menentukan ID pengguna, dan CmkId menentukan ID CMK. Anda dapat memperoleh ARN dari halaman Detail Kunci di Konsol KMS.

    • role_arn: wajib. Parameter ini menentukan ARN dari peran RAM yang memiliki izin pada KMS. Peran ini harus diasumsikan oleh MaxCompute. Nilai parameter ini dalam format 'acs:ram:${<userAID>}:role/${<roleName>}'. userAID menentukan ID pengguna, dan roleName menentukan nama peran.

    • wrapped_keyset: wajib. Parameter ini menentukan wrapped keyset yang ada.

    • role_chain: opsional. Parameter ini menentukan rantai peran untuk otorisasi pengguna. Nilai parameter ini dalam format 'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Anda dapat menggunakan rantai peran untuk memanggil wrapped keyset di seluruh akun Alibaba Cloud.

  • Nilai Pengembalian

    Set kunci yang telah disensitifkan dengan tipe STRUCT dikembalikan. Anda dapat menggunakan fungsi get_json_object untuk memperoleh bidang terkait set kunci sesuai kebutuhan bisnis Anda.

  • Contoh

    Catatan

    Kode sampel berikut berisi variabel. Anda harus menjalankan kode dalam mode skrip atau mengganti variabel dengan nilai sebenarnya dalam pernyataan SQL.

    Memperoleh informasi algoritma kunci dari wrapped keyset.

    @kms_resource_keyId := 'acs:kms:${<RegionId>}:${<UserId>}:key/${<CmkId>}';
    @role_arn := 'acs:ram:${<UserId>}:role/${<roleName>}';
    @origin_key := unhex('<wrapped_keyset>');
    @role_chain := 'acs:ram:${<UserAId>}:role/${<roleName2>},acs:ram:${<UserBId>}:role/${<roleName3>}';
    @use_keyset_new := USE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, @role_chain);
    
    select get_json_object(get_json_object(use_keyset_new.wrapped_keyset_info,'$.masked_keyset'), '$.key[0].key_meta_data.type');

    Hasil berikut dikembalikan:

    +-----+
    | _c0 |
    +-----+
    | AES-GCM-256 |
    +-----+

ENHANCED_SYM_ENCRYPT

  • Sintaksis

    binary ENHANCED_SYM_ENCRYPT(binary <keyset> , string|binary <plaintext> [,string <additional_data>])
  • Deskripsi

    MaxCompute memungkinkan Anda menggunakan fungsi ENHANCED_SYM_ENCRYPT untuk mengenkripsi data dengan menggunakan keyset dasar atau keyset terbungkus yang ditentukan. Anda dapat membuat keyset terbungkus dengan mengenkripsi keyset yang ada berdasarkan kunci dari Key Management Service (KMS). Dibandingkan dengan keyset dasar, Anda dapat menggunakan keyset terbungkus dengan KMS untuk mengelola kunci secara lebih aman.

    Sebelum Anda menggunakan fungsi ENHANCED_SYM_ENCRYPT, pastikan prasyarat berikut telah dipenuhi:

    • Keyset dasar atau keyset terbungkus dihasilkan dengan menggunakan fungsi NEW_KEYSET atau NEW_WRAPPED_KEYSET. Untuk informasi lebih lanjut, lihat NEW_KEYSET atau NEW_WRAPPED_KEYSET.

    • Keyset dasar diperoleh dari keyset terbungkus dengan menggunakan fungsi USE_WRAPPED_KEYSET. Prasyarat ini harus dipenuhi jika Anda ingin menggunakan keyset terbungkus untuk mengenkripsi data. Keyset dasar digunakan sebagai parameter dalam fungsi ENHANCED_SYM_ENCRYPT untuk mengenkripsi data. Selain itu, akun Anda diberi peran yang memiliki izin untuk menggunakan keyset terbungkus.

  • Parameter

    • keyset: wajib. Parameter ini menentukan keyset dasar tipe BINARY atau keyset terbungkus tipe STRUCT.

    • plaintext: wajib. Parameter ini menentukan plaintext tipe STRING atau BINARY yang ingin Anda enkripsi.

    • additional_data: opsional. Parameter ini menentukan informasi verifikasi yang didukung oleh algoritma. Informasi verifikasi adalah tipe STRING.

  • Nilai Pengembalian

    Teks sandi tipe BINARY dikembalikan.

  • Data Sampel

    -- Buat tabel.
    create table mf_user_info(id bigint,
                              name string,
                              gender string,
                              id_card_no string,
                              tel string);
    -- Masukkan data ke dalam tabel.
    insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"),
                                           (2,"allen","male","0011","13900001111"),
                                         (3,"kate","female","0111","13900002222"),
                                         (4,"annie","female","1111","13900003333");
    -- Query data dari tabel.
    select * from mf_user_info;
    +------------+------+--------+------------+------------+
    | id         | name | gender | id_card_no |    tel     |
    +------------+------+--------+------------+------------+
    | 1          | bob  | male   | 0001       | 13900001234|
    | 2          | allen| male   | 0011       | 13900001111|
    | 3          | kate | female | 0111       | 13900002222|
    | 4          | annie| female | 1111       | 13900003333|
    +------------+------+--------+------------+------------+
  • Contoh

    • Enkripsi kolom id_card_no di tabel mf_user_info menggunakan keyset dasar.

      insert overwrite table mf_user_info
      select id,
          name,
          gender,
             base64(ENHANCED_SYM_ENCRYPT(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), id_card_no ))as id_card_no,
            tel
      from mf_user_info;

      Pernyataan sampel berikut menampilkan hasil enkripsi:

      select * from mf_user_info;
      
      -- Hasil berikut dikembalikan:
      +------------+------+--------+------------+-----+
      | id         | name | gender | id_card_no | tel |
      +------------+------+--------+------------+-----+
      | 1          | bob  | male   | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQAwkVhYOocPQll8LmdzSwkRf3v2iTow+TAmnQ== | 13900001234 |
      | 2          | allen | male   | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQBgj1hYOodIPdnyZ0ijZ9RmT+50xbxXh5cwcg== | 13900001111 |
      | 3          | kate | female | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQCwp1hYOoentQgkfUqctPbmX96k9eD018xg9Q== | 13900002222 |
      | 4          | annie | female | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQDQqFhYOodexhRmfh6VieEwePZscC4nUVTJXQ== | 13900003333 |
      +------------+------+--------+------------+-----+
    • Kolom tel di tabel mf_user_info dienkripsi menggunakan keyset yang dibungkus.

      1. Hasilkan keyset terbungkus dan tulis ke tabel.

        -- Buat tabel.
        create table mf_keyset_kms (id string,ks binary);
        -- Buat keyset terbungkus dan tulis ke tabel.
        insert into mf_keyset_kms 
              select '1',
                     NEW_WRAPPED_KEYSET(
                        'acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 
                        'acs:ram::1**************7:role/kms', 
                        'AES-GCM-256', 
                       'description');
        -- Query data dari tabel.
        select id,hex(ks) from mf_keyset_kms;
        
        -- Hasil berikut dikembalikan:
        +----+-----+
        | id | _c1 |
        +----+-----+
        | 1  | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D |
        +----+-----+
      2. Enkripsi kolom tel menggunakan keyset terbungkus.

        select /*+ MAPJOIN(a) */ 
               id,
               name,
        	   gender,
        	   id_card_no, 
               ENHANCED_SYM_ENCRYPT(
                   USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 
                                      'acs:ram::1**************7:role/kms', 
                                      unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D')
                                     ),
                   tel
               ) as tel 
         FROM mf_user_info;

        Hasil berikut dikembalikan:

        +------------+------+--------+------------+------+
        | id         | name | gender | id_card_no | tel  |
        +------------+------+--------+------------+------+
        | 1          | bob  | male   | 0001       | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=90=86=05=94z;=18=A6j=1CN=E5=9F=AC)=8D=D6=D8=0D=A2Y{kq=EE=F4~=C4=A7=9BS=A1w |
        | 2          | allen | male   | 0011       | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=20=AA=05=94z;=85=D8=08a=A2]=02d=20=B1=C3=AE=AF=1C{=EB=EA=C4=81=B5A=15=1BR=F7g=9B |
        | 3          | kate | female | 0111       | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=20=B6=05=94z;[C=12=81=8B<=C1=9D=E2=CF=CE=BC=AE=A7=84=0F[=7CI=B9=B7=9D=DD=89=A8=FD! |
        | 4          | annie | female | 1111       | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=00=A2=05=94z;E=03A=BC=7C=88=CFJ=14=B9=BD=A1=BF=ED=20=11=A3=A6/+%=0Fe=DD=C7=C8=0A |
        +------------+------+--------+------------+------+

ENHANCED_SYM_DECRYPT

  • Sintaksis

    binary ENHANCED_SYM_DECRYPT(binary <keyset> , binary <ciphertext> [,string <additional_data>])
  • Deskripsi

    MaxCompute memungkinkan Anda menggunakan fungsi ENHANCED_SYM_DECRYPT untuk mendekripsi data dengan menggunakan Set kunci dasar atau Set kunci terbungkus yang ditentukan. Set kunci dasar atau Set kunci terbungkus yang digunakan untuk dekripsi data harus sama dengan yang digunakan untuk enkripsi data. Anda dapat membuat Set kunci terbungkus dengan mengenkripsi Set kunci yang ada berdasarkan kunci dari Key Management Service (KMS). Dibandingkan dengan Set kunci dasar, Anda dapat menggunakan Set kunci terbungkus dengan KMS untuk mengelola kunci secara lebih aman.

    Sebelum Anda menggunakan fungsi ENHANCED_SYM_DECRYPT, pastikan prasyarat berikut telah terpenuhi:

    • Set kunci dasar atau Set kunci terbungkus dihasilkan dengan menggunakan fungsi NEW_KEYSET atau NEW_WRAPPED_KEYSET. Untuk informasi lebih lanjut, lihat NEW_KEYSET atau NEW_WRAPPED_KEYSET.

    • Akun Anda diberi peran yang memiliki izin untuk menggunakan Set kunci terbungkus. Prasyarat ini harus dipenuhi jika Anda ingin mendekripsi data dengan menggunakan Set kunci terbungkus.

  • Parameter

    • keyset: wajib. Parameter ini menentukan Set kunci dasar tipe BINARY atau Set kunci terbungkus tipe STRUCT.

      Penting

      Set kunci dasar atau Set kunci terbungkus yang digunakan untuk dekripsi data harus sama dengan yang digunakan untuk enkripsi data.

    • ciphertext: wajib. Parameter ini menentukan ciphertext tipe BINARY yang dienkripsi dengan menggunakan Set kunci yang ditentukan.

    • additional_data: opsional. Parameter ini menentukan informasi verifikasi yang didukung oleh algoritma. Informasi verifikasi adalah tipe STRING.

  • Nilai Pengembalian

    Teks biasa tipe BINARY dikembalikan.

  • Data Sampel

    -- Buat tabel.
    create table mf_user_info(id bigint,
                              name string,
                              gender string,
                              id_card_no string,
                              tel string);
    -- Masukkan data ke dalam tabel.
    insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"),
                                           (2,"allen","male","0011","13900001111"),
                                         (3,"kate","female","0111","13900002222"),
                                         (4,"annie","female","1111","13900003333");
    -- Query data dari tabel.
    select * from mf_user_info;
    +------------+------+--------+------------+------------+
    | id         | name | gender | id_card_no |    tel     |
    +------------+------+--------+------------+------------+
    | 1          | bob  | male   | 0001       | 13900001234|
    | 2          | allen| male   | 0011       | 13900001111|
    | 3          | kate | female | 0111       | 13900002222|
    | 4          | annie| female | 1111       | 13900003333|
    +------------+------+--------+------------+------------+
  • Contoh

    • Dekripsi kolom id_card_no terenkripsi dalam tabel mf_user_info dengan menggunakan Set kunci dasar.

      Penting

      Sebelum Anda mendekripsi data, pastikan bahwa data telah dienkripsi, dan Set kunci dasar atau Set kunci terbungkus yang digunakan untuk dekripsi data sama dengan yang digunakan untuk enkripsi data. Untuk informasi lebih lanjut tentang contoh operasi enkripsi, lihat ENHANCED_SYM_ENCRYPT.

      insert overwrite table mf_user_info 
      select id,
          name,
          gender,
             ENHANCED_SYM_DECRYPT(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), unbase64(id_card_no) )as id_card_no,
            tel
      from mf_user_info;

      Pernyataan sampel berikut menanyakan hasil dekripsi:

      select * from mf_user_info;
      
      -- Hasil berikut dikembalikan:
      +------------+------+--------+------------+------------+
      | id         | name | gender | id_card_no |    tel     |
      +------------+------+--------+------------+------------+
      | 1          | bob  | male   | 0001       | 13900001234|
      | 2          | allen| male   | 0011       | 13900001111|
      | 3          | kate | female | 0111       | 13900002222|
      | 4          | annie| female | 1111       | 13900003333|
      +------------+------+--------+------------+------------+
    • Dekripsi kolom tel terenkripsi dalam tabel mf_user_info dengan menggunakan Set kunci terbungkus.

       select /*+ MAPJOIN(a) */ 
             id,
             name,
      	   gender,
      	   id_card_no, 
             ENHANCED_SYM_DECRYPT (
               USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 
                                    'acs:ram::1**************7:role/kms', 
                                    unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D')
                                   ),
             	 ENHANCED_SYM_ENCRYPT(
                 USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 
                                    'acs:ram::1**************7:role/kms', 
                                    unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D')
                                   ),
                 tel
             ),
             ''
            )
             as tel 
       FROM mf_user_info;

      Hasil berikut dikembalikan:

      +------------+------+--------+------------+------+
      | id         | name | gender | id_card_no | tel  |
      +------------+------+--------+------------+------+
      | 1          | bob  | male   | 0001       | 13900001234 |
      | 2          | allen | male   | 0011       | 13900001111 |
      | 3          | kate | female | 0111       | 13900002222 |
      | 4          | annie | female | 1111       | 13900003333 |
      +------------+------+--------+------------+------+

Referensi