全部产品
Search
文档中心

MaxCompute:Perlindungan Data Proyek

更新时间:Jul 02, 2025

Selama pemrosesan bisnis, pengguna mungkin memiliki akses ke beberapa proyek secara bersamaan. Hal ini dapat menimbulkan risiko keamanan jika terjadi transfer data antar proyek. Untuk memastikan perlindungan data proyek, MaxCompute menyediakan fitur perlindungan data proyek yang mengontrol aliran keluar data. Topik ini menjelaskan fitur perlindungan data proyek dan kebijakan aliran keluar data yang dapat digunakan bersama dengan fitur tersebut.

Informasi latar belakang

Beberapa perusahaan memiliki persyaratan keamanan data yang tinggi dan mengambil berbagai langkah untuk mencegah kebocoran data sensitif. Sebagai contoh, karyawan hanya diperbolehkan bekerja di tempat kerja dan tidak diizinkan membawa materi kerja keluar dari kantor. Selain itu, semua port USB pada komputer kantor dinonaktifkan. Risiko keamanan juga dapat terjadi jika pengguna mentransfer data dari satu proyek ke proyek lainnya.

Sebagai ilustrasi, pengguna Alice memiliki izin akses pada Proyek1 dan Proyek2. Alice memiliki izin Select pada tabel table1 di Proyek1 dan izin CreateTable pada Proyek2. Jika fitur perlindungan data proyek dinonaktifkan, Alice dapat mengeksekusi pernyataan berikut untuk mentransfer data dari table1 di Proyek1 ke Proyek2. Operasi ini dapat menyebabkan risiko kebocoran data sensitif.

create table project2.table2 as select * from project1.table1;

Contoh di atas menunjukkan bahwa pengguna dengan akses ke beberapa proyek MaxCompute dapat mentransfer data antar proyek. MaxCompute menyediakan fitur perlindungan data proyek untuk mengontrol hal ini. Jika terdapat data sangat sensitif dalam proyek, pemilik proyek harus mengaktifkan fitur perlindungan data proyek.

Secara default, fitur perlindungan data proyek dinonaktifkan untuk proyek MaxCompute. Pemilik proyek dapat menjalankan perintah set projectProtection=true; untuk mengaktifkan fitur ini. Dengan cara ini, data hanya dapat mengalir masuk ke proyek dan tidak dapat mengalir keluar.

Tindakan pencegahan

Setelah mengaktifkan fitur perlindungan data proyek, perhatikan poin-poin berikut:

  • Operasi akses data lintas proyek tidak dapat dilakukan karena melanggar aturan perlindungan data proyek. Jika Anda ingin mengizinkan data tertentu mengalir keluar ke proyek lain, gunakan salah satu metode berikut yang disediakan oleh MaxCompute: Kebijakan aliran keluar data 1: Konfigurasikan kebijakan pengecualian atau Kebijakan aliran keluar data 2: Konfigurasikan proyek tepercaya.

  • Fitur perlindungan data proyek mengontrol aliran data, bukan izin akses pada data. Kontrol aliran data hanya bermakna jika pengguna memiliki izin akses pada data.

  • Di MaxCompute, fitur berbagi sumber daya berbasis paket lintas proyek independen dari fitur perlindungan data proyek. Efek dari kedua fitur ini saling eksklusif. Berbagi sumber daya berbasis paket lebih diutamakan daripada perlindungan data proyek. Misalnya, jika pengguna di Proyek B diberi izin akses pada objek di Proyek A melalui berbagi sumber daya berbasis paket, fitur perlindungan data proyek tidak berlaku pada objek tersebut.

Kebijakan aliran keluar data 1: Konfigurasikan kebijakan pengecualian

Jika operasi akses data lintas proyek diperlukan, pemilik proyek harus mengonfigurasi kebijakan pengecualian terlebih dahulu untuk mengizinkan pengguna tertentu mentransfer data objek tertentu dari proyek saat ini ke proyek tertentu. Setelah kebijakan pengecualian dikonfigurasi, data objek tersebut dapat ditransfer ke proyek tertentu meskipun fitur perlindungan data proyek diaktifkan.

Konfigurasikan Kebijakan Pengecualian

Konfigurasikan kebijakan pengecualian saat mengaktifkan fitur perlindungan data proyek. Setelah mengonfigurasi kebijakan pengecualian, jalankan perintah show SecurityConfiguration; untuk melihat informasi kebijakan pengecualian. Perintah untuk mengonfigurasi kebijakan pengecualian:

set ProjectProtection=true with exception <policyfile>;

