Difference between revisions of "Aspek keamanan: kerahasiaan, integritas, ketersediaan"

From OnnoWiki
Jump to navigation Jump to search
(Created page with "Berikut adalah **Modul 8: Keamanan Basis Data**, dengan fokus pada tiga aspek utama yaitu **kerahasiaan (confidentiality)**, **integritas (integrity)**, dan **ketersediaan (av...")
 
 
Line 1: Line 1:
Berikut adalah **Modul 8: Keamanan Basis Data**, dengan fokus pada tiga aspek utama yaitu **kerahasiaan (confidentiality)**, **integritas (integrity)**, dan **ketersediaan (availability)**, disertai dengan **contoh implementasi di MySQL Ubuntu 24.04**.
+
==Tujuan Pembelajaran==
 +
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:
 +
* Menjelaskan aspek utama keamanan basis data (CIA: Confidentiality, Integrity, Availability).
 +
* Menerapkan konfigurasi dan praktik keamanan pada MySQL.
 +
* Memahami pengelolaan hak akses, enkripsi, dan backup data untuk menjaga keamanan basis data.
  
---
 
  
## 🛡️ **Modul 8: Keamanan Basis Data**
 
  
### 🎯 **Tujuan Pembelajaran**
+
==Tiga Pilar Keamanan Basis Data (CIA)==
Setelah mempelajari modul ini, mahasiswa diharapkan mampu:
 
- Menjelaskan aspek utama keamanan basis data (CIA: Confidentiality, Integrity, Availability).
 
- Menerapkan konfigurasi dan praktik keamanan pada MySQL.
 
- Memahami pengelolaan hak akses, enkripsi, dan backup data untuk menjaga keamanan basis data.
 
  
---
+
{| class="wikitable"
 +
! Aspek          !! Definisi
 +
|-
 +
| '''Kerahasiaan''' || Menjaga agar data hanya dapat diakses oleh pihak yang berwenang.
 +
|-
 +
| '''Integritas'''  || Menjamin bahwa data akurat, konsisten, dan tidak dimodifikasi tanpa izin.
 +
|-
 +
| '''Ketersediaan'''|| Menjamin data dan layanan database tersedia saat dibutuhkan.
 +
|}
  
## 🔐 **8.1 Tiga Pilar Keamanan Basis Data (CIA)**
 
  
| Aspek          | Definisi                                                                |
 
|----------------|--------------------------------------------------------------------------|
 
| **Kerahasiaan** | Menjaga agar data hanya dapat diakses oleh pihak yang berwenang.        |
 
| **Integritas**  | Menjamin bahwa data akurat, konsisten, dan tidak dimodifikasi tanpa izin.|
 
| **Ketersediaan**| Menjamin data dan layanan database tersedia saat dibutuhkan.            |
 
  
---
+
==Kerahasiaan (Confidentiality)==
  
## 🔏 **8.2 Kerahasiaan (Confidentiality)**
+
'''Tujuan:'''
  
### ✅ Tujuan:
 
 
Melindungi data dari akses tidak sah.
 
Melindungi data dari akses tidak sah.
  
### 🔹 Contoh di MySQL:
+
'''Contoh di MySQL:'''
#### 👤 1. **Membuat pengguna dan memberi hak akses minimum**
 
  
```sql
+
1. '''Membuat pengguna dan memberi hak akses minimum'''
-- Buat user baru
 
CREATE USER 'editor'@'localhost' IDENTIFIED BY 'password123';
 
  
-- Hanya izinkan SELECT pada tabel mahasiswa
+
-* Buat user baru
GRANT SELECT ON universitas.mahasiswa TO 'editor'@'localhost';
+
CREATE USER 'editor'@'localhost' IDENTIFIED BY 'password123';
```
+
 +
-* Hanya izinkan SELECT pada tabel mahasiswa
 +
GRANT SELECT ON universitas.mahasiswa TO 'editor'@'localhost';
  
#### 🔒 2. **Menghapus hak akses**
+
2. '''Menghapus hak akses'''
  
```sql
+
REVOKE SELECT ON universitas.mahasiswa FROM 'editor'@'localhost';
REVOKE SELECT ON universitas.mahasiswa FROM 'editor'@'localhost';
 
```
 
  
#### 🔐 3. **Mengaktifkan autentikasi enkripsi SSL (opsional)**
+
3. '''Mengaktifkan autentikasi enkripsi SSL (opsional)'''
  
 
Aktifkan SSL di file config:
 
