All Products
Search
Document Center

MaxCompute:Dynamic data masking

Last Updated:May 28, 2026

Anda dapat mengaktifkan dynamic data masking di MaxCompute untuk menampilkan data sensitif kepada pengguna dengan informasi penting yang disembunyikan. Fitur ini secara langsung menyembunyikan atau mengganti data sensitif saat diakses, sehingga mencegah paparan data tersebut.

Pendahuluan

MaxCompute menyediakan dynamic data masking untuk melindungi data sensitif, seperti informasi identitas pribadi (PII), dalam skenario seperti pengembangan dan pengujian bisnis, berbagi data, serta O&M. Berbeda dengan kontrol akses berbasis izin tingkat kolom yang mengharuskan pengguna memodifikasi kueri mereka untuk mengecualikan kolom yang tidak dapat diakses, dynamic data masking bekerja secara otomatis tanpa perubahan pada kueri yang sudah ada. Saat pengguna mengakses data, sistem secara otomatis menerapkan kebijakan penyembunyian yang sesuai berdasarkan pengguna dan perannya. Hal ini memastikan bahwa data disembunyikan selama kueri, unduhan, join, dan komputasi user-defined function (UDF), sehingga mengurangi risiko paparan data sensitif.

Kebijakan penyembunyian mendukung berbagai metode, termasuk penyembunyian, penghashan, penggantian karakter, pembulatan, dan pemotongan tanggal, untuk berbagai jenis data seperti nomor identitas, nomor kartu bank, alamat, dan nomor telepon. MaxCompute menerapkan penyamaran data pada tahap paling awal pengambilan data dari penyimpanan, sehingga menjamin kinerja dan keamanan tinggi.

image

Cakupan

  • Wilayah yang didukung

    Fitur ini berada dalam pratinjau publik dan hanya tersedia di wilayah berikut: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Ulanqab), Tiongkok (Shenzhen), Tiongkok (Chengdu), Tiongkok (Hong Kong), Jepang (Tokyo), Singapura, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Jerman (Frankfurt), AS (Silicon Valley), dan AS (Virginia).

  • Versi driver yang didukung

    Metode koneksi

    Versi driver

    Dukungan penyembunyian

    Java SDK

    0.48.0-public atau yang lebih baru

    Didukung

    odpscmd

    0.47.1 atau yang lebih baru

    Didukung

    JDBC

    3.4.3 atau yang lebih baru

    Didukung

    MaxFrame

    Semua versi

    Didukung

    PyODPS

    Semua versi

    Didukung

    Go SDK

    Semua versi

    Didukung

  • Tabel internal dan eksternal

    • Kebijakan penyamaran data didukung untuk tabel internal dan eksternal MaxCompute.

    • Dynamic data masking dan izin tingkat baris bersifat saling eksklusif. Anda tidak dapat mengonfigurasi izin tingkat baris untuk tabel yang sudah memiliki kebijakan penyamaran, dan sebaliknya.

    • Saat menerapkan kebijakan penyamaran pada karakter Tionghoa, character encoding harus UTF-8.

  • Tampilan

    • Tampilan standar mendukung kebijakan penyamaran data. Kebijakan pada tampilan disinkronkan dengan kebijakan pada tabel sumber. Saat kebijakan penyamaran diterapkan atau dihapus dari tabel sumber, perubahan tersebut langsung berlaku pada tampilan.

    • Tampilan yang di-materialisasi mewarisi kebijakan penyamaran dari tabel sumbernya pada saat pembuatan. Perubahan selanjutnya pada kebijakan tabel sumber tidak memengaruhi tampilan yang di-materialisasi.

  • Kebijakan penyamaran

    Jika beberapa kebijakan penyamaran berlaku untuk akses pengguna, kebijakan dengan prioritas tertinggi yang akan diterapkan. Untuk informasi lebih lanjut, lihat Prioritas kebijakan penyamaran yang telah ditentukan.

Cara kerja

Pemilik Proyek atau pengguna dengan peran Super_Administrator atau Admin dapat mengelola kebijakan penyamaran. Saat pengguna mengakses tabel yang berisi data sensitif, sistem memeriksa kebijakan penyamaran yang terkait dengan pengguna atau perannya dan mengembalikan data yang telah disembunyikan atau teks biasa sesuai ketentuan.

image

Perintah

Aktifkan atau nonaktifkan penyamaran data

