Keamanan dengan Amazon Aurora MySQL - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Keamanan dengan Amazon Aurora MySQL

Keamanan untuk Amazon Aurora MySQL dikelola di tiga tingkat:

  • Untuk mengontrol siapa yang dapat melakukan tindakan pengelolaan Amazon RDS pada cluster DB MySQL Aurora dan instans DB, Anda menggunakan (IAM). AWS Identity and Access Management Saat Anda terhubung AWS menggunakan kredensyal IAM, AWS akun Anda harus memiliki kebijakan IAM yang memberikan izin yang diperlukan untuk melakukan operasi pengelolaan Amazon RDS. Untuk informasi selengkapnya, lihat Manajemen identitas dan akses untuk Amazon Aurora

    Jika Anda menggunakan IAM untuk mengakses konsol Amazon RDS, pastikan untuk masuk terlebih dahulu AWS Management Console dengan kredensyal pengguna IAM Anda. Kemudian, buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  • Pastikan untuk membuat klaster DB Aurora MySQL di cloud privat virtual (VPC) berdasarkan layanan Amazon VPC. Untuk mengontrol perangkat dan instans Amazon EC2 mana yang dapat membuka koneksi ke titik akhir dan port instans DB untuk klaster DB Aurora MySQL di VPC, gunakan grup keamanan VPC. Anda dapat membuat titik akhir dan koneksi port ini menggunakan Keamanan Lapisan Pengangkutan (TLS). Selain itu, aturan firewall di perusahaan Anda dapat mengontrol apakah perangkat yang berjalan di perusahaan Anda dapat membuka koneksi ke instans DB. Untuk informasi selengkapnya tentang VPC, lihat Amazon VPC dan Amazon Aurora.

    Penghunian VPC yang didukung tergantung pada kelas instans yang digunakan oleh klaster DB Aurora MySQL Anda. Dengan penghunian VPC default, VPC berjalan di perangkat keras bersama. Dengan penghunian VPC dedicated, VPC berjalan pada instans perangkat keras khusus. Kelas instans DB performa yang dapat melonjak hanya mendukung penghunian VPC default. Kelas instans DB performa yang dapat melonjak mencakup kelas instans db.t2, db.t3, dan db.t4g DB. Semua kelas instans Aurora MySQL DB lainnya mendukung penghunian VPC default dan khusus.

    catatan

    Kami menyarankan penggunaan kelas instans DB T hanya untuk server pengembangan dan pengujian, atau server non-produksi lainnya. Untuk detail selengkapnya tentang kelas instans T, lihat Menggunakan kelas instans T untuk pengembangan dan pengujian.

    Untuk informasi selengkapnya tentang kelas instans, lihat Kelas instans DB Aurora. Untuk informasi selengkapnya tentang penghunian VPC default dan dedicated, lihat Instans khusus dalam Panduan Pengguna Amazon Elastic Compute Cloud.

  • Untuk mengautentikasi login dan izin untuk klaster DB Amazon Aurora MySQL, Anda dapat mengambil salah satu dari pendekatan berikut, atau kombinasi dari pendekatan tersebut:

    • Anda dapat menggunakan pendekatan yang sama dengan instans MySQL mandiri.

      Perintah seperti CREATE USER, RENAME USER, GRANT, REVOKE, dan SET PASSWORD beroperasi dalam basis data on-premise seperti halnya memodifikasi langsung tabel skema basis data. Untuk informasi selengkapnya, lihat Access control and account management dalam dokumentasi MySQL.

    • Anda juga dapat menggunakan autentikasi basis data IAM.

      Dengan autentikasi basis data IAM, Anda mengautentikasi klaster DB Anda dengan menggunakan pengguna IAM atau peran IAM dan token autentikasi. Token autentikasi adalah nilai unik yang dihasilkan dengan menggunakan proses penandatanganan Signature Versi 4. Dengan menggunakan autentikasi basis data IAM, Anda dapat menggunakan kredensyal yang sama untuk mengontrol akses ke AWS sumber daya dan basis data Anda. Untuk informasi selengkapnya, lihat Autentikasi basis data IAM.

