全部产品
Search
文档中心

MaxCompute:Penyembunyian Data Dinamis

更新时间:Dec 16, 2025

Untuk memungkinkan pengguna tertentu hanya melihat data sensitif yang telah disembunyikan dalam Proyek MaxCompute, Anda dapat mengaktifkan fitur dynamic data masking. Fitur ini mencegah kebocoran data sensitif dengan menyembunyikan atau mengganti data sensitif secara real time saat data diakses atau ditampilkan. Topik ini menggunakan contoh untuk menjelaskan cara mengaktifkan dynamic data masking di MaxCompute.

Deskripsi Fitur

MaxCompute menyediakan fitur dynamic data masking untuk melindungi data sensitif, seperti personally identifiable information (PII), dengan menyembunyikan data saat ditampilkan. Fitur ini berlaku dalam skenario seperti pengujian pengembangan bisnis, berbagi data, serta operasi dan maintenance (O&M). Dynamic data masking berbeda dari izin tingkat kolom Access Control List (ACL). Saat menggunakan izin tingkat kolom ACL, pengguna harus memodifikasi kueri SQL mereka untuk mengecualikan kolom yang tidak memiliki izin akses. Sebaliknya, kebijakan penyembunyian data tidak mengharuskan pengguna mengubah kueri SQL yang sudah ada. Saat pengguna mengakses data, sistem secara otomatis menyembunyikan data pada kolom terkait berdasarkan identitas dan role pengguna. Hal ini memastikan bahwa data tetap disembunyikan selama kueri, unduhan, asosiasi, dan komputasi user-defined function (UDF), sehingga mencegah kebocoran data sensitif.

Kebijakan penyembunyian data mendukung berbagai metode, seperti penyembunyian, penghashan, penggantian karakter, pembulatan numerik, dan pembulatan tanggal, untuk memenuhi berbagai kebutuhan penyembunyian informasi identitas, nomor kartu bank, alamat, dan nomor telepon. MaxCompute menerapkan penyembunyian data pada titik paling dekat dengan pengambilan data dari penyimpanan, yang menjamin performa tinggi dan keamanan yang kuat.

image

Lingkup

  • Wilayah yang Didukung

    Fitur ini berada dalam pratinjau publik dan 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), dan AS (Silicon Valley).

  • Versi driver yang didukung

    Metode koneksi MaxCompute

    Versi driver

    Dukungan untuk penyembunyian data

    Java SDK

    0.48.0-public dan lebih baru

    Dukungan

    odpscmd

    0.47.1 dan lebih baru

    Didukung

    JDBC

    3.4.3 dan lebih baru

    Dukungan

    MaxFrame

    Tanpa Batas

    Didukung

    PyODPS

    Tanpa Batas

    Didukung

    Go SDK

    Tanpa Batas

    Dukungan

  • Tabel internal

    • MaxCompute mendukung kebijakan penyembunyian data untuk tabel internal, tetapi tidak untuk tabel eksternal.

    • Fitur dynamic data masking dan fitur izin tingkat baris saling eksklusif. Anda tidak dapat mengonfigurasi kebijakan penyembunyian data dan kebijakan izin tingkat baris secara bersamaan untuk tabel yang sama.

    • Jika Anda menggunakan kebijakan penyembunyian untuk menyembunyikan karakter Tionghoa, character encoding harus UTF-8.

  • Tampilan

    • Tampilan tradisional mendukung kebijakan penyembunyian data. Kebijakan penyembunyian data untuk tampilan tradisional disinkronkan dengan kebijakan pada tabel sumber. Jika Anda menyambungkan atau melepas kebijakan penyembunyian data dari tabel sumber, perubahan tersebut juga berlaku pada tampilan tradisional.

    • Saat Anda membuat materialized view, kebijakan penyembunyian data dari tabel sumber diterapkan pada materialized view tersebut. Jika Anda menyambungkan kebijakan penyembunyian baru atau melepas kebijakan penyembunyian yang ada dari tabel sumber setelah materialized view dibuat, kebijakan penyembunyian pada materialized view tetap tidak berubah.

  • Kebijakan penyembunyian data

    Saat pengguna mengakses data sensitif, jika beberapa kebijakan penyembunyian data berlaku secara bersamaan, sistem akan menyembunyikan data sensitif berdasarkan kebijakan dengan prioritas tertinggi. Untuk informasi lebih lanjut, lihat Prioritas kebijakan penyembunyian data bawaan.