Properti odps.data.masking.policy.enable adalah pengaturan tingkat Proyek yang mengontrol fitur dynamic data masking. Hanya Pemilik Proyek atau pengguna dengan peran Super_Administrator atau Admin tingkat Proyek yang dapat mengonfigurasi properti ini. Untuk informasi lebih lanjut, lihat Tetapkan peran manajemen bawaan kepada pengguna.

Setelah Anda mengaktifkan atau menonaktifkan penyamaran data, perubahan tersebut membutuhkan waktu sekitar 15 menit untuk berlaku karena latensi refresh cache.

  • Aktifkan dynamic data masking untuk Proyek.

    setproject odps.data.masking.policy.enable=true;
  • Nonaktifkan dynamic data masking untuk Proyek.

    setproject odps.data.masking.policy.enable=false;

Buat dan hapus kebijakan penyamaran

Satu Proyek dapat memiliki hingga 1.000 kebijakan penyamaran.

  • Sintaks

    • Buat kebijakan penyamaran.

      CREATE DATA MASKING POLICY [IF NOT EXISTS] <policy_name> 
      TO { USER <user_list> | ROLE <role_list> | default } 
      USING <Predefined Masking Policy>;
    • Hapus kebijakan penyamaran.

      DROP DATA MASKING POLICY <policy_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    policy_name

    Ya

    Nama kebijakan penyamaran. Nama kebijakan tidak peka huruf besar/kecil dan hanya boleh berisi huruf, angka, dan garis bawah (_). Nama harus dimulai dengan huruf dan panjang maksimal 128 byte.

    USER | ROLE | default

    Ya

    Cakupan kebijakan. Anda harus memilih salah satu opsi berikut:

    • USER: Menerapkan kebijakan ke satu atau beberapa pengguna. Untuk <user_list>, tentukan username target. Anda dapat menjalankan perintah list users; di MaxCompute untuk melihat informasi pengguna.

    • ROLE: Menerapkan kebijakan ke satu atau beberapa peran. Untuk <role_list>, tentukan nama peran target. Anda dapat menjalankan perintah list roles; di MaxCompute untuk melihat informasi peran.

    • default: Menerapkan kebijakan default. Jika tidak ada kebijakan penyamaran spesifik yang cocok dengan pengguna atau peran saat mengakses kolom sensitif, kebijakan default akan diterapkan.

    Predefined Masking Policy

    Ya

    Kebijakan penyamaran yang telah ditentukan. Untuk informasi lebih lanjut, lihat Kebijakan penyamaran yang telah ditentukan.

  • Contoh

    • Contoh 1: Buat kebijakan penghashan MD5 untuk pengguna userA, userB, dan userC.

      CREATE data masking policy IF NOT EXISTS masking_test_001
      TO USER (userA, userB, userC)
      USING MASKED_MD5(0);
    • Contoh 2: Buat kebijakan penghashan MD5 untuk peran pengembangan dan penerapan proyek.

      CREATE data masking policy IF NOT EXISTS masking_test_001
      TO ROLE (role_project_deploy, role_project_dev)
      USING MASKED_MD5(0);

Terapkan kebijakan penyamaran

  • Sintaks

    --Terapkan kebijakan penyamaran ke kolom tabel.
    APPLY DATA MASKING POLICY <policy_name> BIND TO TABLE <table_name> COLUMN <column_name>;
    
    --Lepaskan kebijakan penyamaran dari kolom tabel.
    APPLY DATA MASKING POLICY <policy_name> UNBIND FROM TABLE <table_name> COLUMN <column_name>;
    
    --Lepaskan semua kebijakan penyamaran dari kolom tabel.
    APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name> COLUMN <column_name>;
    
    --Lepaskan semua kebijakan penyamaran dari tabel.
    APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    policy_name

    Ya

    Nama kebijakan penyamaran.

    table_name

    Ya

    Nama tabel yang berisi data sensitif.

    column_name

    Ya

    Nama kolom yang berisi data sensitif.

