Keamanan RDS: Enkripsi dan Grup Parameter
Enkripsi RDS saat tersimpan dengan KMS, kendalikan enkripsi tingkat koneksi dengan grup parameter, dan amankan dengan autentikasi IAM.
Keamanan RDS: Enkripsi dan Grup Parameter adalah pelajaran AWS Solutions Architect gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AWS Solutions Architect, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Enkripsi RDS Saat Tidak Digunakan
RDS mendukung enkripsi saat tidak digunakan menggunakan AWS Key Management Service (KMS). Saat Anda mengaktifkan enkripsi ketika membuat instans DB, semua data pada volume EBS dasar, pencadangan otomatis, snapshot, dan Read Replicas dienkripsi menggunakan kunci KMS yang ditentukan.
Enkripsi harus diaktifkan saat pembuatan—Anda tidak dapat mengenkripsi instans tidak terenkripsi yang sudah ada secara langsung. Solusinya adalah membuat snapshot yang tidak terenkripsi, menyalinnya dengan enkripsi diaktifkan, lalu memulihkan dari snapshot terenkripsi tersebut. Kunci KMS dapat berupa kunci yang dikelola AWS atau Customer-Managed Key (CMK) untuk kontrol dan audit tambahan.
# Create an encrypted RDS instance
aws rds create-db-instance \
--db-instance-identifier mydb-encrypted \
--engine mysql \
--db-instance-class db.t3.micro \
--master-username admin \
--master-user-password MyPass123! \
--allocated-storage 20 \
--storage-encrypted \
--kms-key-id arn:aws:kms:us-east-1:123456789:key/my-key-idMengenkripsi Instans RDS yang Sudah Ada dan Belum Terenkripsi
Karena Anda tidak dapat mengaktifkan enkripsi pada instans yang sudah ada, ikuti jalur migrasi berikut:
- Buat snapshot manual dari instans yang belum terenkripsi
- Salin snapshot tersebut dan aktifkan enkripsi selama proses penyalinan dengan menentukan kunci KMS
- Pulihkan instans DB baru dari snapshot yang telah dienkripsi
- Perbarui endpoint aplikasi Anda agar mengarah ke instans baru
- Hapus instans lama yang belum terenkripsi
Pendekatan ini menyebabkan sedikit waktu henti, kecuali Anda menggunakan DMS untuk menjaga instans baru yang terenkripsi tetap tersinkronisasi sebelum pengalihan.
# Copy snapshot with encryption enabled
aws rds copy-db-snapshot \
--source-db-snapshot-identifier mydb-unencrypted-snap \
--target-db-snapshot-identifier mydb-encrypted-snap \
--kms-key-id alias/aws/rdsEnkripsi Saat Transit dengan SSL/TLS
RDS mengenkripsi data saat transit menggunakan SSL/TLS. Setiap mesin basis data menyediakan sertifikat CA yang dapat diunduh dan digunakan oleh driver klien untuk memverifikasi identitas server. Untuk mewajibkan koneksi SSL, konfigurasikan mesin basis data agar menolak koneksi yang tidak terenkripsi.
Untuk MySQL, tetapkan parameter require_secure_transport = ON di grup parameter. Untuk PostgreSQL, tetapkan ssl = 1 dan, jika diperlukan, rds.force_ssl = 1 untuk sepenuhnya menolak koneksi non-SSL. Banyak driver basis data Java dan Python juga menerima parameter string koneksi sslmode=require.
# Connect to RDS MySQL over SSL
mysql -h mydb.abcd1234.us-east-1.rds.amazonaws.com \
-u admin -p \
--ssl-ca=rds-ca-2019-root.pem \
--ssl-verify-server-certGrup Parameter: Apa Itu?
Grup parameter adalah kumpulan bernama dari pengaturan konfigurasi mesin basis data yang Anda lampirkan ke instans RDS. Grup ini setara dengan mengedit my.cnf pada MySQL atau postgresql.conf pada PostgreSQL, tetapi dikelola oleh AWS dan diberi versi berdasarkan keluarga mesin basis data.
AWS menyediakan grup parameter default untuk setiap versi mesin basis data, tetapi pengaturannya tidak dapat diedit. Untuk menyesuaikan parameter, buat grup parameter khusus, ubah parameter yang diinginkan, lalu kaitkan grup tersebut dengan instans DB Anda. Perubahan pada parameter statis memerlukan mulai ulang; parameter dinamis langsung berlaku.
# Create a custom parameter group
aws rds create-db-parameter-group \
--db-parameter-group-name my-mysql8-params \
--db-parameter-group-family mysql8.0 \
--description 'Custom MySQL 8.0 parameters'Mengubah Pengaturan Grup Parameter
Setelah membuat grup parameter khusus, Anda dapat mengubah parameter individual menggunakan perintah CLI modify-db-parameter-group atau konsol. Parameter memiliki metode penerapan: segera (berlaku tanpa mulai ulang) atau menunggu mulai ulang (baru berlaku setelah instans dimulai ulang berikutnya).
Parameter penting yang perlu Anda ketahui untuk ujian: max_connections (membatasi koneksi bersamaan), innodb_buffer_pool_size (ukuran tembolok dalam memori MySQL), log_bin_trust_function_creators (mengizinkan fungsi tersimpan yang menulis ke log biner), dan rds.force_ssl (memaksa SSL untuk PostgreSQL).
# Force SSL in a PostgreSQL parameter group
aws rds modify-db-parameter-group \
--db-parameter-group-name my-postgres-params \
--parameters 'ParameterName=rds.force_ssl,ParameterValue=1,ApplyMethod=immediate'Grup Opsi untuk Fitur Tambahan
Grup opsi mirip dengan grup parameter, tetapi mengontrol fitur tambahan untuk mesin basis data, bukan penyetelan konfigurasi. Grup ini terutama digunakan dengan Oracle dan SQL Server untuk mengaktifkan fitur seperti Oracle Application Express (APEX), SQL Server Transparent Data Encryption (TDE), atau autentikasi Active Directory SQL Server.
Setiap opsi dalam grup opsi dapat memiliki pengaturannya sendiri. Grup opsi diberi versi berdasarkan keluarga mesin basis data dan harus dikaitkan dengan instans DB. Sebagian besar mesin sumber terbuka (MySQL, PostgreSQL, MariaDB) jarang memerlukan grup opsi khusus.
Autentikasi Basis Data IAM
RDS mendukung autentikasi basis data IAM untuk mesin MySQL dan PostgreSQL. Sebagai pengganti nama pengguna dan kata sandi statis, aplikasi Anda mengambil peran IAM lalu membuat token autentikasi sementara (berlaku selama 15 menit) menggunakan perintah AWS CLI generate-db-auth-token atau pemanggilan SDK.
Manfaatnya mencakup tidak adanya kata sandi basis data yang berlaku lama, rotasi kredensial otomatis melalui kebijakan IAM, serta kontrol akses terpusat. Fitur ini mengharuskan Anda mengaktifkan --enable-iam-database-authentication pada instans dan membuat pengguna basis data yang dipetakan ke peran IAM.
# Generate an RDS IAM auth token
aws rds generate-db-auth-token \
--hostname mydb.abcd1234.us-east-1.rds.amazonaws.com \
--port 3306 \
--username mydbuser \
--region us-east-1Integrasi Secrets Manager dengan RDS
AWS Secrets Manager dapat menyimpan dan merotasi kata sandi utama RDS serta kredensial aplikasi secara otomatis. Saat rotasi diaktifkan, Secrets Manager memanggil fungsi Lambda yang memperbarui kata sandi basis data dan menyimpan nilai baru dalam secret—aplikasi Anda mengambil nilai secret terbaru melalui API Secrets Manager, sehingga selalu memiliki kredensial yang valid.
Saat membuat instans RDS melalui konsol, Anda dapat memilih pengelolaan kredensial utama oleh Secrets Manager. Dengan demikian, Anda tidak perlu menulis kata sandi secara langsung di dalam kode atau variabel lingkungan.
# Retrieve RDS credentials from Secrets Manager
aws secretsmanager get-secret-value \
--secret-id rds!db-1234abcd-5678-efgh-ijkl-mnopqrstuvwx \
--query SecretString \
--output text | python3 -m json.toolKontrol VPC dan Grup Keamanan
Instans RDS berjalan di dalam VPC dan menggunakan grup subnet DB untuk menentukan subnet mana (di beberapa zona ketersediaan) yang dapat digunakan sebagai tempat instans. Praktik terbaiknya adalah menempatkan RDS di subnet privat tanpa akses internet langsung.
Grup keamanan mengontrol alamat IP dan grup keamanan lain yang dapat mengakses port DB (misalnya TCP 3306 untuk MySQL). Grup keamanan tingkat aplikasi seharusnya menjadi satu-satunya sumber yang diizinkan pada grup keamanan RDS, sehingga hak akses paling rendah pada tingkat jaringan dapat diterapkan. Jangan pernah mengonfigurasi 0.0.0.0/0 (semua lalu lintas) sebagai aturan masuk pada grup keamanan RDS.
Pemantauan Lanjutan dan Log Audit
Pemantauan Lanjutan memublikasikan metrik tingkat OS (CPU, memori, sistem file, I/O disk) ke Log CloudWatch setiap 1–60 detik, sehingga memberikan perincian yang lebih tinggi daripada metrik CloudWatch default setiap 60 detik. Fitur ini menggunakan agen yang berjalan pada host DB dan tersedia untuk semua mesin, kecuali mode pencerminan SQL Server.
Log audit basis data (log kueri umum dan log kueri lambat untuk MySQL; pgaudit untuk PostgreSQL) dapat dipublikasikan ke Log CloudWatch untuk analisis kepatuhan. Aktifkan fitur ini melalui grup parameter, lalu konfigurasikan ekspor log di konsol RDS pada bagian Ekspor log.
# Enable PostgreSQL logs export to CloudWatch
aws rds modify-db-instance \
--db-instance-identifier mydb \
--cloudwatch-logs-export-configuration 'EnableLogTypes=[postgresql,upgrade]' \
--apply-immediatelyRingkasan Praktik Terbaik Keamanan
Praktik terbaik keamanan RDS utama untuk ujian SAA-C03:
- Aktifkan enkripsi saat tidak digunakan dengan CMK KMS saat membuat instans
- Wajibkan SSL/TLS saat transit melalui pengaturan grup parameter
- Tempatkan instans di subnet privat dengan grup keamanan yang ketat
- Gunakan autentikasi basis data IAM atau Secrets Manager untuk menghindari kata sandi statis
- Aktifkan CloudTrail untuk mencatat panggilan API RDS dan Log CloudWatch untuk log audit basis data
- Gunakan aturan AWS Config (misalnya
rds-instance-public-access-check) untuk mendeteksi kesalahan konfigurasi
Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda telah mempelajari bahwa enkripsi RDS saat tidak digunakan menggunakan KMS dan harus diaktifkan saat pembuatan, grup parameter mengontrol konfigurasi mesin basis data termasuk penerapan SSL/TLS saat transit, serta autentikasi basis data IAM dan Secrets Manager menghilangkan kebutuhan akan kata sandi basis data statis. Selanjutnya, kita akan membahas tabel, item, dan desain kunci primer DynamoDB.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Keamanan RDS: Enkripsi dan Grup Parameter” gratis?
Ya — teks lengkap “Keamanan RDS: Enkripsi dan Grup Parameter” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AWS Solutions Architect, upgrade ke CoddyKit PRO. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Keamanan RDS: Enkripsi dan Grup Parameter”?
Enkripsi RDS saat tersimpan dengan KMS, kendalikan enkripsi tingkat koneksi dengan grup parameter, dan amankan dengan autentikasi IAM. Kamu berlatih AWS Solutions Architect dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AWS Solutions Architect?
Tidak diperlukan pengalaman sebelumnya. AWS Solutions Architect di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Keamanan RDS: Enkripsi dan Grup Parameter” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AWS Solutions Architect ini?
Ya. Setiap pelajaran AWS Solutions Architect menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mesin RDS dan Kelas Instans
- Multi-AZ dan Pencadangan Otomatis
- Read Replica untuk Penskalaan Pembacaan
- Keamanan RDS: Enkripsi dan Grup Parameter