Alur penyembunyian data

Pemilik Proyek dan pengguna yang ditetapkan sebagai role Super_Administrator atau Admin dapat mengelola kebijakan penyembunyian data. Saat pengguna mengakses tabel yang berisi data sensitif, sistem memeriksa kebijakan penyembunyian yang terkait dengan pengguna atau role tersebut dan mengembalikan data yang telah disembunyikan atau teks biasa.

image

Perintah penyembunyian data

Aktifkan atau nonaktifkan fitur penyembunyian data untuk sebuah proyek

odps.data.masking.policy.enable adalah properti tingkat proyek yang digunakan untuk mengaktifkan atau menonaktifkan fitur penyembunyian data. Hanya pemilik proyek atau pengguna yang ditetapkan sebagai role Super_Administrator atau Admin tingkat proyek yang dapat mengaktifkan atau menonaktifkan fitur ini. Untuk informasi lebih lanjut, lihat Tetapkan role manajemen bawaan kepada pengguna.

  • Aktifkan fitur penyembunyian data untuk sebuah proyek.

    setproject odps.data.masking.policy.enable=true;
  • Nonaktifkan fitur penyembunyian data untuk sebuah proyek.

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

Buat dan hapus kebijakan penyembunyian data

  • Format perintah

    • Buat kebijakan penyembunyian data.

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

      DROP DATA MASKING POLICY <policy_name>;
  • Deskripsi parameter

    Parameter

    Wajib

    Deskripsi

    policy_name

    Ya

    Nama kebijakan penyembunyian data. Nama kebijakan tidak peka huruf besar/kecil dan tidak boleh mengandung karakter khusus. Nama hanya boleh terdiri dari huruf, angka, dan garis bawah (_). Disarankan agar nama dimulai dengan huruf. Panjang nama tidak boleh melebihi 128 byte.

    USER | ROLE | default

    Ya

    Pilih salah satu dari tiga parameter berikut.

    • USER: Menyembunyikan data untuk pengguna tertentu. Untuk <user_list>, tentukan nama pengguna. Anda dapat menjalankan perintah list users; di MaxCompute untuk mendapatkan informasi role.

    • ROLE: Menyembunyikan data untuk role tertentu. Untuk <role_list>, tentukan nama role. Anda dapat menjalankan perintah list roles; di MaxCompute untuk mendapatkan informasi role.

    • default: Kebijakan penyembunyian data default. Saat pengguna atau role mengakses kolom sensitif dan tidak ada kebijakan penyembunyian data yang cocok, kebijakan default digunakan untuk menyembunyikan data pada kolom sensitif tersebut.

    Predefined Masking Policy

    Ya

    Kebijakan penyembunyian data yang telah ditentukan sebelumnya. Untuk informasi lebih lanjut, lihat Kebijakan penyembunyian data yang telah ditentukan sebelumnya.

  • Contoh

    • Contoh 1: Buat kebijakan penyembunyian hash 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 penyembunyian hashing MD5 untuk role developer proyek dan O&M.

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

Terapkan kebijakan penyembunyian data ke kolom data sensitif

  • Format perintah

    --Terapkan kebijakan penyembunyian data ke kolom data sensitif suatu tabel.
    APPLY DATA MASKING POLICY <policy_name> BIND TO TABLE <table_name> COLUMN <column_name>;
    
    --Batalkan kebijakan penyembunyian data tertentu untuk kolom data sensitif suatu tabel.
    APPLY DATA MASKING POLICY <policy_name> UNBIND FROM TABLE <table_name> COLUMN <column_name>;
    
    --Batalkan semua kebijakan penyembunyian data untuk kolom data sensitif suatu tabel.
    APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name> COLUMN <column_name>;
    
    --Batalkan semua kebijakan penyembunyian data untuk semua kolom data sensitif suatu tabel.
    APPLY DATA MASKING POLICY UNBIND ALL FROM TABLE <table_name>;
  • Deskripsi parameter

    Parameter

    Wajib

    Deskripsi

    policy_name

    Ya

    Nama kebijakan penyembunyian data.

    table_name

    Ya

    Nama tabel yang berisi data sensitif.

    column_name

    Ya

    Nama kolom yang berisi data sensitif.