Lihat kebijakan penyamaran

  • Sintaks

    --Lihat detail kebijakan penyamaran.
    DESC DATA MASKING POLICY <policy_name>;
    
    --Lihat informasi tabel lengkap, termasuk kebijakan penyamaran yang diterapkan.
    DESC EXTENDED <table_name>;
    
    --Tampilkan nama semua kebijakan penyamaran di Proyek saat ini.
    LIST DATA MASKING POLICY;
    
    --Tampilkan nama kebijakan penyamaran yang terikat ke pengguna tertentu.
    LIST DATA MASKING POLICY TO USER <user_name>;
    
    --Tampilkan nama kebijakan penyamaran yang terikat ke peran tertentu.
    LIST DATA MASKING POLICY TO ROLE <role_name>;
    
    --Tampilkan nama semua kebijakan penyamaran yang terikat ke tabel tertentu.
    LIST DATA MASKING POLICY ON <table_name>;
    
    --Tampilkan nama semua kebijakan penyamaran yang terikat ke kolom tertentu dari tabel.
    LIST DATA MASKING POLICY ON <table_name> TO COLUMN <column_name>;
  • Parameter

    Parameter

    Wajib

    Deskripsi

    policy_name

    Ya

    Nama kebijakan penyamaran.

    table_name

    Ya

    Nama tabel yang berisi data sensitif.

    column_name

    Ya

    Nama kolom yang berisi data sensitif.

    user_name

    Ya

    Username.

    role_name

    Ya

    Nama peran.

Kebijakan penyamaran yang telah ditentukan

Kebijakan penyamaran yang telah ditentukan mencakup metode seperti penyamaran, penghashan, penggantian karakter, dan pembulatan. Anda dapat memilih kebijakan yang sesuai berdasarkan tipe data dan kebutuhan perlindungan Anda.

Kategori

Kebijakan

Sintaks

Deskripsi

Umum

Tanpa penyamaran

UNMASKED

Mengembalikan data dalam teks biasa.

Tipe data yang didukung: Semua.

Nullify

MASKED_NULLIFY

Mengganti data dengan NULL.

  • Tipe data yang didukung: Semua.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +-----------------+
    | col_string      |
    +-----------------+
    | Michael Johnson |
    +-----------------+
    
    -- Kebijakan penyamaran
    MASKED_NULLIFY
    
    -- Setelah penyamaran
    +------------+
    | col_string | 
    +------------+
    | NULL       | 
    +------------+

Nilai default

MASKED_DV

Mengganti nilai dengan nilai default dari tipe data yang sesuai. Untuk informasi lebih lanjut, lihat Nilai default untuk kebijakan penyamaran MASKED_DV.

  • Tipe data yang didukung: Semua.

  • Contoh

    -- Sebelum penyamaran (tipe data: TIMESTAMP)
    +---------------------+
    | col_timestamp       |
    +---------------------+
    | 2024-05-01 11:12:13 |
    +---------------------+
    -- Kebijakan penyamaran
    MASKED_DV
    -- Setelah penyamaran (Zona waktu default Proyek adalah China Standard Time, yaitu UTC+8.)
    +---------------------+
    | col_timestamp       | 
    +---------------------+
    | 1970-01-01 08:00:00 | 
    +---------------------+

Pemotongan tanggal

MASKED_DATE_YEAR

Hanya menyimpan bagian tahun dari nilai waktu dan mengatur ulang bulan, hari, serta waktu ke awal tahun tersebut (1 Januari, 00:00:00 UTC).

  • Tipe data yang didukung: DATE, DATETIME, TIMESTAMP_NTZ, dan TIMESTAMP.

  • Contoh

    -- Sebelum penyamaran (tipe data: TIMESTAMP)
    +---------------------+
    | col_timestamp       |
    +---------------------+
    | 2024-05-01 11:12:13 |
    +---------------------+
    -- Kebijakan penyamaran
    MASKED_DATE_YEAR
    -- Setelah penyamaran (Zona waktu default Proyek adalah China Standard Time, yaitu UTC+8.)
    +---------------------+
    | col_timestamp       | 
    +---------------------+
    | 2024-01-01 08:00:00 | 
    +---------------------+

Pembulatan

MASKED_POINT_RESERVE(<num>)

Membulatkan nilai ke jumlah tempat desimal tertentu.

  • num: Jumlah tempat desimal yang dipertahankan. Nilai harus berupa bilangan bulat dalam rentang [0, 5].

  • Tipe data yang didukung: DECIMAL, FLOAT, dan DOUBLE.

  • Contoh

    -- Sebelum penyamaran (tipe data: FLOAT)
    +-----------+
    | col_float |
    +-----------+
    | 1.12345   |
    +-----------+
    -- Kebijakan penyamaran: pertahankan 2 tempat desimal.
    MASKED_POINT_RESERVE(2)
    -- Setelah penyamaran
    +-----------+
    | col_float | 
    +-----------+
    | 1.12      | 
    +-----------+