policyfile menunjukkan file kebijakan pengecualian. Simpan file sebagai file TXT di direktori bin jalur instalasi klien MaxCompute. Contoh berikut menunjukkan isi file policyfile:

    {
    "Version": "1",
    "Statement":
    [{
        "Effect":"Allow",
        "Principal":"<Principal>",
        "Action":["odps:<Action1>[, <Action2>, ...]"],
        "Resource":"acs:odps:*:<Resource>",
        "Condition":{
            "StringEquals": {
                "odps:TaskType":["<Tasktype>"]
            }
        }
    }]
    }

Parameter

Deskripsi

Effect

Menentukan apakah data diizinkan mengalir keluar. Atur nilainya menjadi Allow. Nilai ini menunjukkan bahwa data diizinkan mengalir keluar.

Principal

Akun Alibaba Cloud atau pengguna RAM yang diizinkan mentransfer data keluar dari proyek.

Action

Tindakan yang diizinkan untuk mentransfer data keluar dari proyek. Untuk informasi lebih lanjut tentang tindakan yang dilakukan pada berbagai jenis objek, lihat Izin MaxCompute.

Resource

Objek dari mana data diizinkan mengalir keluar dan proyek tempat objek tersebut berada. Format: projects/<project_name>/{tables|resources|functions|instances}/<name>. Untuk informasi lebih lanjut tentang objek, lihat Izin MaxCompute.

Tasktype

Tipe pekerjaan di mana data diizinkan mengalir keluar. Nilai valid: DT, SQL, dan MapReduce. DT menunjukkan Tunnel.

Contoh

-- Aktifkan fitur perlindungan data proyek dan konfigurasikan kebijakan pengecualian. File policy_file disimpan di direktori bin jalur instalasi klien MaxCompute.
set ProjectProtection=true with exception policy_file;
-- File policy_file berisi konten berikut:
{
    "Version": "1",
    "Statement":
    [{
        "Effect":"Allow",
        "Principal":"ALIYUN$Alice@aliyun.com",
        "Action":["odps:Select"],
        "Resource":"acs:odps:*:projects/project_test/tables/table_test",
        "Condition":{
            "StringEquals": {
                "odps:TaskType":["DT", "SQL"]
            }
        }
    }]
    }

Contoh di atas menunjukkan bahwa Alice diizinkan melakukan operasi Select pada tabel project_test.table_test dalam pekerjaan SQL untuk mentransfer data dari proyek project_test ke proyek lain.

Catatan

Jika Alice tidak memiliki izin Select pada tabel project_test.table_test, Alice tidak dapat mentransfer data keluar dari proyek meskipun kebijakan pengecualian telah dikonfigurasi.

Tindakan Pencegahan

Metode ini dapat menyebabkan kebocoran data karena kesalahan waktu-periksa ke waktu-pakai (TOCTOU), yang juga dikenal sebagai kondisi balapan:

  • Deskripsi Masalah

    Contoh berikut menjelaskan bagaimana pengguna mentransfer data keluar dari proyek.

    1. Tahap TOC: Pengguna A mengajukan permohonan kepada pemilik proyek untuk mengekspor data di tabel t1. Setelah pemilik proyek memverifikasi bahwa tabel t1 tidak berisi data sensitif, pemilik proyek mengonfigurasi kebijakan pengecualian untuk mengizinkan Pengguna A mengekspor data di tabel t1.

    2. Sebelum tahap TOU dimulai, pengguna lain menulis data sensitif ke tabel t1.

    3. Tahap TOU: Pengguna A mengekspor data di tabel t1. Namun, data di tabel t1 yang diekspor berisi data sensitif yang ditulis oleh pengguna lain.

  • Solusi

    Untuk mencegah masalah ini, kami sarankan agar pemilik proyek memastikan bahwa tidak ada pengguna lain yang dapat melakukan tindakan Update untuk memperbarui tabel atau melakukan tindakan Drop dan CreateTable untuk menghapus tabel dan membuat tabel dengan nama yang sama. Dalam contoh di atas, kami sarankan agar pemilik proyek membuat snapshot dari tabel t1 di tahap TOC, dan kemudian menggunakan snapshot ini untuk mengonfigurasi kebijakan pengecualian. Selain itu, pastikan bahwa tidak ada pengguna lain yang diberi peran Admin.

Kebijakan aliran keluar data 2: Konfigurasikan proyek tepercaya