Lihat kebijakan penyembunyian data

  • Format perintah

    --Lihat informasi pembuatan kebijakan penyembunyian data.
    DESC DATA MASKING POLICY <policy_name>;
    
    --Lihat informasi tambahan tentang tabel, termasuk informasi kolom data sensitif dan kebijakan penyembunyian data yang diterapkan.
    DESC EXTENDED <table_name>;
    
    --Tampilkan nama semua kebijakan penyembunyian data di proyek saat ini.
    LIST DATA MASKING POLICY;
    
    --Tampilkan nama kebijakan penyembunyian data yang dilampirkan ke pengguna tertentu.
    LIST DATA MASKING POLICY TO USER <user_name>;
    
    --Tampilkan nama kebijakan penyembunyian data yang dilampirkan ke role tertentu.
    LIST DATA MASKING POLICY TO ROLE <role_name>;
    
    --Tampilkan nama semua kebijakan penyembunyian data yang dilampirkan ke tabel tertentu.
    LIST DATA MASKING POLICY ON <table_name>;
    
    --Tampilkan nama semua kebijakan penyembunyian data yang dilampirkan ke kolom tertentu dari tabel tertentu.
    LIST DATA MASKING POLICY ON <table_name> TO COLUMN <column_name>;
  • Deskripsi parameter

    Parameter

    Wajib

    Deskripsi

    policy_name

    Ya

    Nama kebijakan penyembunyian data.

    table_name

    Ya

    Nama tabel yang berisi data sensitif.

    column_name

    Ya

    Nama kolom yang berisi data sensitif.

    user_name

    Ya

    Nama pengguna.

    role_name

    Ya

    Nama peran.

Kebijakan penyembunyian data yang telah ditentukan sebelumnya

Kebijakan penyembunyian data bawaan mencakup penyembunyian, penghashan, penggantian karakter, dan pembulatan. Untuk melindungi data, Anda dapat memilih kebijakan penyembunyian data bawaan berdasarkan tipe data dari data sensitif tersebut.

Jenis Kebijakan

Nama Kebijakan

Format perintah

Deskripsi

Umum

Tidak disembunyikan

UNMASKED

Tidak menyembunyikan data.

Tipe yang didukung: semua tipe.

Atur ke null

MASKED_NULLIFY

Mengatur nilai menjadi NULL. Setelah penyembunyian data, nilai NULL dikembalikan.

  • Tipe yang didukung: semua tipe.

  • Contoh

    --Sebelum penyembunyian, tipe data adalah string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    
    --Kebijakan penyembunyian data
    MASKED_NULLIFY
    
    --Setelah penyembunyian
    +------------+
    | col_string | 
    +------------+
    | NULL       | 
    +------------+

Tetapkan nilai default

MASKED_DV

Menggunakan nilai default untuk menyembunyikan data. Untuk informasi lebih lanjut tentang nilai default untuk setiap tipe data, lihat Nilai default tipe data untuk kebijakan MASKED_DV.

  • Tipe yang didukung: semua tipe.

  • Contoh

    --Sebelum penyembunyian, tipe data adalah timestamp
    +---------------+
    | col_timestamp |
    +---------------+
    | 2024-05-01 11:12:13 |
    +---------------+
    --Kebijakan penyembunyian data
    MASKED_DV
    --Setelah penyembunyian, zona waktu default proyek adalah China Standard Time (UTC+8)
    +---------------+
    | col_timestamp | 
    +---------------+
    | 1970-01-01 08:00:00 | 
    +---------------+

Hanya pertahankan tahun

MASKED_DATE_YEAR