Aktifkan SSL di file config:
```ini
 
[mysqld]
 
ssl-ca=/etc/mysql/certs/ca.pem
 
ssl-cert=/etc/mysql/certs/server-cert.pem
 
ssl-key=/etc/mysql/certs/server-key.pem
 
```
 
  
---
+
[mysqld]
 +
ssl-ca=/etc/mysql/certs/ca.pem
 +
ssl-cert=/etc/mysql/certs/server-cert.pem
 +
ssl-key=/etc/mysql/certs/server-key.pem
 +
 
 +
 
 +
==Integritas (Integrity)==
  
## 🧱 **8.3 Integritas (Integrity)**
+
'''Tujuan:'''
  
### ✅ Tujuan:
 
 
Melindungi data agar tidak diubah/dihapus secara tidak sah atau tidak sengaja.
 
Melindungi data agar tidak diubah/dihapus secara tidak sah atau tidak sengaja.
  
### 🔹 Contoh di MySQL:
+
'''Contoh di MySQL:'''
  
#### 🧩 1. **Gunakan constraint seperti PRIMARY KEY, FOREIGN KEY, dan CHECK**
+
1. '''Gunakan constraint seperti PRIMARY KEY, FOREIGN KEY, dan CHECK'''
  
```sql
+
CREATE TABLE mahasiswa (
CREATE TABLE mahasiswa (
+
    nim VARCHAR(10) PRIMARY KEY,
    nim VARCHAR(10) PRIMARY KEY,
+
    nama VARCHAR(100) NOT NULL,
    nama VARCHAR(100) NOT NULL,
+
    ipk DECIMAL(3,2) CHECK (ipk BETWEEN 0.00 AND 4.00)
    ipk DECIMAL(3,2) CHECK (ipk BETWEEN 0.00 AND 4.00)
+
);
);
 
```
 
  
#### 🔐 2. **Gunakan TRIGGER untuk validasi otomatis**
+
2. '''Gunakan TRIGGER untuk validasi otomatis'''
  
```sql
+
DELIMITER //
DELIMITER //
+
CREATE TRIGGER before_insert_mahasiswa
CREATE TRIGGER before_insert_mahasiswa
+
BEFORE INSERT ON mahasiswa
BEFORE INSERT ON mahasiswa
+
FOR EACH ROW
FOR EACH ROW
+
BEGIN
BEGIN
+
    IF NEW.ipk > 4.00 THEN
    IF NEW.ipk > 4.00 THEN
+
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'IPK tidak valid';
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'IPK tidak valid';
+
    END IF;
    END IF;
+
END;
END;
+
//
//
+
DELIMITER ;
DELIMITER ;
 
```
 
  
---
+
==Ketersediaan (Availability)==
  
## ⚙️ **8.4 Ketersediaan (Availability)**
+
'''Tujuan:'''
  
### ✅ Tujuan:
 
 
Memastikan database tetap bisa diakses saat dibutuhkan, meski ada gangguan.
 
Memastikan database tetap bisa diakses saat dibutuhkan, meski ada gangguan.
  
### 🔹 Strategi:
+
'''Strategi:'''
  
#### 🛡️ 1. **Backup Berkala**
+
1. '''Backup Berkala'''
  
```bash
+
mysqldump -u root -p universitas > backup_universitas.sql
mysqldump -u root -p universitas > backup_universitas.sql
 
```
 
  
#### 🔄 2. **Restore Data**
 
  
```bash
+
2. '''Restore Data'''
mysql -u root -p universitas < backup_universitas.sql
 
```
 
  
#### 🔁 3. **Monitoring dan Restart Otomatis**
+
mysql -u root -p universitas < backup_universitas.sql
 +
 
 +
3. '''Monitoring dan Restart Otomatis'''
  
 
Gunakan `systemd` agar MySQL selalu otomatis restart jika gagal:
 
Gunakan `systemd` agar MySQL selalu otomatis restart jika gagal:
  
```bash
+
sudo systemctl enable mysql
sudo systemctl enable mysql
+
sudo systemctl start mysql
sudo systemctl start mysql
 
```
 
  
#### 🔎 4. **Monitoring Kesehatan Server**
+
4. '''Monitoring Kesehatan Server'''
  
 
Install dan jalankan MySQLTuner:
 
Install dan jalankan MySQLTuner:
  
```bash
+
sudo apt install mysqltuner
sudo apt install mysqltuner
+
sudo mysqltuner
sudo mysqltuner
+
 
```
+
==Kesimpulan==
  
