Keamanan dengan Amazon Aurora PostgreSQL - 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 PostgreSQL

Untuk gambaran umum tentang keamanan Aurora, lihat. Keamanan dalam Amazon Aurora Anda dapat mengelola keamanan untuk Amazon Aurora PostgreSQL pada beberapa level yang berbeda:

  • Untuk mengendalikan siapa yang dapat melakukan tindakan manajemen Amazon RDS di klaster DB dan instans DB Aurora PostgreSQL, Anda menggunakan AWS Identity and Access Management (IAM). IAM menangani autentikasi identitas pengguna sebelum pengguna dapat mengakses layanan. IAM juga menangani otorisasi, yaitu, apakah pengguna diizinkan untuk melakukan apa yang mereka coba lakukan. Autentikasi database IAM adalah metode autentikasi tambahan yang dapat dipilih saat Anda membuat klaster DB Aurora PostgreSQL. Untuk informasi selengkapnya, lihat Manajemen identitas dan akses untuk Amazon Aurora.

    Jika Anda menggunakan IAM dengan klaster DB Aurora PostgreSQL, masuk ke AWS Management Console dengan kredensial IAM Anda terlebih dahulu, sebelum membuka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  • Pastikan untuk membuat klaster DB Aurora di cloud privat virtual (VPC) berdasarkan layanan Amazon VPC. Untuk mengendalikan perangkat dan instans Amazon EC2 mana yang dapat membuka koneksi ke titik akhir dan port instans DB untuk klaster Aurora DB di VPC, gunakan grup keamanan VPC. Anda dapat membuat titik akhir dan koneksi port ini menggunakan Lapisan Soket Aman (SSL). Selain itu, aturan firewall di perusahaan Anda dapat mengendalikan perangkat yang berjalan di perusahaan Anda untuk 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 DB yang digunakan oleh klaster DB Aurora PostgreSQL Anda. Dengan penghunian VPC default, klaster DB berjalan di perangkat keras bersama. Dengan penghunian VPC dedicated, klaster DB berjalan di instans perangkat keras khusus. Kelas instans DB kinerja yang dapat melonjak hanya mendukung penghunian VPC default. Kelas instans DB kinerja yang dapat melonjak mencakup kelas instans DB db.t3 dan db.t4g. Semua kelas instans DB Aurora PostgreSQL lainnya mendukung penghunian VPC default dan khusus.

    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.

  • Guna memberikan izin ke basis data PostgreSQL yang berjalan di klaster DB Amazon Aurora, Anda dapat menggunakan pendekatan umum yang sama seperti instans PostgreSQL yang berdiri sendiri. Perintah seperti CREATE ROLE, ALTER ROLE, GRANT, dan REVOKE bekerja sama seperti dalam basis data on-premise, seperti mengubah langsung basis data, skema, dan tabel.

    PostgreSQL mengelola hak istimewa dengan menggunakan peran. Peran rds_superuser adalah peran yang paling istimewa di klaster DB Aurora PostgreSQL. Peran ini dibuat secara otomatis, dan diberikan kepada pengguna yang membuat klaster DB (akun pengguna master, postgres secara default). Untuk mempelajari selengkapnya, lihat Memahami peran dan izin PostgreSQL.

Semua versi Aurora PostgreSQL yang tersedia, termasuk versi 10, 11, 12, 13, 14, dan rilis yang lebih tinggi mendukung Salted Challenge Response Authentication Mechanism (SCRAM) untuk kata sandi sebagai alternatif untuk pencernaan pesan (MD5). Kami menyarankan Anda menggunakan SCRAM karena lebih aman daripada MD5. Untuk informasi selengkapnya, termasuk cara memigrasi kata sandi pengguna basis data dari MD5 ke SCRAM, lihat Menggunakan SCRAM untuk enkripsi kata sandi PostgreSQL.

Mengamankan data Aurora PostgreSQL dengan SSL/TLS