Hanya mempertahankan bagian tahun dari nilai waktu. Bagian selain tahun diatur menjadi 1 Januari, pukul 00:00 (UTC).

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

  • Contoh

    --Sebelum penyembunyian, tipe data adalah timestamp
    +---------------+
    | col_timestamp |
    +---------------+
    | 2024-05-01 11:12:13 |
    +---------------+
    --Kebijakan penyembunyian data
    MASKED_DATE_YEAR
    --Setelah penyembunyian, zona waktu default proyek adalah China Standard Time (UTC+8)
    +---------------+
    | col_timestamp | 
    +---------------+
    | 2024-01-01 08:00:00 | 
    +---------------+

Pembulatan

MASKED_POINT_RESERVE(<num>)

Membulatkan nilai dan mempertahankan 0 hingga 5 tempat desimal.

  • num: jumlah tempat desimal yang dipertahankan. Nilai num adalah bilangan bulat dari 0 hingga 5.

  • Tipe yang didukung: DECIMAL, FLOAT, DOUBLE.

  • Contoh

    --Sebelum penyembunyian, tipe data adalah float
    +-----------+
    | col_float |
    +-----------+
    | 1.12345   |
    +-----------+
    --Kebijakan penyembunyian data, pertahankan 2 tempat desimal
    MASKED_POINT_RESERVE(2)
    --Setelah penyembunyian
    +------------+
    | col_float  | 
    +------------+
    | 1.12       | 
    +------------+

Penyembunyian

Menyembunyikan awal dan akhir string

MASKED_STRING_MASKED_BA(<before>, <after>)

Menyembunyikan bagian awal dan akhir string dengan *, dan menampilkan bagian tengah dalam teks biasa.

  • before: Karakter N pertama dari string diganti dengan tanda bintang (*). N ditentukan oleh parameter before. Nilai before adalah bilangan bulat yang lebih besar dari atau sama dengan 0. Jika nilai before adalah 0, bagian awal string tidak disembunyikan.

  • after: Akhir string diganti dengan *. Panjang penyembunyian ditentukan oleh parameter after. Nilai after adalah bilangan bulat yang lebih besar dari atau sama dengan 0.

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

  • Contoh

    --Sebelum penyembunyian, tipe data adalah string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    --Kebijakan penyembunyian data, ganti 3 karakter pertama dan 3 karakter terakhir dengan tanda bintang, dan tampilkan bagian tengah dalam teks biasa
    MASKED_STRING_MASKED_BA(3, 3)
    --Setelah penyembunyian
    +------------+
    | col_string | 
    +------------+
    | ***hael John*** | 
    +------------+

Menyembunyikan bagian tengah string

MASKED_STRING_UNMASKED_BA(<before>, <after>)

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

  • before: jumlah karakter teks biasa di awal string. Nilai before adalah bilangan bulat yang lebih besar dari atau sama dengan 0.

  • after: jumlah karakter teks biasa di akhir string. Nilai after adalah bilangan bulat yang lebih besar dari atau sama dengan 0.

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

  • Contoh

    --Sebelum penyembunyian, tipe data adalah string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    --Kebijakan penyembunyian data, pertahankan karakter pertama dan terakhir dalam teks biasa
    MASKED_STRING_UNMASKED_BA(1, 1)
    --Setelah penyembunyian
    +------------+
    | col_string | 
    +------------+
    | M*************n | 
    +------------+

Hash

Penghashan SHA256

MASKED_SHA256(<salt>)

Menyembunyikan data menggunakan algoritma hash SHA256.

  • salt: nilai salt. Nilai num adalah bilangan bulat dari 0 hingga 9.

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

  • Contoh

    --Sebelum penyembunyian, tipe data adalah string
    +------------+
    | col_string | 
    +------------+
    | 4562-1234-5678-9123 | 
    +------------+
    --Kebijakan penyembunyian data
    MASKED_SHA256(0)
    --Setelah penyembunyian
    +------------+
    | col_string | 
    +------------+
    | zwGMB1aCF1t705EfcwdDorql4MZb46XBqQJw/2RVx8U= | 
    +------------+

Penghashan SHA512

MASKED_SHA512(<salt>)