Penyamaran

Mask start and end

MASKED_STRING_MASKED_BA(<before>, <after>)

Mengganti awal dan akhir string dengan tanda bintang (*), membiarkan bagian tengah tetap dalam teks biasa.

  • before: Jumlah karakter yang diganti dengan * di awal string. Nilai harus berupa bilangan bulat yang lebih besar atau sama dengan 0. Jika parameter ini diatur ke 0, awal string tidak disembunyikan.

  • after: Akhir string diganti dengan *. Parameter after menentukan jumlah karakter yang disembunyikan dan harus berupa bilangan bulat yang lebih besar atau sama dengan 0.

  • Tipe data yang didukung: STRING, VARCHAR, CHAR, dan BINARY.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +-----------------+
    | col_string      |
    +-----------------+
    | Michael Johnson |
    +-----------------+
    -- Kebijakan penyamaran: ganti 3 karakter pertama dan 3 karakter terakhir dengan tanda bintang.
    MASKED_STRING_MASKED_BA(3, 3)
    -- Setelah penyamaran
    +-----------------+
    | col_string      | 
    +-----------------+
    | ***hael John*** | 
    +-----------------+

Mask middle

MASKED_STRING_UNMASKED_BA(<before>, <after>)

Menampilkan awal dan akhir string dalam teks biasa dan menyembunyikan bagian tengah dengan tanda bintang (*).

  • before: Jumlah karakter yang ditampilkan dalam teks biasa di awal string. Harus berupa bilangan bulat 0 atau lebih.

  • after: Jumlah karakter yang ditampilkan dalam teks biasa di akhir string. Harus berupa bilangan bulat 0 atau lebih.

  • Tipe data yang didukung: STRING, VARCHAR, CHAR, dan BINARY.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +-----------------+
    | col_string      |
    +-----------------+
    | Michael Johnson |
    +-----------------+
    -- Kebijakan penyamaran: tampilkan karakter pertama dan terakhir dalam teks biasa.
    MASKED_STRING_UNMASKED_BA(1, 1)
    -- Setelah penyamaran
    +-----------------+
    | col_string      | 
    +-----------------+
    | M*************n | 
    +-----------------+

Hashing

SHA256 hashing

MASKED_SHA256(<salt>)

Menyembunyikan data menggunakan algoritma penghashan SHA256.

  • salt: Salt untuk penghashan. Nilai harus berupa bilangan bulat dari 0 hingga 9.

  • Tipe data yang didukung: STRING, VARCHAR, CHAR, dan BINARY.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +---------------------+
    | col_string          | 
    +---------------------+
    | 4562-1234-5678-9123 | 
    +---------------------+
    -- Kebijakan penyamaran
    MASKED_SHA256(0)
    -- Setelah penyamaran
    +----------------------------------------------+
    | col_string                                   | 
    +----------------------------------------------+
    | zwGMB1aCF1t705EfcwdDorql4MZb46XBqQJw/2RVx8U= | 
    +----------------------------------------------+

SHA512 hashing

MASKED_SHA512(<salt>)

Menyembunyikan data menggunakan algoritma penghashan SHA512.

  • salt: Salt untuk penghashan. Nilai harus berupa bilangan bulat dari 0 hingga 9.

  • Tipe data yang didukung: STRING, VARCHAR, CHAR, dan BINARY.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +---------------------+
    | col_string          | 
    +---------------------+
    | 4562-1234-5678-9123 | 
    +---------------------+
    -- Kebijakan penyamaran
    MASKED_SHA512(0)
    -- Setelah penyamaran
    +------------------------------------------------------------------------------------------+
    | col_string                                                                               | 
    +------------------------------------------------------------------------------------------+
    | 3PPywfEIp08WuTUI8FZCCfdVuRu68wZTVwWWVAf4pboACUnH6w9kFMLpl2AARaGW/mvWvg26p0EIqmE0fAEiuA== | 
    +------------------------------------------------------------------------------------------+

MD5 hashing

MASKED_MD5(<salt>)

