Difference between revisions of "Prinsip-prinsip pelindungan data pribadi"
Onnowpurbo (talk | contribs)  (Created page with "Berikut adalah lanjutan dari **Modul 9: Proteksi Data Pribadi**, dengan fokus pada **Prinsip-Prinsip Pelindungan Data Pribadi**, dilengkapi dengan **contoh implementasi teknis...")  | 
				Onnowpurbo (talk | contribs)   | 
				||
| Line 1: | Line 1: | ||
| − | + | ==Tujuan Pembelajaran==  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Setelah mempelajari bagian ini, mahasiswa diharapkan mampu:  | Setelah mempelajari bagian ini, mahasiswa diharapkan mampu:  | ||
- Menjelaskan prinsip-prinsip utama perlindungan data pribadi.  | - Menjelaskan prinsip-prinsip utama perlindungan data pribadi.  | ||
| Line 14: | Line 5: | ||
- Mengimplementasikan fitur keamanan dan kontrol di MySQL untuk mendukung kepatuhan terhadap perlindungan data.  | - Mengimplementasikan fitur keamanan dan kontrol di MySQL untuk mendukung kepatuhan terhadap perlindungan data.  | ||
| − | |||
| − | + | ==Prinsip-Prinsip Pelindungan Data Pribadi==  | |
Berikut adalah prinsip-prinsip yang umum digunakan secara internasional (juga tercantum dalam UU No. 27/2022 tentang Pelindungan Data Pribadi di Indonesia):  | Berikut adalah prinsip-prinsip yang umum digunakan secara internasional (juga tercantum dalam UU No. 27/2022 tentang Pelindungan Data Pribadi di Indonesia):  | ||
| − | | Prinsip                      | + | {| class="wikitable"  | 
| − | |-  | + | ! Prinsip                    !! Penjelasan  !! Contoh Praktik di MySQL Ubuntu 24.04  | 
| − | |   | + | |-  | 
| − | |   | + | | '''1. Persetujuan (Consent)'''         || Data hanya boleh dikumpulkan dan digunakan jika telah disetujui oleh subjek data.       || Tabel harus mencatat status persetujuan pengguna.  | 
| − | |   | + | |-  | 
| − | |   | + | | '''2. Tujuan Terbatas (Purpose Limitation)''' || Data hanya boleh digunakan untuk tujuan yang sah dan disetujui.                         || Gunakan peran (role-based access) untuk membatasi penggunaan.  | 
| − | |   | + | |-  | 
| − | |   | + | | '''3. Minimalisasi Data (Data Minimization)''' || Hanya data yang benar-benar dibutuhkan yang boleh dikumpulkan.                         || Jangan buat kolom berlebihan; hindari menyimpan data sensitif jika tidak perlu.  | 
| − | |   | + | |-  | 
| + | | '''4. Akurasi (Accuracy)'''           || Data harus dijaga agar tetap akurat dan diperbarui.                                     || Gunakan constraint dan validasi.  | ||
| + | |-  | ||
| + | | '''5. Penyimpanan Terbatas (Storage Limitation)''' || Data tidak boleh disimpan lebih lama dari yang diperlukan.                            || Terapkan mekanisme penghapusan otomatis berdasarkan waktu.  | ||
| + | |-  | ||
| + | | '''6. Integritas dan Kerahasiaan (Security)''' || Data harus dilindungi dari akses tidak sah atau pelanggaran.                           || Gunakan GRANT/REVOKE, enkripsi, dan backup.  | ||
| + | |-  | ||
| + | | '''7. Akuntabilitas (Accountability)'''        || Pengendali data harus dapat menunjukkan kepatuhan terhadap prinsip ini.                || Catat log akses atau audit trail.  | ||
| + | ||  | ||
| − | |||
| − | |||
| − | + | ==Contoh Implementasi di MySQL Ubuntu 24.04==  | |
| − | + | 1. '''Pencatatan Persetujuan'''  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + |  CREATE TABLE pengguna (  | |
| + |      id INT PRIMARY KEY AUTO_INCREMENT,  | ||
| + |      nama VARCHAR(100),  | ||
| + |      email VARCHAR(100),  | ||
| + |      setuju_pdp BOOLEAN DEFAULT FALSE,  | ||
| + |      tanggal_setuju TIMESTAMP NULL  | ||
| + |  );  | ||
| − | + | ||
| + | 2. '''Kontrol Akses Berdasarkan Tujuan'''  | ||
Misalnya hanya admin yang boleh mengakses semua data:  | Misalnya hanya admin yang boleh mengakses semua data:  | ||
| − | + |  -- Buat user terbatas  | |
| − | -- Buat user terbatas  | + |  CREATE USER 'survey_user'@'localhost' IDENTIFIED BY 'safePass123';  | 
| − | CREATE USER 'survey_user'@'localhost' IDENTIFIED BY 'safePass123';  | + | |
| + |  -- Hanya izinkan akses kolom non-sensitif  | ||
| + |  GRANT SELECT(nama, email) ON mydb.pengguna TO 'survey_user'@'localhost';  | ||
| − | |||
| − | |||
| − | |||
| − | + | 3. '''Validasi Akurasi Data'''  | |
| − | + |  CREATE TABLE mahasiswa (  | |
| + |      nim VARCHAR(10) PRIMARY KEY,  | ||
| + |      nama VARCHAR(100) NOT NULL,  | ||
| + |      email VARCHAR(100),  | ||
| + |      ipk DECIMAL(3,2) CHECK (ipk BETWEEN 0.00 AND 4.00)  | ||
| + |  );  | ||
| − | + | 4. '''Penghapusan Otomatis Data Lama (Retention Policy)'''  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | )  | ||
| − | |||
| − | + |  DELETE FROM log_akses  | |
| − | + |  WHERE waktu_akses < NOW() - INTERVAL 1 YEAR;  | |
| − | |||
| − | |||
| − | |||
| − | DELETE FROM log_akses  | ||
| − | WHERE waktu_akses < NOW() - INTERVAL 1 YEAR;  | ||
| − | |||
> Bisa dijalankan otomatis lewat cron job di Ubuntu.  | > Bisa dijalankan otomatis lewat cron job di Ubuntu.  | ||
| − | |||
| − | + | 5. '''Keamanan: Enkripsi Manual dan Pembatasan Akses'''  | |
| − | + | '''Enkripsi data email (opsional, manual):'''  | |
| − | + |  -- Contoh hanya ilustrasi, enkripsi dilakukan di level aplikasi  | |
| − | -- Contoh hanya ilustrasi, enkripsi dilakukan di level aplikasi  | + |  INSERT INTO pengguna (nama, email)  | 
| − | INSERT INTO pengguna (nama, email)  | + |  VALUES ('Budi', AES_ENCRYPT('budi@mail.com', 'kunci_rahasia'));  | 
| − | VALUES ('Budi', AES_ENCRYPT('budi@mail.com', 'kunci_rahasia'));  | ||
| − | |||
| − | |||
| − | + | 6. '''Akuntabilitas: Logging Akses (Manual Logging)'''  | |
| − | + |  CREATE TABLE log_akses (  | |
| − | CREATE TABLE log_akses (  | + |      user VARCHAR(50),  | 
| − | + |      waktu_akses TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  | |
| − | + |      tindakan VARCHAR(255)  | |
| − | + |  );  | |
| − | );  | + | |
| + |  -- Insert log saat pengguna mengakses data  | ||
| + |  INSERT INTO log_akses (user, tindakan) VALUES ('admin', 'Lihat tabel pengguna');  | ||
| − | + | > Untuk logging otomatis, perlu integrasi dengan aplikasi atau trigger.  | |
| − | |||
| − | |||
| − | + | ==Ringkasan Praktik MySQL untuk Prinsip PDP==  | |
| − | ---  | + | {| class="wikitable"  | 
| + | ! Prinsip        !! Fitur MySQL yang Relevan  | ||
| + | |-  | ||
| + | | Persetujuan    || Kolom `BOOLEAN`, timestamp persetujuan  | ||
| + | |-  | ||
| + | | Tujuan Terbatas|| `GRANT`, `REVOKE`, user terbatas  | ||
| + | |-  | ||
| + | | Minimasi Data  || Desain tabel efisien, tanpa data tidak perlu  | ||
| + | |-  | ||
| + | | Akurasi        || Constraint, `CHECK`, validasi input  | ||
| + | |-  | ||
| + | | Retensi        || Query `DELETE` + `cron` atau trigger  | ||
| + | |-  | ||
| + | | Keamanan       || Role-based access, enkripsi, backup  | ||
| + | |-  | ||
| + | | Akuntabilitas  || `log_akses` table atau binary log  | ||
| + | |}  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ==Pranala Menarik==  | |
| − | + | * [[Database: Kuliah]]  | |
Revision as of 07:59, 21 April 2025
Tujuan Pembelajaran
Setelah mempelajari bagian ini, mahasiswa diharapkan mampu: - Menjelaskan prinsip-prinsip utama perlindungan data pribadi. - Menghubungkan prinsip-prinsip tersebut ke dalam praktik sistem basis data. - Mengimplementasikan fitur keamanan dan kontrol di MySQL untuk mendukung kepatuhan terhadap perlindungan data.
Prinsip-Prinsip Pelindungan Data Pribadi
Berikut adalah prinsip-prinsip yang umum digunakan secara internasional (juga tercantum dalam UU No. 27/2022 tentang Pelindungan Data Pribadi di Indonesia):
| Prinsip | Penjelasan | Contoh Praktik di MySQL Ubuntu 24.04 | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1. Persetujuan (Consent) | Data hanya boleh dikumpulkan dan digunakan jika telah disetujui oleh subjek data. | Tabel harus mencatat status persetujuan pengguna. | |||||||||||||||||
| 2. Tujuan Terbatas (Purpose Limitation) | Data hanya boleh digunakan untuk tujuan yang sah dan disetujui. | Gunakan peran (role-based access) untuk membatasi penggunaan. | |||||||||||||||||
| 3. Minimalisasi Data (Data Minimization) | Hanya data yang benar-benar dibutuhkan yang boleh dikumpulkan. | Jangan buat kolom berlebihan; hindari menyimpan data sensitif jika tidak perlu. | |||||||||||||||||
| 4. Akurasi (Accuracy) | Data harus dijaga agar tetap akurat dan diperbarui. | Gunakan constraint dan validasi. | |||||||||||||||||
| 5. Penyimpanan Terbatas (Storage Limitation) | Data tidak boleh disimpan lebih lama dari yang diperlukan. | Terapkan mekanisme penghapusan otomatis berdasarkan waktu. | |||||||||||||||||
| 6. Integritas dan Kerahasiaan (Security) | Data harus dilindungi dari akses tidak sah atau pelanggaran. | Gunakan GRANT/REVOKE, enkripsi, dan backup. | |||||||||||||||||
| 7. Akuntabilitas (Accountability) | Pengendali data harus dapat menunjukkan kepatuhan terhadap prinsip ini. | Catat log akses atau audit trail. | 
 
 Contoh Implementasi di MySQL Ubuntu 24.041. Pencatatan Persetujuan CREATE TABLE pengguna (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(100),
    email VARCHAR(100),
    setuju_pdp BOOLEAN DEFAULT FALSE,
    tanggal_setuju TIMESTAMP NULL
);
 Misalnya hanya admin yang boleh mengakses semua data: -- Buat user terbatas CREATE USER 'survey_user'@'localhost' IDENTIFIED BY 'safePass123'; -- Hanya izinkan akses kolom non-sensitif GRANT SELECT(nama, email) ON mydb.pengguna TO 'survey_user'@'localhost'; 
 CREATE TABLE mahasiswa (
    nim VARCHAR(10) PRIMARY KEY,
    nama VARCHAR(100) NOT NULL,
    email VARCHAR(100),
    ipk DECIMAL(3,2) CHECK (ipk BETWEEN 0.00 AND 4.00)
);
4. Penghapusan Otomatis Data Lama (Retention Policy) DELETE FROM log_akses WHERE waktu_akses < NOW() - INTERVAL 1 YEAR; > Bisa dijalankan otomatis lewat cron job di Ubuntu. 
 Enkripsi data email (opsional, manual): -- Contoh hanya ilustrasi, enkripsi dilakukan di level aplikasi
INSERT INTO pengguna (nama, email)
VALUES ('Budi', AES_ENCRYPT('budi@mail.com', 'kunci_rahasia'));
 CREATE TABLE log_akses (
    user VARCHAR(50),
    waktu_akses TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    tindakan VARCHAR(255)
);
-- Insert log saat pengguna mengakses data
INSERT INTO log_akses (user, tindakan) VALUES ('admin', 'Lihat tabel pengguna');
> Untuk logging otomatis, perlu integrasi dengan aplikasi atau trigger. Ringkasan Praktik MySQL untuk Prinsip PDP
 
 Pranala Menarik |