Amazon RDS mendukung enkripsi Lapisan Soket Aman (SSL) dan Keamanan Lapisan Pengangkutan (TLS) untuk klaster DB Aurora PostgreSQL. Dengan SSL/TLS, Anda dapat mengenkripsi koneksi antara aplikasi dan klaster DB Aurora PostgreSQL. Anda juga dapat memaksa semua koneksi ke klaster DB Aurora PostgreSQL Anda untuk menggunakan SSL/TLS. Amazon Aurora PostgreSQL mendukung Keamanan Lapisan Pengangkutan (TLS) versi 1.1 dan 1.2. Kami merekomendasikan menggunakan TLS 1.2 untuk koneksi terenkripsi. Kami telah menambahkan dukungan untuk TLSv1.3 dari versi Aurora PostgreSQL berikut:

  • Versi 15.3 dan semua yang lebih tinggi

  • Versi 14.8 dan versi 14 yang lebih tinggi

  • Versi 13.11 dan versi 13 yang lebih tinggi

  • Versi 12.15 dan versi 12 yang lebih tinggi

  • Versi 11.20 dan versi 11 yang lebih tinggi

Untuk informasi umum tentang dukungan SSL/TLS dan basis data PostgreSQL, lihat Dukungan SSL dalam dokumentasi PostgreSQL. Untuk informasi tentang menggunakan koneksi SSL/TLS melalui JDBC, lihat Mengonfigurasi klien dalam dokumentasi PostgreSQL.

Dukungan SSL/TLS tersedia di semua Wilayah AWS untuk Aurora PostgreSQL. Amazon RDS membuat sertifikat SSL/TLS untuk klaster DB Aurora PostgreSQL Anda saat klaster DB dibuat. Jika Anda mengaktifkan verifikasi sertifikat SSL/TLS, maka sertifikat SSL/TLS mencakup titik akhir klaster DB sebagai Nama Umum (CN) untuk sertifikat SSL/TLS untuk melindungi dari serangan spoofing.

Untuk menghubungkan ke klaster DB Aurora PostgreSQL melalui SSL/TLS
  1. Unduh sertifikatnya.

    Untuk informasi tentang mengunduh sertifikat, lihat .

  2. Impor sertifikat ke dalam sistem operasi Anda.

  3. Hubungkan ke klaster DB Aurora PostgreSQL melalui SSL/TLS.

    Saat Anda menghubungkan menggunakan SSL/TLS, klien Anda dapat memilih untuk memverifikasi rantai sertifikat atau tidak. Jika parameter koneksi Anda menentukan sslmode=verify-ca atau sslmode=verify-full, maka klien Anda mengharuskan sertifikat RDS CA berada di penyimpanan kepercayaan atau direferensikan di URL koneksi. Persyaratan ini untuk memverifikasi rantai sertifikat yang menandatangani sertifikat basis data Anda.

    Ketika klien, seperti psql atau JDBC, dikonfigurasikan dengan dukungan SSL/TLS, klien mencoba untuk terhubung ke basis data dengan SSL/TLS secara default terlebih dahulu. Jika klien tidak dapat terhubung dengan SSL/TLS, maka akan kembali menghubungkan tanpa SSL/TLS. Secara default, opsi sslmode untuk klien berbasis JDBC dan libpq diatur ke prefer.

    Gunakan parameter sslrootcert untuk mereferensikan sertifikat, misalnya sslrootcert=rds-ssl-ca-cert.pem.

Berikut ini adalah contoh penggunaan psql untuk terhubung ke klaster DB Aurora PostgreSQL.

$ psql -h testpg.cdhmuqifdpib.us-east-1.rds.amazonaws.com -p 5432 \ "dbname=testpg user=testuser sslrootcert=rds-ca-2015-root.pem sslmode=verify-full"

Memerlukan klaster DB Aurora PostgreSQL melalui SSL/TLS