Menyembunyikan data menggunakan algoritma hash SHA512.

  • salt: nilai salt. Nilai num adalah bilangan bulat dari 0 hingga 9.

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

  • Contoh

    --Sebelum penyembunyian, tipe data adalah string
    +------------+
    | col_string | 
    +------------+
    | 4562-1234-5678-9123 | 
    +------------+
    --Kebijakan penyembunyian data
    MASKED_SHA512(0)
    --Setelah penyembunyian
    +------------+
    | col_string | 
    +------------+
    | 3PPywfEIp08WuTUI8FZCCfdVuRu68wZTVwWWVAf4pboACUnH6w9kFMLpl2AARaGW/mvWvg26p0EIqmE0fAEiuA== | 
    +------------+

Penghashan MD5

MASKED_MD5(<salt>)

Menyembunyikan data menggunakan algoritma hash MD5.

  • salt: nilai salt. Nilai num adalah bilangan bulat dari 0 hingga 9.

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

  • Contoh

    --Sebelum penyembunyian, tipe data adalah string
    +------------+
    | col_string | 
    +------------+
    | 4562-1234-5678-9123 | 
    +------------+
    --Kebijakan penyembunyian data
    MASKED_MD5(0)
    --Setelah penyembunyian
    +------------+
    | col_string | 
    +------------+
    | mK/o08tew5g7S3XV/BkFfw== | 
    +------------+

Penghashan SM3

MASKED_SM3(<salt>)

Menyembunyikan data menggunakan algoritma hash SM3.

  • salt: nilai salt. Nilai num adalah bilangan bulat dari 0 hingga 9.

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

  • Contoh

    --Sebelum penyembunyian, tipe data adalah string
    +------------+
    | col_string | 
    +------------+
    | 4562-1234-5678-9123 | 
    +------------+
    --Kebijakan penyembunyian data
    MASKED_SM3(0)
    --Setelah penyembunyian
    +------------+
    | col_string | 
    +------------+
    | Q2TfwUh4B8QQH8jPL6DfdoGysx/CXBxn2T14dDwQtQw= | 
    +------------+

Penggantian karakter

Penggantian karakter acak

MASKED_REPLACE_RANDOM(<position>)

Mengganti data dengan karakter acak. Panjang string tidak berubah setelah penggantian. Nilai acak mencakup angka dan huruf.

  • position: posisi penggantian karakter. Nilainya adalah bilangan bulat.

    • position = 0: Semua data diganti dengan nilai acak.

    • position > 0: Karakter `position` pertama diganti dengan nilai acak.

    • position < 0: Karakter `position` terakhir diganti dengan nilai acak.

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

  • Contoh

    --Sebelum penyembunyian, tipe data adalah string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    --Kebijakan penyembunyian data, ganti 7 karakter pertama string dengan karakter acak
    MASKED_REPLACE_RANDOM(7)
    --Setelah penyembunyian
    +------------+
    | col_string | 
    +------------+
    | 4DlJQxi Johnson | 
    +------------+

Penggantian karakter acak di awal dan akhir

MASKED_REPLACE_RANDOM_BA(<before>, <after>)

Mengganti awal dan akhir data dengan karakter acak. Panjang string tidak berubah setelah penggantian. Nilai acak mencakup angka dan huruf.

  • before: Awal data diganti dengan karakter acak. Panjang penggantian ditentukan oleh parameter before. Nilai before adalah bilangan bulat yang lebih besar dari atau sama dengan 0. Jika nilai before adalah 0, awal tidak diganti.

  • after: Akhir data diganti dengan karakter acak. Panjang penggantian ditentukan oleh parameter after. Nilai after adalah bilangan bulat yang lebih besar dari atau sama dengan 0.

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

  • Contoh

    --Sebelum penyembunyian, tipe data adalah string
    +------------+
    | col_string |
    +------------+
    | Michael Johnson |
    +------------+
    --Kebijakan penyembunyian data, ganti 4 karakter pertama dan 4 karakter terakhir string dengan karakter acak
    MASKED_REPLACE_RANDOM_BA(4, 4)
    --Setelah penyembunyian
    +------------+
    | col_string | 
    +------------+
    | r0xEael JohnWNr | 
    +------------+

Penggantian karakter tetap

MASKED_REPLACE_FIXED(<position>, <fixed_string>)

  • Mengganti data dengan string tetap.

  • position: posisi penggantian karakter. Nilainya adalah bilangan bulat.

    • position = 0: Semua data diganti dengan fixed_string.

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

    • position < 0: Karakter `-position` terakhir diganti dengan fixed_string.

  • fixed_string: string tetap. Panjang string tetap harus 100 karakter atau kurang. String tetap tidak boleh mengandung spasi.

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

  • Contoh

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