Jika fitur perlindungan data proyek diaktifkan untuk proyek saat ini tetapi aliran keluar data diperlukan, pemilik proyek dapat mengonfigurasi proyek tujuan sebagai proyek tepercaya dari proyek saat ini. Dengan cara ini, data proyek dapat ditransfer ke proyek tepercaya. Jika beberapa proyek ditentukan sebagai proyek tepercaya satu sama lain, proyek-proyek ini membentuk grup proyek tepercaya. Data dari proyek-proyek ini hanya dapat ditransfer di dalam grup.

Kelola Proyek Tepercaya

Pemilik proyek dapat menjalankan perintah berikut untuk mengelola proyek tepercaya:

  • Untuk menambahkan proyek tepercaya untuk proyek saat ini, jalankan perintah berikut:

     add trustedproject <project_name>;               
  • Untuk menghapus proyek tepercaya dari proyek saat ini, jalankan perintah berikut:

     remove trustedproject <project_name>;            
  • Untuk menanyakan semua proyek tepercaya dari proyek saat ini, jalankan perintah berikut:

     list trustedprojects;                  

Praktik terbaik

Untuk mencegah data proyek ditransfer ke proyek lain, pemilik proyek harus mengatur projectProtection menjadi true dan melakukan operasi berikut untuk memeriksa konfigurasi:

  • Jalankan perintah list trustedprojects; dan pastikan tidak ada proyek tepercaya yang dikonfigurasi untuk proyek. Jika proyek tepercaya dikonfigurasi untuk proyek, pemilik proyek harus menilai risiko potensial. Pemilik proyek dapat menjalankan perintah remove trustedproject <project_name>; untuk menghapus proyek tepercaya yang tidak diperlukan.

  • Jalankan perintah show packages; dan pastikan tidak ada paket berbagi data yang digunakan dalam proyek. Jika paket berbagi data digunakan dalam proyek, pemilik proyek harus memastikan bahwa paket tersebut tidak berisi data sensitif. Pemilik proyek dapat menjalankan perintah delete package <package_name>; untuk menghapus paket berbagi data yang tidak diperlukan.

  • Anda dapat mengaktifkan fitur perlindungan data proyek untuk mencegah data diekspor dari proyek. Penggunaan fitur perlindungan data proyek serupa dengan penggunaan fitur yang digunakan untuk migrasi data lintas proyek. Skenario berikut didukung:

    • Eksekusi pernyataan create table <Table in another project> as select * from <Table in a protected project>.

    • Eksekusi pernyataan insert overwrite table <Tables in another project> select * from <Tables in a protected project>.

    • Tulis data tabel ke tabel di proyek lain dengan menjalankan pekerjaan Spark, pekerjaan MapReduce, pekerjaan Graph, Proxima CE, dan Platform Pembelajaran Mesin untuk AI (PAI) pekerjaan.

    • Jalankan perintah unduh Tunnel untuk mengunduh data tabel MaxCompute ke mesin lokal Anda. Anda dapat memanggil SDK Tunnel atau memanggil Tunnel dengan menggunakan driver Java Database Connectivity (JDBC).

    • Jalankan perintah CLONE TABLE untuk menyalin data tabel ke tabel di proyek lain.

    • Panggil fungsi yang ditentukan pengguna (UDF) untuk menulis data tabel ke tabel di proyek lain.

    • Panggil UDF untuk menulis data tabel ke tabel eksternal MaxCompute.

  • Fitur perlindungan data proyek dan kontrol akses Unduh dapat digunakan untuk proyek untuk mengunduh data. Jika Anda ingin mengunduh data dari proyek, Anda harus memeriksa apakah Anda memiliki izin terkait pada proyek.

    • Jika Anda mengaktifkan fitur perlindungan data proyek dan kontrol akses Unduh untuk proyek, Anda dapat mengunduh data dari proyek ketika Anda memiliki izin Unduh dan Describe pada proyek. Otentikasi Describe dipicu sebelum Anda dapat menjalankan perintah unduh Tunnel.

    • Jika Anda mengaktifkan fitur perlindungan data proyek dan menonaktifkan kontrol akses Unduh untuk proyek, Anda dapat mengunduh data dari proyek ketika Anda memiliki izin Select pada proyek dan mengonfigurasi kebijakan pengecualian untuk perilaku unduhan.

    • Jika Anda menonaktifkan fitur perlindungan data proyek dan mengaktifkan kontrol akses Unduh untuk proyek, Anda dapat mengunduh data dari proyek ketika Anda memiliki izin Unduh dan Describe pada proyek.

    • Jika Anda menonaktifkan fitur perlindungan data proyek dan kontrol akses Unduh untuk proyek, Anda dapat mengunduh data dari proyek ketika Anda memiliki izin Select pada proyek.