Menyembunyikan data menggunakan algoritma penghashan MD5.

  • salt: Salt untuk penghashan. Nilai harus berupa bilangan bulat dari 0 hingga 9.

  • Tipe data yang didukung: STRING, VARCHAR, CHAR, dan BINARY.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +---------------------+
    | col_string          | 
    +---------------------+
    | 4562-1234-5678-9123 | 
    +---------------------+
    -- Kebijakan penyamaran
    MASKED_MD5(0)
    -- Setelah penyamaran
    +--------------------------+
    | col_string               | 
    +--------------------------+
    | mK/o08tew5g7S3XV/BkFfw== | 
    +--------------------------+

SM3 hashing

MASKED_SM3(<salt>)

Menyembunyikan data menggunakan algoritma penghashan SM3.

  • salt: Salt untuk penghashan. Nilai harus berupa bilangan bulat dari 0 hingga 9.

  • Tipe data yang didukung: STRING, VARCHAR, CHAR, dan BINARY.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +---------------------+
    | col_string          | 
    +---------------------+
    | 4562-1234-5678-9123 | 
    +---------------------+
    -- Kebijakan penyamaran
    MASKED_SM3(0)
    -- Setelah penyamaran
    +----------------------------------------------+
    | col_string                                   | 
    +----------------------------------------------+
    | Q2TfwUh4B8QQH8jPL6DfdoGysx/CXBxn2T14dDwQtQw= | 
    +----------------------------------------------+

Penggantian karakter

Random replacement

MASKED_REPLACE_RANDOM(<position>)

Mengganti data dengan karakter acak yang terdiri dari angka dan huruf. Panjang string tetap tidak berubah.

  • position: Bilangan bulat yang menentukan posisi karakter yang diganti.

    • position = 0: Seluruh string diganti dengan karakter acak.

    • position > 0: Karakter 'position' pertama diganti dengan karakter acak.

    • position < 0: N karakter terakhir diganti dengan karakter acak, di mana N adalah nilai absolut dari 'position'.

  • Tipe data yang didukung: STRING, VARCHAR, CHAR, dan BINARY.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +-----------------+
    | col_string      |
    +-----------------+
    | Michael Johnson |
    +-----------------+
    -- Kebijakan penyamaran: ganti tujuh karakter pertama dengan karakter acak.
    MASKED_REPLACE_RANDOM(7)
    -- Setelah penyamaran
    +-----------------+
    | col_string      | 
    +-----------------+
    | 4DlJQxi Johnson | 
    +-----------------+

Random replacement at start and end

MASKED_REPLACE_RANDOM_BA(<before>, <after>)

Mengganti awal dan akhir string dengan karakter alfanumerik acak. Panjang string tetap tidak berubah.

  • before: Jumlah karakter yang diganti di awal string. Harus berupa bilangan bulat 0 atau lebih. Jika nilai ini 0, tidak ada karakter yang diganti di awal.

  • after: Jumlah karakter yang diganti di akhir string. Harus berupa bilangan bulat 0 atau lebih.

  • Tipe data yang didukung: STRING, VARCHAR, CHAR, dan BINARY.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +-----------------+
    | col_string      |
    +-----------------+
    | Michael Johnson |
    +-----------------+
    -- Kebijakan penyamaran: ganti 4 karakter pertama dan 4 karakter terakhir dengan karakter acak.
    MASKED_REPLACE_RANDOM_BA(4, 4)
    -- Setelah penyamaran
    +-----------------+
    | col_string      | 
    +-----------------+
    | r0xEael JohnWNr | 
    +-----------------+

Fixed replacement

MASKED_REPLACE_FIXED(<position>, <fixed_string>)

  • Mengganti data dengan string tetap.

  • position: Bilangan bulat yang menentukan posisi karakter yang diganti.

    • position = 0: Seluruh string diganti dengan fixed_string.

    • position > 0: Karakter 'position' pertama diganti dengan fixed_string.

    • position < 0: N karakter terakhir diganti dengan fixed_string, di mana N adalah nilai absolut dari 'position'.

  • fixed_string: String pengganti. Panjangnya maksimal 100 karakter dan tidak boleh mengandung spasi.

  • Tipe data yang didukung: STRING, VARCHAR, CHAR, dan BINARY.

  • Contoh

    -- Sebelum penyamaran (tipe data: STRING)
    +-----------------+
    | col_string      |
    +-----------------+
    | Michael Johnson |
    +-----------------+
    -- Kebijakan penyamaran: ganti 7 karakter pertama dengan string tetap "Oli".
    MASKED_REPLACE_FIXED(7, "Oli")
    -- Setelah penyamaran
    +-------------+
    | col_string  | 
    +-------------+
    | Oli Johnson | 
    +-------------+