catatan

Untuk informasi selengkapnya, lihat Keamanan dalam Amazon Aurora.

Hak akses pengguna master Amazon Aurora MySQL

Saat Anda membuat instans DB Amazon Aurora MySQL, pengguna master memiliki hak default yang tercantum di Hak akses akun pengguna master.

Untuk menyediakan layanan manajemen untuk setiap klaster DB, pengguna admin dan rdsadmin dibuat saat klaster DB dibuat. Mencoba menghapus, mengubah nama, mengubah kata sandi, atau mengubah hak akses untuk akun rdsadmin akan mengakibatkan kesalahan.

Dalam klaster DB Aurora MySQL versi 2, pengguna admin dan rdsadmin dibuat ketika klaster DB dibuat. Dalam klaster DB Aurora MySQL versi 3, pengguna admin, rdsadmin, dan rds_superuser_role dibuat.

penting

Kami sangat menyarankan agar Anda tidak menggunakan pengguna master secara langsung di aplikasi Anda. Sebagai gantinya, ikuti praktik terbaik menggunakan pengguna basis data yang dibuat dengan hak akses minimal yang diperlukan untuk aplikasi Anda.

Untuk manajemen klaster DB Aurora MySQL, perintah kill dan kill_query standar telah dibatasi. Sebagai gantinya, gunakan perintah Amazon RDS rds_kill dan rds_kill_query untuk menghentikan sesi pengguna atau kueri di instans DB Aurora MySQL.

catatan

Enkripsi instans basis data dan snapshot tidak didukung untuk wilayah Tiongkok (Ningxia).

Menggunakan TLS dengan klaster DB Aurora MySQL

Klaster DB Amazon Aurora MySQL mendukung koneksi Keamanan Lapisan Pengangkutan (TLS) dari aplikasi yang menggunakan proses dan kunci publik yang sama seperti instans DB RDS for MySQL.

Amazon RDS membuat sertifikat TLS dan menginstal sertifikat tersebut pada instans DB saat Amazon RDS menyediakan instans. Sertifikat ini ditandatangani oleh otoritas sertifikat. Sertifikat TLS mencakup titik akhir instans DB sebagai Nama Umum (CN) untuk sertifikat TLS agar melindungi dari serangan spoofing. Oleh karena itu, Anda hanya dapat menggunakan titik akhir klaster DB untuk terhubung ke klaster DB menggunakan TLS jika klien Anda mendukung Nama Alternatif Subjek (SAN). Jika tidak, Anda harus menggunakan titik akhir instans milik instans penulis.

Untuk informasi tentang mengunduh sertifikat, lihat .

Kami merekomendasikan Driver AWS JDBC sebagai klien yang mendukung SAN dengan TLS. Untuk informasi selengkapnya tentang Driver AWS JDBC dan petunjuk lengkap untuk menggunakannya, lihat repositori Amazon Web Services (AWS) JDBC Driver. GitHub

Mewajibkan koneksi TLS ke klaster DB Aurora MySQL

Anda dapat mewajibkan agar semua koneksi pengguna ke klaster DB Aurora MySQL Anda menggunakan TLS dengan parameter klaster DB require_secure_transport. Secara default, parameter require_secure_transport diatur ke OFF. Anda dapat mengatur parameter require_secure_transport ke ON untuk mewajibkan TLS untuk koneksi ke klaster DB Anda.

Anda dapat mengatur nilai parameter require_secure_transport dengan memperbarui grup parameter klaster DB untuk klaster DB Anda. Anda tidak perlu mem-boot ulang klaster DB Anda agar perubahan dapat diterapkan. Untuk informasi selengkapnya tentang grup parameter, lihat Menggunakan grup parameter.

catatan

Parameter require_secure_transport tersedia untuk Aurora MySQL versi 2 dan 3. Anda dapat mengatur parameter ini dalam grup parameter klaster DB kustom. Parameter ini tidak tersedia dalam grup parameter instans DB.