Anda dapat meminta koneksi tersebut ke klaster DB Aurora PostgreSQL Anda dengan SSL/TLS menggunakan parameter rds.force_ssl. Secara default, parameter rds.force_ssl diatur ke 0 (nonaktif). Anda dapat mengatur parameter rds.force_ssl ke 1 (aktif) untuk meminta SSL/TLS koneksi ke klaster DB Anda. Memperbarui parameter rds.force_ssl juga mengatur parameter ssl PostgreSQL ke 1 (aktif) dan mengubah file pg_hba.conf klaster DB Anda untuk mendukung konfigurasi SSL/TLS baru.

Anda dapat mengatur nilai parameter rds.force_ssl dengan memperbarui grup parameter klaster DB untuk klaster DB Anda. Jika grup parameter klaster DB bukan default, dan parameter ssl sudah diatur ke 1 saat Anda mengatur rds.force_ssl ke 1, Anda tidak perlu melakukan boot ulang klaster DB Anda. Jika tidak, Anda harus melakukan boot ulang klaster DB Anda agar perubahan dapat diterapkan. Untuk informasi selengkapnya tentang grup parameter, lihat Bekerja dengan grup parameter.

Saat rds.force_ssl parameter diatur ke 1 untuk klaster DB, Anda melihat output yang serupa dengan yang berikut ini saat Anda terhubung, menunjukkan bahwa SSL/TLS sekarang diperlukan:

$ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser psql (9.3.12, server 9.4.4) WARNING: psql major version 9.3, server major version 9.4. Some psql features might not work. SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. postgres=>

Menentukan status koneksi SSL/TLS

Status terenkripsi dari koneksi Anda ditunjukkan pada banner logon saat Anda terhubung ke klaster DB.

Password for user master: psql (9.3.12) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help.   postgres=>

Anda juga dapat memuat ekstensi sslinfo, lalu memanggil fungsi ssl_is_used() untuk menentukan apakah SSL/TLS digunakan. Fungsi akan kembali t jika koneksi menggunakan SSL/TLS, jika tidak akan menghasilkan f.

postgres=> create extension sslinfo; CREATE EXTENSION postgres=> select ssl_is_used(); ssl_is_used --------- t (1 row)

Anda dapat menggunakan perintah select ssl_cipher() untuk menentukan cipher SSL/TLS:

postgres=> select ssl_cipher(); ssl_cipher -------------------- DHE-RSA-AES256-SHA (1 row)

Jika Anda mengaktifkan set rds.force_ssl dan memulai ulang klaster DB, koneksi non-SSL ditolak dengan pesan berikut ini:

$ export PGSSLMODE=disable $ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser psql: FATAL: no pg_hba.conf entry for host "host.ip", user "someuser", database "postgres", SSL off $

Untuk informasi tentang opsi sslmode, lihat Fungsi kontrol koneksi basis data dalam dokumentasi PostgreSQL.

Mengonfigurasi cipher suite untuk koneksi ke klaster DB Aurora PostgreSQL

Dengan menggunakan cipher suite yang dapat dikonfigurasi, Anda dapat memiliki kontrol lebih besar atas keamanan koneksi basis data. Anda dapat menentukan daftar cipher suite yang ingin Anda izinkan untuk mengamankan koneksi TLS/SSL 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 membantu mencegah penggunaan cipher yang tidak aman atau usang.

Suite cipher yang dapat dikonfigurasi didukung di Aurora PostgreSQL versi 11.8 dan lebih tinggi.

Untuk menentukan daftar cipher yang diizinkan untuk mengenkripsi koneksi, modifikasi parameter klaster ssl_ciphers. Atur parameter ssl_ciphers ke string nilai cipher yang dipisahkan koma dalam grup parameter klaster menggunakan AWS Management Console, AWS CLI, atau RDS API. Untuk mengatur parameter klaster, lihat Mengubah parameter dalam grup parameter klaster DB.

Tabel berikut menunjukkan cipher yang didukung untuk versi mesin Aurora PostgreSQL yang valid.

Versi mesin Aurora PostgreSQL Cipher yang didukung

