Pengguna yang memiliki akses ke beberapa proyek dapat menimbulkan risiko keamanan dengan memindahkan data antar proyek tersebut. MaxCompute menyediakan fitur perlindungan data proyek untuk mengontrol aliran data keluar dan membantu mengamankan data proyek Anda. Topik ini menjelaskan fitur perlindungan data proyek dan kebijakannya dalam mengelola aliran data keluar.
Informasi latar belakang
Beberapa perusahaan memiliki persyaratan keamanan data yang tinggi. Mereka menerapkan berbagai langkah untuk mencegah kebocoran data sensitif, seperti hanya mengizinkan karyawan bekerja di tempat kerja dan melarang membawa materi kerja keluar kantor. Selain itu, semua port USB pada komputer kantor dinonaktifkan. Masalah keamanan dapat muncul ketika pengguna mentransfer data dari satu proyek ke proyek lain.
Misalnya, pengguna Alice memiliki izin akses ke Project1 dan Project2. Alice memiliki izin Select pada tabel table1 di Project1 dan izin CreateTable di Project2. Jika fitur perlindungan data proyek dinonaktifkan, Alice dapat menjalankan pernyataan berikut untuk mentransfer data table1 dari Project1 ke Project2—suatu operasi yang menimbulkan risiko kebocoran data sensitif.
CREATE TABLE project2.table2 AS SELECT * FROM project1.table1;Contoh di atas menunjukkan bahwa pengguna yang memiliki izin akses ke beberapa proyek MaxCompute secara bersamaan dapat mentransfer data antar proyek. MaxCompute menyediakan fitur perlindungan data proyek. Jika suatu proyek berisi data yang sangat sensitif, pemilik proyek harus mengaktifkan fitur perlindungan data proyek tersebut.
Secara default, perlindungan data proyek dinonaktifkan. Pemilik proyek dapat mengaktifkannya dengan menjalankan perintah set projectProtection=true;. Setelah diaktifkan, aliran data dibatasi: data hanya dapat mengalir masuk ke proyek, bukan keluar darinya.
Perhatian
Setelah Anda mengaktifkan perlindungan data proyek, perhatikan hal-hal berikut:
Operasi akses data lintas proyek diblokir karena melanggar aturan perlindungan data. Untuk membuat pengecualian—misalnya, mengizinkan data tertentu mengalir keluar ke proyek lain—MaxCompute menyediakan dua strategi: Strategi aliran data keluar 1: Tetapkan kebijakan pengecualian dan Strategi aliran data keluar 2: Tetapkan proyek tepercaya.
Fitur perlindungan data proyek mengontrol aliran data, tetapi tidak mengontrol izin akses terhadap data. Kontrol aliran data hanya berlaku jika pengguna memiliki izin akses terhadap data tersebut.
Di MaxCompute, fitur berbagi sumber daya lintas proyek berbasis package bersifat independen dari fitur perlindungan data proyek. Efek kedua fitur ini saling eksklusif. Berbagi sumber daya berbasis package memiliki prioritas lebih tinggi daripada perlindungan data proyek. Misalnya, jika pengguna di Project B diberikan izin akses ke suatu objek di Project A melalui berbagi sumber daya berbasis package, fitur perlindungan data proyek tidak berlaku terhadap objek tersebut.
Kebijakan aliran data keluar 1: Konfigurasikan kebijakan pengecualian
Jika operasi akses data lintas proyek diperlukan, pemilik proyek harus terlebih dahulu mengonfigurasi kebijakan pengecualian 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 yang ditentukan meskipun fitur perlindungan data proyek diaktifkan.
Persiapan
Klien MaxCompute
Konfigurasikan kebijakan pengecualian sekaligus mengaktifkan perlindungan data proyek. Setelah dikonfigurasi, jalankan perintah SHOW SecurityConfiguration; untuk melihat detail kebijakan. Gunakan perintah berikut untuk menetapkan kebijakan pengecualian:
SET ProjectProtection=true with exception <policyfile>;policyfile adalah file Kebijakan Pengecualian, yang harus disimpan dalam format TXT ke direktori bin pada path instalasi klien MaxCompute. Format isinya sebagai berikut.
{
"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. Tetapkan nilainya ke Allow. Nilai ini menunjukkan bahwa data diizinkan mengalir keluar. |
Principal | Akun Alibaba Cloud atau RAM user yang diizinkan mentransfer data keluar dari proyek. |
Action | Operasi aliran data keluar yang diizinkan. Untuk informasi tentang aksi untuk berbagai jenis objek, lihat izin MaxCompute. |
Resource | Proyek dan objek dari mana aliran data keluar diizinkan. Format: |
Tasktype | Jenis pekerjaan di mana data diizinkan mengalir keluar. Nilai yang valid: DT, SQL, dan MapReduce. DT menunjukkan Tunnel. |
Konsol MaxCompute
Masuk ke Konsol MaxCompute, lalu pilih Wilayah di pojok kiri atas.
Pada panel navigasi di sebelah kiri, pilih .
Pada halaman Projects, temukan proyek target dan klik Manage di kolom Actions.
Pada halaman Project Settings, Anda dapat memilih tab Parameter Configuration.
Pada bagian Permission Properties, klik Edit.
Aktifkan Project Data Protection, klik Exception di sebelah kanan, lalu masukkan kebijakan pengecualian di kotak dialog Set Exception.
{ "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. Tetapkan nilainya ke Allow. Nilai ini menunjukkan bahwa data diizinkan mengalir keluar.
Principal
Akun Alibaba Cloud atau RAM user yang diizinkan mentransfer data keluar dari proyek.
Action
Operasi aliran data keluar yang diizinkan. Untuk informasi tentang aksi untuk berbagai jenis objek, lihat izin MaxCompute.
Resource
Proyek dan objek dari mana aliran data keluar diizinkan. Format:
projects/<project_name>/{tables|resources|functions|instances}/<name>. Untuk informasi lebih lanjut tentang nilai objek, lihat izin MaxCompute.Tasktype
Jenis pekerjaan di mana data diizinkan mengalir keluar. Nilai yang valid: DT, SQL, dan MapReduce. DT menunjukkan Tunnel.
Contoh
-- Aktifkan perlindungan data proyek dan tetapkan kebijakan pengecualian.
-- policy_file disimpan di direktori bin pada path instalasi klien MaxCompute.
set ProjectProtection=true with exception policy_file;
-- Kode berikut menunjukkan isi policy_file.
{
"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.
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.
Pertimbangan
Metode ini dapat menyebabkan kebocoran data akibat kesalahan time-of-check to time-of-use (TOCTOU), yang juga dikenal sebagai race condition:
Deskripsi masalah
Contoh berikut menggambarkan bagaimana pengguna mentransfer data keluar dari proyek.
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.
Sebelum tahap TOU dimulai, pengguna lain menulis data sensitif ke tabel t1.
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 menyarankan agar pemilik proyek memastikan bahwa tidak ada pengguna lain yang dapat melakukan aksi Update untuk memperbarui tabel atau melakukan aksi Drop dan CreateTable untuk menghapus tabel dan membuat tabel baru dengan nama yang sama. Pada contoh di atas, kami menyarankan agar pemilik proyek membuat Snapshot tabel t1 pada tahap TOC, lalu menggunakan Snapshot tersebut untuk mengonfigurasi kebijakan pengecualian. Selain itu, pastikan tidak ada pengguna lain yang diberikan peran Admin.
Kebijakan aliran data keluar 2: Konfigurasikan proyek tepercaya
Jika fitur perlindungan data proyek diaktifkan untuk proyek saat ini tetapi aliran data keluar diperlukan, pemilik proyek dapat menetapkan proyek tujuan sebagai proyek tepercaya dari proyek saat ini. Dengan demikian, data proyek tersebut dapat ditransfer ke proyek tepercaya. Jika beberapa proyek saling menetapkan satu sama lain sebagai proyek tepercaya, proyek-proyek tersebut membentuk kelompok proyek tepercaya. Data dari proyek-proyek ini hanya dapat ditransfer di dalam kelompok tersebut.
Manajemen
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 menampilkan semua proyek tepercaya dari proyek saat ini, jalankan perintah berikut:
list trustedprojects;
Praktik terbaik
Untuk mencegah secara ketat aliran data keluar dari proyek, setelah Anda mengaktifkan perlindungan dengan menjalankan set projectProtection=true;, Anda juga harus memeriksa konfigurasi berikut:
Jalankan perintah
list trustedprojects;untuk memastikan tidak ada proyek tepercaya yang ditambahkan. Jika terdapat proyek tepercaya, evaluasi potensi risikonya dan jalankan perintahremove trustedproject <project_name>;untuk menghapus yang tidak diperlukan.Jalankan perintah
show packages;untuk memastikan tidak ada package yang digunakan untuk berbagi data. Jika terdapat package, pastikan package tersebut tidak berisi data sensitif, atau jalankan perintahdelete package <package_name>;untuk menghapus yang tidak diperlukan.Anda dapat mengaktifkan fitur perlindungan data proyek untuk suatu proyek guna mencegah data diekspor dari proyek tersebut. Penggunaan fitur perlindungan data proyek mirip dengan penggunaan fitur yang digunakan untuk migrasi data lintas proyek. Skenario berikut didukung:
create table <table_in_another_project> as select * from <table_in_a_protected_project>insert overwrite table <table_in_another_project> select * from <table_in_a_protected_project>Menulis data tabel ke tabel di proyek lain dengan menjalankan pekerjaan Spark, pekerjaan MapReduce, pekerjaan Graph, Proxima CE, dan pekerjaan Machine Learning Platform for AI (PAI).
Menjalankan perintah Tunnel download untuk mengunduh data tabel MaxCompute ke mesin lokal Anda. Anda dapat memanggil SDK Tunnel atau memanggil Tunnel menggunakan driver Java Database Connectivity (JDBC).
Menggunakan perintah
clone tableuntuk menyalin data tabel ke tabel di proyek lain.Memanggil user-defined function (UDF) untuk menulis data tabel ke tabel di proyek lain.
Memanggil UDF untuk menulis data tabel ke tabel eksternal MaxCompute.
Fitur perlindungan data proyek dan kontrol akses Download dapat digunakan untuk suatu proyek guna mengunduh data. Jika Anda ingin mengunduh data dari suatu proyek, Anda harus memeriksa apakah Anda memiliki izin terkait pada proyek tersebut.
Jika Anda mengaktifkan fitur perlindungan data proyek dan kontrol akses Download untuk suatu proyek, Anda dapat mengunduh data dari proyek tersebut ketika memiliki izin Download dan Describe pada proyek tersebut. Otentikasi Describe dipicu sebelum Anda dapat menjalankan perintah Tunnel download.
Jika Anda mengaktifkan fitur perlindungan data proyek dan menonaktifkan kontrol akses Download untuk suatu proyek, Anda dapat mengunduh data dari proyek tersebut ketika memiliki izin Select pada proyek tersebut dan mengonfigurasi kebijakan pengecualian untuk perilaku unduhan tersebut.
Jika Anda menonaktifkan fitur perlindungan data proyek dan mengaktifkan kontrol akses Download untuk suatu proyek, Anda dapat mengunduh data dari proyek tersebut ketika memiliki izin Download dan Describe pada proyek tersebut.
Jika Anda menonaktifkan fitur perlindungan data proyek dan kontrol akses Download untuk suatu proyek, Anda dapat mengunduh data dari proyek tersebut ketika memiliki izin Select pada proyek tersebut.