Saat parameter require_secure_transport diatur ke ON untuk klaster DB, klien basis data dapat terhubung dengannya jika klien basis data ini dapat membuat koneksi terenkripsi. Jika tidak, pesan kesalahan seperti yang berikut ini ditampilkan kepada klien:

MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

Versi TLS untuk Aurora MySQL

Aurora MySQL mendukung Keamanan Lapisan Pengangkutan (TLS) versi 1.0, 1.1, 1.2, 1.2, dan 1.3. Mulai dari Aurora MySQL versi 3.04.0 dan lebih tinggi, Anda dapat menggunakan protokol TLS 1.3 untuk mengamankan koneksi Anda. Tabel berikut menunjukkan dukungan TLS untuk versi Aurora MySQL.

Versi Aurora MySQL TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3 Default

Aurora MySQL versi 2

Didukung Didukung

Didukung

Tidak Support Semua versi TLS yang didukung

Aurora MySQL versi 3 (di bawah 3.04.0)

Didukung Didukung Didukung Tidak Support Semua versi TLS yang didukung

Aurora MySQL versi 3 (3.04.0 dan di atas)

Tidak didukung Tidak didukung Didukung Didukung Semua versi TLS yang didukung
penting

Jika Anda menggunakan grup parameter kustom untuk klaster Aurora MySQL Anda dengan versi 2 dan versi yang lebih rendah dari 3.04.0, sebaiknya gunakan TLS 1.2 karena TLS 1.0 dan 1.1 kurang aman. Edisi komunitas MySQL 8.0.26 dan Aurora MySQL 3.03 dan versi minornya menghentikan dukungan untuk TLS versi 1.1 dan 1.0.

Edisi komunitas MySQL 8.0.28 dan Aurora MySQL versi 3.04.0 dan lebih tinggi yang kompatibel tidak mendukung TLS 1.1 dan TLS 1.0. Jika Anda menggunakan Aurora MySQL versi 3.04.0 dan yang lebih tinggi, jangan atur protokol TLS ke 1.0 dan 1.1 di grup parameter kustom Anda.

Untuk Aurora MySQL versi 3.04.0 dan yang lebih tinggi, pengaturan default-nya adalah TLS 1.3 dan TLS 1.2.

Anda dapat menggunakan parameter klaster DB tls_version untuk menunjukkan versi protokol yang diizinkan. Parameter klien serupa ada untuk sebagian besar alat klien atau driver basis data. Beberapa klien lama mungkin tidak mendukung versi TLS yang lebih baru. Secara default, klaster DB mencoba menggunakan versi protokol TLS tertinggi yang diizinkan oleh konfigurasi server dan klien.

Atur parameter klaster DB tls_version ke salah satu nilai berikut:

  • TLSv1.3

  • TLSv1.2

  • TLSv1.1

  • TLSv1

Anda juga dapat mengatur parameter tls_version sebagai string daftar dipisahkan koma. Jika Anda ingin menggunakan protokol TLS 1.2 dan TLS 1.0, parameter tls_version harus menyertakan semua protokol dari protokol terendah hingga protokol tertinggi. Dalam hal ini, tls_version ditetapkan sebagai:

tls_version=TLSv1,TLSv1.1,TLSv1.2

Untuk informasi tentang memodifikasi parameter dalam grup parameter klaster DB, lihat Mengubah parameter dalam grup parameter klaster DB. Jika Anda menggunakan AWS CLI untuk memodifikasi parameter cluster tls_version DB, ApplyMethod harus diatur kepending-reboot. Jika metode aplikasinya adalah pending-reboot, perubahan parameter diterapkan setelah Anda menghentikan dan mengaktifkan ulang klaster DB yang terkait dengan grup parameter.

Mengonfigurasi cipher suite untuk koneksi ke klaster DB Aurora MySQL