---
+
{| class="wikitable"
 +
! Aspek          !! Implementasi MySQL Ubuntu 24.04
 +
|-
 +
| '''Kerahasiaan''' || Buat user terbatas, grant/revoke, gunakan SSL
 +
|-
 +
| '''Integritas'''  || Gunakan constraint, trigger, validasi data
 +
|-
 +
| '''Ketersediaan'''|| Backup, monitoring, pemulihan otomatis, konfigurasi systemd
 +
|}
  
## 📌 **8.5 Kesimpulan**
 
  
| Aspek          | Implementasi MySQL Ubuntu 24.04                                      |
 
|----------------|----------------------------------------------------------------------|
 
| **Kerahasiaan** | Buat user terbatas, grant/revoke, gunakan SSL                      |
 
| **Integritas**  | Gunakan constraint, trigger, validasi data                          |
 
| **Ketersediaan**| Backup, monitoring, pemulihan otomatis, konfigurasi systemd        |
 
  
---
+
==Pranala Menarik==
  
Kalau kamu mau lanjut ke **Modul 9: Backup dan Replikasi Basis Data** atau saya bantu buat skrip keamanan MySQL lengkap (user-role audit, log akses, dll), tinggal bilang ya!
+
* [[Database: Kuliah]]

Latest revision as of 07:00, 21 April 2025

Tujuan Pembelajaran

Setelah mempelajari modul ini, mahasiswa diharapkan mampu:

  • Menjelaskan aspek utama keamanan basis data (CIA: Confidentiality, Integrity, Availability).
  • Menerapkan konfigurasi dan praktik keamanan pada MySQL.
  • Memahami pengelolaan hak akses, enkripsi, dan backup data untuk menjaga keamanan basis data.


Tiga Pilar Keamanan Basis Data (CIA)

Aspek Definisi
Kerahasiaan Menjaga agar data hanya dapat diakses oleh pihak yang berwenang.
Integritas Menjamin bahwa data akurat, konsisten, dan tidak dimodifikasi tanpa izin.
Ketersediaan Menjamin data dan layanan database tersedia saat dibutuhkan.


Kerahasiaan (Confidentiality)

Tujuan:

Melindungi data dari akses tidak sah.

Contoh di MySQL:

1. Membuat pengguna dan memberi hak akses minimum

-* Buat user baru
CREATE USER 'editor'@'localhost' IDENTIFIED BY 'password123';

-* Hanya izinkan SELECT pada tabel mahasiswa
GRANT SELECT ON universitas.mahasiswa TO 'editor'@'localhost';

2. Menghapus hak akses

REVOKE SELECT ON universitas.mahasiswa FROM 'editor'@'localhost';

3. Mengaktifkan autentikasi enkripsi SSL (opsional)

Aktifkan SSL di file config:

[mysqld]
ssl-ca=/etc/mysql/certs/ca.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem


Integritas (Integrity)

Tujuan:

Melindungi data agar tidak diubah/dihapus secara tidak sah atau tidak sengaja.

Contoh di MySQL:

1. Gunakan constraint seperti PRIMARY KEY, FOREIGN KEY, dan CHECK

CREATE TABLE mahasiswa (
    nim VARCHAR(10) PRIMARY KEY,
    nama VARCHAR(100) NOT NULL,
    ipk DECIMAL(3,2) CHECK (ipk BETWEEN 0.00 AND 4.00)
);

2. Gunakan TRIGGER untuk validasi otomatis

DELIMITER //
CREATE TRIGGER before_insert_mahasiswa
BEFORE INSERT ON mahasiswa
FOR EACH ROW
BEGIN
    IF NEW.ipk > 4.00 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'IPK tidak valid';
    END IF;
END;
//
DELIMITER ;

Ketersediaan (Availability)

Tujuan:

Memastikan database tetap bisa diakses saat dibutuhkan, meski ada gangguan.

Strategi:

1. Backup Berkala

mysqldump -u root -p universitas > backup_universitas.sql


2. Restore Data

mysql -u root -p universitas < backup_universitas.sql

3. Monitoring dan Restart Otomatis

Gunakan `systemd` agar MySQL selalu otomatis restart jika gagal:

sudo systemctl enable mysql
sudo systemctl start mysql

4. Monitoring Kesehatan Server

Install dan jalankan MySQLTuner:

sudo apt install mysqltuner
sudo mysqltuner

Kesimpulan

Aspek Implementasi MySQL Ubuntu 24.04
Kerahasiaan Buat user terbatas, grant/revoke, gunakan SSL
Integritas Gunakan constraint, trigger, validasi data
Ketersediaan Backup, monitoring, pemulihan otomatis, konfigurasi systemd


Pranala Menarik