Contoh

Menyembunyikan informasi pribadi sensitif

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

  1. Siapkan data.

    Buat tabel untuk 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 'Flag yang 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. Konfigurasikan kebijakan penyembunyian data.

    • Pertahankan hanya karakter pertama dari nama, dan ganti karakter lainnya dengan *.

      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 pada bidang height.

      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;
    • Hanya pertahankan tahun dari tanggal lahir.

      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;
    • Gunakan algoritma SM3 untuk meng-hash nomor telepon bagi pengguna default.

      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 tunduk pada kebijakan penyembunyian data untuk mengkueri data yang telah disembunyikan.

    SELECT id, name, height, birthday, phone_number FROM personal_info;
    
    -- Sebelum penyembunyian
    +------------+------+--------+----------+--------------+
    | 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 penyembunyian
    +------------+------------+------------+------------+--------------+
    | id         | name       | height     | birthday   | phone_number | 
    +------------+------------+------------+------------+--------------+
    | 1          | Zhang*     | 179.0      | 1990-01-01 | lvYJaH4ElL2ilpQx/8tfMUw7xP22yblIgmfWp0/msUQ= | 
    | 2          | Li*        | 163.0      | 1992-01-01 | 9fFWacNSwCRZLAjMHqunlfwkqhTbP2ubuDOeOSh4N1c= | 
    | 3          | Wang*      | 185.0      | 1994-01-01 | k/0JoQCSarJg9ATJ5tyVnhQf1jIBxHXRbB+cvUm4OmE= | 
    +------------+------------+------------+------------+--------------+

Menyembunyikan data untuk semua pengguna dan peran secara default

Contoh berikut menunjukkan bahwa ketika pengguna atau role cocok dengan beberapa kebijakan penyembunyian data, kebijakan dengan prioritas tertinggi yang berlaku.

Gunakan kebijakan penyembunyian MASKED_SHA256(5) untuk pengguna default.

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

Gunakan kebijakan UNMASKED untuk pengguna khusus 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 disembunyikan menggunakan algoritma hash SHA256.

Catatan

Pengguna A dan B cocok dengan kedua kebijakan MASKED_SHA256(5) dan UNMASKED. Kebijakan UNMASKED yang berlaku karena memiliki prioritas lebih tinggi (untuk informasi lebih lanjut, lihat Prioritas kebijakan penyembunyian bawaan). Pengguna lain cocok dengan kebijakan MASKED_SHA256(5).

Lampiran

Prioritas kebijakan penyembunyian yang telah ditentukan sebelumnya

Saat pengguna mengakses data sensitif, jika beberapa kebijakan penyembunyian data berlaku, kebijakan dengan prioritas lebih tinggi yang dieksekusi.

Misalnya, jika Pengguna A mengakses kolom col_string dan cocok dengan dua kebijakan penyembunyian data, yaitu MASKED_REPLACE_RANDOM(3) dengan prioritas 3 dan MASKED_SM3 dengan prioritas 4, sistem akan mengeksekusi kebijakan dengan prioritas lebih tinggi. Dalam kasus ini, MASKED_REPLACE_RANDOM(3) digunakan, dan Pengguna A melihat data dengan karakter acak yang telah diganti.

Prioritas

Kebijakan penyembunyian data bawaan

0 (Tinggi)

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)

4

MASKED_SHA256

MASKED_SHA512

MASKED_MD5

MASKED_SM3

5

MASKED_DV

6 (Rendah)

MASKED_NULLIFY

Nilai default untuk kebijakan penyembunyian data MASKED_DV

Tipe data

Nilai default

bigint

0

double

0.0

decimal

0

string

""

datetime

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

boolean

false

tinyint

0

smallint

0

int

0

binary

''

float

0.0

double

0.0

decimal

0

varchar(n)

""

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

{Nilai default kelas anak}

map

{key:value} (key dan value sesuai dengan nilai default kelas anak)

json

""

struct

(Nilai default kelas anak)