Dengan menggunakan cipher suite yang dapat dikonfigurasi, Anda dapat memiliki kontrol lebih besar atas keamanan koneksi basis data Anda. Anda dapat menentukan daftar cipher suite yang ingin Anda izinkan untuk mengamankan koneksi TLS klien ke basis data Anda. Dengan cipher suite yang dapat dikonfigurasi, Anda dapat mengontrol enkripsi koneksi yang diterima server basis data Anda. Melakukan hal ini akan mencegah penggunaan cipher yang tidak aman atau usang.

Cipher suite yang dapat dikonfigurasi didukung di Aurora MySQL versi 3 dan Aurora MySQL versi 2. Untuk menentukan daftar cipher TLS 1.2, TLS 1.1, atau TLS 1.0 yang diizinkan untuk mengenkripsi koneksi, modifikasi parameter klaster ssl_cipher. Atur parameter ssl_cipher dalam grup parameter klaster menggunakan AWS Management Console, AWS CLI, atau API RDS.

Atur parameter ssl_cipher ke string nilai cipher yang dipisahkan koma untuk versi TLS Anda. Untuk aplikasi klien, Anda dapat menentukan cipher yang akan digunakan untuk koneksi terenkripsi dengan menggunakan opsi --ssl-cipher saat menghubungkan ke basis data. Untuk informasi selengkapnya tentang melakukan koneksi ke basis data Anda, lihat Menghubungkan ke klaster DB Amazon Aurora MySQL.

Mulai dari Aurora MySQL versi 3.04.0 dan lebih tinggi, Anda dapat menentukan cipher suite TLS 1.3. Untuk menentukan cipher suite TLS 1.3 yang diizinkan, ubah parameter tls_ciphersuites dalam grup parameter Anda. TLS 1.3 telah mengurangi jumlah cipher suite yang tersedia karena perubahan dalam konvensi penamaan yang menghapus mekanisme pertukaran kunci dan sertifikat yang digunakan. Atur tls_ciphersuites ke string nilai cipher dipisahkan koma untuk TLS 1.3.

Tabel berikut menunjukkan cipher yang didukung bersama dengan protokol enkripsi TLS dan versi mesin Aurora MySQL yang valid untuk setiap cipher.

CipherProtokol enkripsiVersi Aurora MySQL yang didukung

DHE-RSA-AES128-SHA

TLS 1.03.01.0 dan lebih tinggi, semua di bawah 2.11.0

DHE-RSA-AES128-SHA256

TLS 1.23.01.0 dan lebih tinggi, semua di bawah 2.11.0

DHE-RSA-AES128-GCM-SHA256

TLS 1.23.01.0 dan lebih tinggi, semua di bawah 2.11.0

DHE-RSA-AES256-SHA

TLS 1.03.03.0 dan lebih rendah, semua di bawah 2.11.0

DHE-RSA-AES256-SHA256

TLS 1.23.01.0 dan lebih tinggi, semua di bawah 2.11.0

DHE-RSA-AES256-GCM-SHA384

TLS 1.23.01.0 dan lebih tinggi, semua di bawah 2.11.0

ECDHE-RSA-AES128-SHA

TLS 1.03.01.0 dan lebih tinggi, 2.09.3 dan lebih tinggi, 2.10.2 dan lebih tinggi

ECDHE-RSA-AES128-SHA256

TLS 1.23.01.0 dan lebih tinggi, 2.09.3 dan lebih tinggi, 2.10.2 dan lebih tinggi

ECDHE-RSA-AES128-GCM-SHA256

TLS 1.23.01.0 dan lebih tinggi, 2.09.3 dan lebih tinggi, 2.10.2 dan lebih tinggi

ECDHE-RSA-AES256-SHA

TLS 1.03.01.0 dan lebih tinggi, 2.09.3 dan lebih tinggi, 2.10.2 dan lebih tinggi

ECDHE-RSA-AES256-SHA384

TLS 1.23.01.0 dan lebih tinggi, 2.09.3 dan lebih tinggi, 2.10.2 dan lebih tinggi

ECDHE-RSA-AES256-GCM-SHA384

TLS 1.23.01.0 dan lebih tinggi, 2.09.3 dan lebih tinggi, 2.10.2 dan lebih tinggi