9.6, 10.20 dan lebih rendah, 11.15 dan lebih rendah, 12.10 dan lebih rendah, 13.6 dan lebih rendah

  • 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-ECDSA-AES256-SHA

  • ECDHE-ECDSA-AES256-GCM-SHA384

  • ECDHE-RSA-AES256-SHA384

  • ECDHE-RSA-AES128-SHA

  • ECDHE-RSA-AES128-SHA256

  • ECDHE-RSA-AES128-GCM-SHA256

  • ECDHE-RSA-AES256-SHA

  • ECDHE-RSA-AES256-GCM-SHA384

10.21, 11.16, 12.11, 13.7, 14.3, dan 14.4

  • 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-ECDSA-AES256-SHA

  • ECDHE-ECDSA-AES256-GCM-SHA384

  • ECDHE-RSA-AES256-SHA384

  • ECDHE-RSA-AES128-SHA

  • ECDHE-RSA-AES128-GCM-SHA256

  • ECDHE-RSA-AES256-SHA

  • ECDHE-RSA-AES256-GCM-SHA384

  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

  • TLS_RSA_WITH_AES_256_GCM_SHA384

  • TLS_RSA_WITH_AES_256_CBC_SHA

  • TLS_RSA_WITH_AES_128_GCM_SHA256

  • TLS_RSA_WITH_AES_128_CBC_SHA

  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

10.22 dan lebih tinggi, 11.17 dan lebih tinggi, 12.12 dan lebih tinggi, 13.8 dan lebih tinggi, 14.5 dan lebih tinggi, serta 15.2 dan lebih tinggi

  • 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-ECDSA-AES256-SHA

  • ECDHE-ECDSA-AES256-GCM-SHA384

  • ECDHE-RSA-AES256-SHA384

  • ECDHE-RSA-AES128-SHA

  • ECDHE-RSA-AES128-SHA256

  • ECDHE-RSA-AES128-GCM-SHA256

  • ECDHE-RSA-AES256-SHA

  • ECDHE-RSA-AES256-GCM-SHA384

  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

  • TLS_RSA_WITH_AES_256_GCM_SHA384

  • TLS_RSA_WITH_AES_256_CBC_SHA

  • TLS_RSA_WITH_AES_128_GCM_SHA256

  • TLS_RSA_WITH_AES_128_CBC_SHA256

  • TLS_RSA_WITH_AES_128_CBC_SHA

  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

15.3, 14.8, 13.11, 12.15, dan 11.20

  • 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-ECDSA-AES256-SHA

  • ECDHE-ECDSA-AES256-GCM-SHA384

  • ECDHE-RSA-AES256-SHA384

  • ECDHE-RSA-AES128-SHA

  • ECDHE-RSA-AES128-SHA256

  • ECDHE-RSA-AES128-GCM-SHA256

  • ECDHE-RSA-AES256-SHA

  • ECDHE-RSA-AES256-GCM-SHA384

  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

  • TLS_RSA_WITH_AES_256_GCM_SHA384

  • TLS_RSA_WITH_AES_256_CBC_SHA

  • TLS_RSA_WITH_AES_128_GCM_SHA256

  • TLS_RSA_WITH_AES_128_CBC_SHA256

  • TLS_RSA_WITH_AES_128_CBC_SHA

  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

  • TLS_AES_128_GCM_SHA256

  • TLS_AES_256_GCM_SHA384

Anda juga dapat menggunakan perintah CLI ddescribe-engine-default-cluster-parameters untuk menentukan cipher suite 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 PostgreSQL 11.

aws rds describe-engine-default-cluster-parameters --db-parameter-group-family aurora-postgresql11 ...some output truncated... { "ParameterName": "ssl_ciphers", "Description": "Sets the list of allowed TLS ciphers to be used on secure connections.", "Source": "engine-default", "ApplyType": "dynamic", "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,TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "IsModifiable": true, "MinimumEngineVersion": "11.8", "SupportedEngineModes": [ "provisioned" ] }, ...some output truncated...

Parameter default ssl_ciphers ke semua suite cipher yang diizinkan. Untuk informasi selengkapnya tentang cipher, lihat variabel ssl_ciphers dalam dokumentasi PostgreSQL.