Contoh penggunaan

Menyembunyikan informasi pribadi sensitif

Contoh ini menunjukkan cara mengonfigurasi kebijakan penyamaran untuk menyembunyikan informasi pribadi sensitif.

  1. Persiapkan data.

    Buat tabel untuk menyimpan informasi pribadi dan masukkan data sensitif.

    -- Buat tabel untuk informasi sensitif.
    CREATE TABLE if NOT EXISTS personal_info (
     id bigint COMMENT 'ID unik pengguna.',
     name string COMMENT 'Nama pengguna.',
     age int COMMENT 'Usia pengguna.',
     gender string COMMENT 'Jenis kelamin pengguna.',
     height float COMMENT 'Tinggi badan pengguna.',
     birthday date COMMENT 'Tanggal lahir pengguna.',
     phone_number string COMMENT 'Nomor telepon pengguna.',
     email string COMMENT 'Alamat email pengguna.',
     address string COMMENT 'Alamat pengguna.',
     salary decimal(18, 2) COMMENT 'Gaji pengguna.',
     create_time timestamp COMMENT 'Waktu saat informasi pengguna dibuat.',
     update_time timestamp COMMENT 'Waktu saat informasi pengguna diperbarui.',
     is_deleted boolean COMMENT 'Menunjukkan apakah informasi pengguna dihapus.'
    );
    -- Masukkan data sensitif.
    INSERT INTO personal_info VALUES
     (1, 'Zhang San', 18, 'Male', 178.56, '1990-01-01', '13800000000', 'zhangsan@example.com', 'Haidian District, Beijing', 5000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00', false),
     (2, 'Li Si', 20, 'Female', 162.70, '1992-02-02', '13900000000', 'lisi@example.com', 'Pudong New Area, Shanghai', 6000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00',false),
     (3, 'Wang Wu', 22, 'Male', 185.21, '1994-03-03', '14000000000', 'wangwu@example.com', 'Nanshan District, Shenzhen', 7000.00, '2023-04-19 11:32:00', '2023-04-19 11:32:00', false);
  2. Konfigurasi kebijakan penyamaran.

    • Untuk nama, simpan hanya karakter pertama dan ganti sisanya dengan tanda bintang (*).

      CREATE data masking policy IF NOT EXISTS masking_name
      TO USER (RAM$xxx@test.aliyunid.com:xxx)
      USING MASKED_STRING_UNMASKED_BA(1, 0);
      
      apply data masking policy masking_name bind TO
      TABLE personal_info COLUMN name;
    • Bulatkan nilai ketinggian ke bilangan bulat terdekat.

      CREATE data masking policy IF NOT EXISTS masking_height
      TO USER (RAM$xxx@test.aliyunid.com:xxx)
      USING MASKED_POINT_RESERVE(0);
      
      apply data masking policy masking_height bind TO
      TABLE personal_info COLUMN height;
    • Untuk tanggal lahir, atur ulang nilainya ke awal tahun.

      CREATE data masking policy IF NOT EXISTS masking_birthday
      TO USER (RAM$xxx@test.aliyunid.com:xxx)
      USING MASKED_DATE_YEAR;
      
      apply data masking policy masking_birthday bind TO
      TABLE personal_info COLUMN birthday;
    • Untuk pengguna default, hash nomor telepon menggunakan algoritma SM3.

      CREATE DATA MASKING POLICY default_sm3
      TO DEFAULT
      USING MASKED_SM3(0);
      
      apply data masking policy default_sm3 bind TO
      TABLE personal_info COLUMN phone_number;
  3. Gunakan akun yang telah dikonfigurasi kebijakan penyamarannya untuk mengkueri data.

    SELECT id, name, height, birthday, phone_number FROM personal_info;
    
    -- Sebelum penyamaran
    +----+-----------+--------+------------+--------------+
    | id | name      | height | birthday   | phone_number |
    +----+-----------+--------+------------+--------------+
    | 1  | Zhang San | 178.56 | 1990-01-01 | 13800000000  |
    | 2  | Li Si     | 162.7  | 1992-02-02 | 13900000000  |
    | 3  | Wang Wu   | 185.21 | 1994-03-03 | 14000000000  |
    +----+-----------+--------+------------+--------------+
    
    -- Setelah penyamaran
    +----+---------+--------+------------+----------------------------------------------+
    | id | name    | height | birthday   | phone_number                                 | 
    +----+---------+--------+------------+----------------------------------------------+
    | 1  | Z******** | 179    | 1990-01-01 | lvYJaH4ElL2ilpQx/8tfMUw7xP22yblIgmfWp0/msUQ= | 
    | 2  | L****     | 163    | 1992-01-01 | 9fFWacNSwCRZLAjMHqunlfwkqhTbP2ubuDOeOSh4N1c= | 
    | 3  | W******   | 185    | 1994-01-01 | k/0JoQCSarJg9ATJ5tyVnhQf1jIBxHXRbB+cvUm4OmE= | 
    +----+---------+--------+------------+----------------------------------------------+

Penyamaran default untuk semua pengguna dan peran

Contoh ini menunjukkan cara prioritas kebijakan bekerja saat pengguna atau peran cocok dengan beberapa kebijakan penyamaran.

Terapkan kebijakan MASKED_SHA256(5) untuk pengguna default.

CREATE DATA MASKING POLICY default_hash_policy
TO DEFAULT
USING MASKED_SHA256(5);

Terapkan kebijakan UNMASKED untuk pengguna spesifik A dan B.

CREATE DATA MASKING POLICY ab_unmask_policy
TO USER (A, B)
USING UNMASKED;

Hasil: Pengguna A dan B dapat mengakses data teks biasa. Pengguna lain hanya dapat mengakses data yang telah di-hash dengan SHA256.

Catatan

Pengguna A dan B cocok dengan kedua kebijakan MASKED_SHA256(5) dan UNMASKED. Sistem menerapkan UNMASKED karena memiliki prioritas lebih tinggi. Untuk informasi lebih lanjut, lihat Prioritas kebijakan penyamaran yang telah ditentukan. Pengguna lain hanya cocok dengan kebijakan MASKED_SHA256(5).

Lampiran

Prioritas kebijakan penyamaran yang telah ditentukan

Saat beberapa kebijakan penyamaran berlaku untuk akses data pengguna, kebijakan dengan prioritas tertinggi yang digunakan.

Misalnya, pengguna bernama A mengakses kolom col_string, dan permintaannya cocok dengan dua kebijakan penyamaran: MASKED_REPLACE_RANDOM(3) dengan tingkat prioritas 3 dan MASKED_SM3 dengan tingkat prioritas 4. Karena angka yang lebih kecil menunjukkan prioritas lebih tinggi, kebijakan MASKED_REPLACE_RANDOM(3) yang diterapkan. Pengguna A melihat data yang disembunyikan dengan karakter acak.

Prioritas

Kebijakan penyamaran yang telah ditentukan

0 (tertinggi)

UNMASKED

1

MASKED_POINT_RESERVE(num)

2

MASKED_DATE_YEAR

3

MASKED_STRING_MASKED_BA(before, after)

MASKED_STRING_UNMASKED_BA(before, after)

MASKED_REPLACE_RANDOM(position)

MASKED_REPLACE_RANDOM_BA(before, after)

MASKED_REPLACE_FIXED(position, fixed_string)

4

MASKED_SHA256

MASKED_SHA512

MASKED_MD5

MASKED_SM3

5

MASKED_DV

6 (terendah)

MASKED_NULLIFY

Nilai default untuk kebijakan penyamaran MASKED_DV

Tipe

Default

bigint

0

double

0.0

decimal

0

string

"" (string kosong)

datetime

DATETIME'1970-01-01 00:00:00' (UTC)

boolean

false

tinyint

0

smallint

0

int

0

binary

'' (kosong)

float

0.0

varchar(n)

"" (string kosong)

char(n)

" " (n spasi)

date

DATE'1970-01-01'

timestamp

TIMESTAMP'1970-01-01 00:00:00' (UTC)

timestamp_ntz

TIMESTAMP'1970-01-01 00:00:00' (UTC)

array

Array kosong

map

Map kosong

json

"" (string kosong)

struct

Struct dengan nilai default untuk setiap bidang