TLS_AES_128_GCM_SHA256

TLS 1.33.04.0 dan lebih tinggi

TLS_AES_256_GCM_SHA384

TLS 1.33.04.0 dan lebih tinggi

TLS_CHACHA20_POLY1305_SHA256

TLS 1.33.04.0 dan lebih tinggi
catatan

Cipher DHE-RSA hanya didukung oleh versi Aurora MySQL sebelum 2.11.0. Versi 2.11.0 dan lebih tinggi mendukung cipher ECDHE saja.

Untuk informasi tentang memodifikasi parameter dalam grup parameter klaster DB, lihat Mengubah parameter dalam grup parameter klaster DB. Jika Anda menggunakan CLI untuk memodifikasi parameter klaster DB ssl_cipher, pastikan untuk mengatur ApplyMethod ke pending-reboot. Jika metode aplikasinya adalah pending-reboot, perubahan parameter diterapkan setelah Anda menghentikan dan mengaktifkan ulang klaster DB yang terkait dengan grup parameter.

Anda juga dapat menggunakan perintah describe-engine-default-cluster-parameter CLI untuk menentukan rangkaian sandi mana yang saat ini didukung untuk keluarga grup parameter tertentu. Contoh berikut menunjukkan cara mendapatkan nilai yang diizinkan untuk parameter klaster ssl_cipher untuk Aurora MySQL versi 2.

aws rds describe-engine-default-cluster-parameters --db-parameter-group-family aurora-mysql5.7 ...some output truncated... { "ParameterName": "ssl_cipher", "ParameterValue": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384,ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384", "Description": "The list of permissible ciphers for connection encryption.", "Source": "system", "ApplyType": "static", "DataType": "list", "AllowedValues": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384,ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384", "IsModifiable": true, "SupportedEngineModes": [ "provisioned" ] }, ...some output truncated...

Untuk informasi selengkapnya tentang cipher, lihat variabel ssl_cipher dalam dokumentasi MySQL. Untuk informasi selengkapnya tentang format cipher suite, lihat openssl-ciphers list format dan dokumentasi openssl-ciphers string format di situs web OpenSSL.

Mengenkripsi koneksi ke klaster DB Aurora MySQL

Untuk mengenkripsi koneksi menggunakan klien mysql default, luncurkan klien mysql menggunakan parameter --ssl-ca untuk merujuk ke kunci publik, misalnya:

Untuk MySQL 5.7 dan 8.0:

mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com --ssl-ca=full_path_to_CA_certificate --ssl-mode=VERIFY_IDENTITY

Untuk MySQL 5.6:

mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com --ssl-ca=full_path_to_CA_certificate --ssl-verify-server-cert

Ganti full_path_to_CA_certificate dengan jalur lengkap ke sertifikat Otoritas Sertifikat (CA) Anda. Untuk informasi tentang mengunduh sertifikat, lihat .

Anda dapat mewajibkan koneksi TLS untuk akun pengguna tertentu. Misalnya, Anda dapat menggunakan salah satu pernyataan berikut, bergantung pada versi MySQL Anda, untuk mewajibkan koneksi TLS pada encrypted_user akun pengguna.

Untuk MySQL 5.7 dan 8.0:

ALTER USER 'encrypted_user'@'%' REQUIRE SSL;

Untuk MySQL 5.6:

GRANT USAGE ON *.* TO 'encrypted_user'@'%' REQUIRE SSL;

Saat Anda menggunakan Proksi RDS, Anda terhubung ke titik akhir proksi, bukan titik akhir klaster biasa. Anda dapat menjadikan SSL/TLS wajib atau opsional untuk koneksi ke proksi, dengan cara yang sama seperti untuk koneksi langsung ke klaster DB Aurora. Untuk informasi tentang menggunakan Proksi RDS, lihat Menggunakan Proksi Amazon RDS untuk Aurora.

catatan

Untuk informasi selengkapnya tentang koneksi TLS dengan MySQL, lihat dokumentasi MySQL.