Mulai menggunakan Proksi RDS - Amazon Aurora

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

Mulai menggunakan Proksi RDS

Di bagian berikut ini, Anda dapat menemukan cara menyiapkan dan mengelola Proksi RDS. Anda juga dapat menemukan cara mengatur opsi keamanan terkait. Opsi ini mengontrol siapa saja yang dapat mengakses setiap proksi dan cara setiap proksi terhubung ke instans DB.

Menyiapkan prasyarat jaringan

Menggunakan Proksi RDS mengharuskan Anda memiliki cloud privat virtual (VPC) umum antara klaster DB Aurora dan Proksi RDS. VPC ini harus memiliki minimal dua subnet yang berada di Zona Ketersediaan yang berbeda. Akun Anda dapat memiliki subnet ini atau membagikannya dengan akun lain. Untuk informasi tentang berbagi VPC, lihat Bekerja dengan VPC bersama.

Sumber daya aplikasi klien seperti Amazon EC2, Lambda, atau Amazon ECS bisa berada di VPC yang sama dengan proksi. Atau sumber daya ini bisa berada di VPC terpisah dari proksi. Jika Anda berhasil terhubung ke klaster DB Aurora apa pun, berarti Anda sudah memiliki sumber daya jaringan yang diperlukan.

Mendapatkan informasi tentang subnet Anda

Jika Anda baru memulai dengan Aurora, Anda dapat mempelajari dasar-dasar menghubungkan ke database dengan mengikuti prosedur di. Menyiapkan lingkungan Anda untuk Amazon Aurora Anda juga dapat mengikuti tutorial dalam Memulai dengan Amazon Aurora.

Untuk membuat proxy, Anda harus menyediakan subnet dan VPC tempat proxy beroperasi di dalamnya. Contoh Linux berikut menunjukkan AWS CLI perintah yang memeriksa VPC dan subnet yang dimiliki oleh Anda. Akun AWS Khususnya, Anda meneruskan ID subnet sebagai parameter ketika Anda membuat proksi menggunakan CLI.

aws ec2 describe-vpcs aws ec2 describe-internet-gateways aws ec2 describe-subnets --query '*[].[VpcId,SubnetId]' --output text | sort

Contoh Linux berikut menunjukkan AWS CLI perintah untuk menentukan ID subnet yang sesuai dengan instance tertentu.

Untuk klaster Aurora, cari ID untuk salah satu instans DB terkait terlebih dahulu. Anda dapat mengekstrak ID subnet yang digunakan oleh instans DB tersebut. Untuk melakukannya, periksa kolom bertingkat dalam atribut DBSubnetGroup dan Subnets dan di output deskripsi untuk instans DB. Anda menentukan beberapa atau semua ID subnet tersebut saat menyiapkan proksi untuk server basis data tersebut.

$ # Find the ID of any DB instance in the cluster. $ aws rds describe-db-clusters --db-cluster-identifier my_cluster_id --query '*[].[DBClusterMembers]|[0]|[0][*].DBInstanceIdentifier' --output text
my_instance_id instance_id_2 instance_id_3

Setelah menemukan ID instans DB, periksa VPC terkait untuk menemukan subnetnya. Contoh Linux berikut menunjukkan caranya.

$ #From the DB instance, trace through the DBSubnetGroup and Subnets to find the subnet IDs. $ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0]|[Subnets]|[0]|[*].SubnetIdentifier' --output text
subnet_id_1 subnet_id_2 subnet_id_3 ...
$ #From the DB instance, find the VPC. $ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0].VpcId' --output text
my_vpc_id
$ aws ec2 describe-subnets --filters Name=vpc-id,Values=my_vpc_id --query '*[].[SubnetId]' --output text
subnet_id_1 subnet_id_2 subnet_id_3 subnet_id_4 subnet_id_5 subnet_id_6

Perencanaan untuk kapasitas alamat IP

Proksi RDS secara otomatis menyesuaikan kapasitasnya sesuai kebutuhan berdasarkan ukuran dan jumlah instans DB yang didaftarkan di proksi. Operasi tertentu mungkin juga memerlukan kapasitas proksi tambahan seperti menambah ukuran basis data yang terdaftar atau operasi pemeliharaan Proksi RDS internal. Selama operasi ini, proksi Anda mungkin memerlukan lebih banyak alamat IP untuk menyediakan kapasitas tambahan. Alamat tambahan ini memungkinkan proksi Anda diskalakan tanpa memengaruhi beban kerja Anda. Kurangnya alamat IP kosong di subnet Anda mencegah kenaikan skala proksi. Hal ini dapat menyebabkan latensi kueri yang lebih tinggi atau kegagalan koneksi klien. RDS memberi tahu Anda melalui peristiwa RDS-EVENT-0243 ketika tidak ada cukup alamat IP kosong di subnet Anda. Untuk informasi tentang peristiwa ini, lihat Bekerja dengan peristiwa Proksi RDS.

Berikut adalah jumlah minimum alamat IP yang disarankan untuk dibiarkan kosong di subnet Anda untuk proksi Anda berdasarkan ukuran kelas instans DB.

Kelas instans DB Alamat IP kosong minimum

db.*.xlarge atau lebih kecil

10

db.*.2xlarge

15

db.*.4xlarge

25

db.*.8xlarge

45

db.*.12xlarge

60

db.*.16xlarge

75

db.*.24xlarge

110

Jumlah alamat IP yang direkomendasikan ini adalah perkiraan untuk proksi dengan titik akhir default saja. Proksi dengan titik akhir tambahan atau replika baca mungkin memerlukan lebih banyak alamat IP kosong. Untuk setiap titik akhir tambahan, sebaiknya Anda mencadangkan tiga alamat IP lagi. Untuk setiap replika baca, sebaiknya Anda mencadangkan alamat IP tambahan seperti yang ditentukan dalam tabel berdasarkan ukuran replika baca tersebut.

catatan

Proksi RDS tidak mendukung lebih dari 215 alamat IP di satu VPC.

Misalnya, Anda ingin memperkirakan alamat IP yang diperlukan untuk proksi yang terkait dengan klaster DB Aurora.

Dalam kasus ini, asumsikan hal berikut:

  • Klaster DB Aurora Anda memiliki 1 instans penulis berukuran db.r5.8xlarge dan 1 instans pembaca berukuran db.r5.2xlarge.

  • Proksi yang disematkan ke klaster DB ini memiliki titik akhir default dan 1 titik akhir kustom dengan peran hanya-baca.

Dalam hal ini, proksi memerlukan kira-kira 63 alamat IP kosong (45 untuk instans penulis, 15 untuk instans pembaca, dan 3 untuk titik akhir kustom tambahan).

Menyiapkan kredensi database di AWS Secrets Manager

Untuk setiap proksi yang Anda buat, pertama-tama Anda harus menggunakan layanan Secrets Manager untuk menyimpan kumpulan kredensial nama pengguna dan kata sandi. Anda dapat membuat rahasia Secrets Manager terpisah untuk setiap akun pengguna basis data yang terhubung ke klaster DB Aurora.

Dalam konsol Secrets Manager, Anda dapat membuat rahasia ini dengan nilai untuk kolom username dan password. Dengan melakukannya, proksi dapat terhubung ke pengguna basis data yang sesuai di klaster DB Aurora yang Anda kaitkan dengan proksi. Untuk melakukannya, Anda dapat menggunakan pengaturan Kredensial untuk basis data lain, Kredensial untuk basis data RDS, atau Jenis rahasia lainnya. Masukkan nilai yang sesuai di kolom Nama pengguna dan Kata sandi, dan nilai untuk kolom lain yang wajib diisi. Proksi akan mengabaikan kolom lain seperti Host dan Port jika ada dalam rahasia tersebut. Detail tersebut secara otomatis diisi oleh proksi.

Anda juga dapat memilih Jenis rahasia lainnya. Dalam kasus ini, Anda membuat rahasia dengan kunci bernama username dan password.

Untuk terhubung melalui proksi sebagai pengguna basis data tertentu, pastikan kata sandi yang terkait dengan rahasia cocok dengan kata sandi basis data untuk pengguna tersebut. Jika ada ketidakcocokan, Anda dapat memperbarui rahasia terkait dalam Secrets Manager. Dalam kasus ini, Anda masih dapat terhubung ke akun lain yang memiliki kredensial rahasia dan kata sandi basis data yang cocok.

Saat Anda membuat proxy melalui AWS CLI atau RDS API, Anda menentukan Amazon Resource Names (ARN) dari rahasia yang sesuai. Anda melakukannya untuk semua akun pengguna DB yang dapat diakses proksi. Dalam AWS Management Console, Anda memilih rahasia dengan nama deskriptif mereka.

Untuk petunjuk tentang cara membuat rahasia di Secrets Manager, lihat halaman Membuat rahasia dalam dokumentasi Secrets Manager. Gunakan salah satu teknik berikut:

  • Gunakan Secrets Manager di konsol.

  • Untuk menggunakan CLI untuk membuat rahasia Secrets Manager untuk digunakan oleh Proksi RDS, gunakan perintah seperti berikut.

    aws secretsmanager create-secret --name "secret_name" --description "secret_description" --region region_name --secret-string '{"username":"db_user","password":"db_user_password"}'
  • Anda juga dapat membuat kunci khusus untuk mengenkripsi rahasia Secrets Manager Anda. Perintah berikut menciptakan kunci contoh.

    PREFIX=my_identifier aws kms create-key --description "$PREFIX-test-key" --policy '{ "Id":"$PREFIX-kms-policy", "Version":"2012-10-17", "Statement": [ { "Sid":"Enable IAM User Permissions", "Effect":"Allow", "Principal":{"AWS":"arn:aws:iam::account_id:root"}, "Action":"kms:*","Resource":"*" }, { "Sid":"Allow access for Key Administrators", "Effect":"Allow", "Principal": { "AWS": ["$USER_ARN","arn:aws:iam:account_id::role/Admin"] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource":"*" }, { "Sid":"Allow use of the key", "Effect":"Allow", "Principal":{"AWS":"$ROLE_ARN"}, "Action":["kms:Decrypt","kms:DescribeKey"], "Resource":"*" } ] }'

Misalnya, perintah berikut membuat rahasia Secrets Manager untuk dua pengguna database:

aws secretsmanager create-secret \ --name secret_name_1 --description "db admin user" \ --secret-string '{"username":"admin","password":"choose_your_own_password"}' aws secretsmanager create-secret \ --name secret_name_2 --description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password"}'

Untuk membuat rahasia ini dienkripsi dengan AWS KMS kunci kustom Anda, gunakan perintah berikut:

aws secretsmanager create-secret \ --name secret_name_1 --description "db admin user" \ --secret-string '{"username":"admin","password":"choose_your_own_password"}' --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id aws secretsmanager create-secret \ --name secret_name_2 --description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password"}' --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id

Untuk melihat rahasia yang dimiliki oleh AWS akun Anda, gunakan perintah seperti berikut ini.

aws secretsmanager list-secrets

Saat Anda membuat proksi menggunakan CLI, Anda meneruskan Amazon Resource Name (ARN) dari satu atau beberapa rahasia ke parameter --auth. Contoh Linux berikut menunjukkan cara menyiapkan laporan hanya dengan nama dan ARN dari setiap rahasia yang dimiliki oleh akun Anda AWS . Contoh ini menggunakan parameter --output table yang tersedia di AWS CLI versi 2. Jika Anda menggunakan AWS CLI versi 1, gunakan --output text sebagai gantinya.

aws secretsmanager list-secrets --query '*[].[Name,ARN]' --output table

Untuk memverifikasi bahwa Anda telah menyimpan kredensial yang benar dan dalam format yang benar dalam rahasia, gunakan perintah seperti berikut. Gantikan nama pendek atau ARN rahasia untuk your_secret_name.

aws secretsmanager get-secret-value --secret-id your_secret_name

Output harus mencakup baris yang menampilkan nilai yang dienkode JSON seperti berikut.

"SecretString": "{\"username\":\"your_username\",\"password\":\"your_password\"}",

Menyiapkan AWS Identity and Access Management kebijakan (IAM)

Setelah membuat rahasia di Secrets Manager, Anda dapat membuat kebijakan IAM yang dapat mengakses rahasia tersebut. Untuk informasi umum tentang cara menggunakan IAM, lihat Manajemen identitas dan akses untuk Amazon Aurora.

Tip

Prosedur berikut berlaku jika Anda menggunakan konsol IAM. Jika Anda menggunakan AWS Management Console for RDS, RDS dapat membuat kebijakan IAM untuk Anda secara otomatis. Dalam kasus ini, Anda dapat melewati prosedur berikut.

Untuk membuat kebijakan IAM yang mengakses rahasia Secrets Manager untuk digunakan oleh proksi Anda
  1. Masuk ke konsol IAM. Ikuti proses Buat peran, seperti yang dijelaskan dalam Membuat peran IAM, memilih Membuat peran untuk mendelegasikan izin ke layanan. AWS

    Pilih Layanan AWS untuk Jenis entitas tepercaya. Di bagian Kasus penggunaan, pilih RDS dari menu drop-down Kasus penggunaan untuk layanan AWS . Pilih RDS – Tambahkan Peran ke Basis Data.

  2. Untuk peran baru, lakukan langkah Tambahkan kebijakan sebaris. Gunakan prosedur umum yang sama seperti dalam Mengedit kebijakan IAM. Tempelkan JSON berikut ke dalam kotak teks JSON. Ganti ID akun Anda sendiri. Gantikan AWS Wilayah Anda untukus-east-2. Ganti Amazon Resource Name (ARN) dengan rahasia yang Anda buat, lihat Menentukan kunci KMS dalam pernyataan kebijakan IAM. Untuk kms:Decrypt tindakan, gantikan ARN dari default AWS KMS key atau kunci KMS Anda sendiri. Mana yang Anda gunakan bergantung pada mana yang Anda gunakan untuk mengenkripsi rahasia Secrets Manager.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1", "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] }
  3. Edit kebijakan kepercayaan untuk peran IAM ini. Tempelkan JSON berikut ke dalam kotak teks JSON.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Perintah berikut akan melakukan operasi yang sama melalui AWS CLI.

PREFIX=my_identifier USER_ARN=$(aws sts get-caller-identity --query "Arn" --output text) aws iam create-role --role-name my_role_name \ --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}' ROLE_ARN=arn:aws:iam::account_id:role/my_role_name aws iam put-role-policy --role-name my_role_name \ --policy-name $PREFIX-secret-reader-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1", "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] }

Membuat Proksi RDS

Untuk mengelola koneksi untuk klaster DB, buat proksi. Anda dapat mengaitkan sebuah proksi dengan klaster DB Aurora MySQL atau Aurora PostgreSQL.

Untuk membuat proksi
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di panel navigasi, pilih Proksi.

  3. Pilih Buat proksi.

  4. Pilih semua pengaturan untuk proksi Anda.

    Untuk Konfigurasi proksi, masukkan informasi untuk opsi berikut:

    • Keluarga mesin. Pengaturan ini menentukan protokol jaringan basis data mana yang dikenali proksi ketika menafsirkan lalu lintas jaringan ke dan dari basis data. Untuk Aurora MySQL, pilih MariaDB dan MySQL. Untuk Aurora PostgreSQL, pilih PostgreSQL.

    • ID proksi. Tentukan nama yang unik dalam ID AWS akun Anda dan AWS Wilayah saat ini.

    • Batas waktu koneksi klien idle. Pilih periode waktu saat koneksi klien menjadi idle sebelum proksi menutupnya. Nilai default-nya adalah 1.800 detik (30 menit). Koneksi klien dianggap idle jika aplikasi tidak mengirimkan permintaan baru dalam waktu yang ditentukan setelah permintaan sebelumnya selesai. Koneksi basis data yang mendasarinya akan tetap terbuka dan dikembalikan ke kumpulan koneksi. Oleh karena itu, koneksi dapat digunakan kembali untuk koneksi klien baru.

      Jika Anda ingin proksi secara proaktif menghapus koneksi yang sudah tidak terpakai, kurangi batas waktu koneksi klien idle. Saat beban kerja meningkat, untuk menghemat biaya pembangunan koneksi, tambah batas waktu koneksi klien idle.”

    Untuk Konfigurasi grup target, masukkan informasi untuk opsi berikut:

    • Basis data. Pilih satu klaster DB Aurora yang akan diakses melalui proksi ini. Daftar ini hanya mencakup instans dan klaster DB dengan mesin basis data, versi mesin, dan pengaturan lainnya yang kompatibel. Jika daftar kosong, buat instans atau klaster DB baru yang kompatibel dengan Proksi RDS. Untuk melakukannya, ikuti prosedurnya di Membuat klaster DB Amazon Aurora. Lalu, coba buat proksi lagi.

    • Koneksi maksimum kumpulan koneksi. Tentukan sebuah nilai dari 1 hingga 100. Pengaturan ini merepresentasikan persentase dari nilai max_connections yang dapat digunakan oleh Proksi RDS untuk koneksinya. Jika hanya ingin menggunakan satu proksi dengan instans atau klaster DB ini, Anda dapat mengatur nilai ini ke 100. Untuk detail tentang cara Proksi RDS menggunakan pengaturan ini, lihat MaxConnectionsPersen.

    • Filter penyematan sesi. (Opsional) Opsi ini memungkinkan Anda untuk memaksa Proksi RDS untuk tidak memberi pin untuk jenis status sesi tertentu yang terdeteksi. Tindakan ini menghindari langkah-langkah keamanan default untuk me-multipleks koneksi basis data di seluruh koneksi klien. Saat ini, pengaturan tidak didukung untuk PostgreSQL. Satu-satunya pilihan adalah EXCLUDE_VARIABLE_SETS.

      Mengaktifkan pengaturan ini dapat menyebabkan variabel sesi dari satu koneksi memengaruhi koneksi lain. Hal ini dapat menyebabkan kesalahan atau masalah ketepatan jika kueri Anda bergantung pada nilai variabel sesi yang ditetapkan di luar transaksi saat ini. Pertimbangkan untuk menggunakan opsi ini setelah memastikan bahwa aplikasi Anda sudah bisa berbagi koneksi basis data dengan aman di seluruh koneksi klien.

      Pola berikut bisa dianggap aman:

      • Pernyataan SET di mana tidak ada perubahan pada nilai variabel sesi efektif, yaitu tidak ada perubahan pada variabel sesi.

      • Anda mengubah nilai variabel sesi dan mengeksekusi pernyataan dalam transaksi yang sama.

      Untuk informasi selengkapnya, lihat Menghindari penyematan.

    • Batas waktu peminjaman koneksi. Dalam beberapa kasus, mungkin Anda berharap proksi tersebut sekali-sekali menggunakan semua koneksi basis data yang tersedia. Dalam kasus seperti itu, Anda dapat menentukan durasi proksi harus menunggu koneksi basis data menjadi tersedia sebelum menampilkan kesalahan batas waktu. Anda dapat menentukan periode hingga maksimum lima menit. Pengaturan ini hanya berlaku jika proksi memiliki koneksi terbuka maksimum dan semua koneksi sudah digunakan.

    • Kueri inisialisasi. (Opsional) Anda dapat menentukan satu atau beberapa pernyataan SQL agar proksi berjalan saat membuka setiap koneksi basis data baru. Pengaturan ini biasanya digunakan dengan pernyataan SET untuk memastikan bahwa setiap koneksi memiliki pengaturan yang identik seperti zona waktu dan kumpulan karakter. Untuk beberapa pernyataan, gunakan titik koma sebagai pemisah. Anda juga dapat menyertakan beberapa variabel dalam satu pernyataan SET, seperti SET x=1, y=2.

    Untuk Autentikasi, masukkan informasi untuk opsi berikut:

    • Peran IAM. Pilih peran IAM yang memiliki izin untuk mengakses rahasia Secrets Manager yang Anda pilih sebelumnya. Atau, Anda dapat membuat peran IAM baru dari AWS Management Console.

    • Rahasia Secrets Manager. Pilih setidaknya satu rahasia Secrets Manager terpisah yang berisi kredensial pengguna basis data yang memungkinkan proksi mengakses klaster DB Aurora.

    • Jenis autentikasi klien. Pilih jenis autentikasi yang digunakan proksi untuk koneksi dari klien. Pilihan Anda berlaku untuk semua rahasia Secrets Manager yang Anda kaitkan dengan proksi ini. Jika Anda perlu menentukan jenis otentikasi klien yang berbeda untuk setiap rahasia, maka buat proxy Anda dengan menggunakan AWS CLI atau API sebagai gantinya.

    • Autentikasi IAM. Pilih apakah akan mewajibkan , atau melarang autentikasi IAM untuk koneksi ke proksi Anda. Pilihan Anda berlaku untuk semua rahasia Secrets Manager yang Anda kaitkan dengan proksi ini. Jika Anda perlu menentukan otentikasi IAM yang berbeda untuk setiap rahasia, buat proxy Anda dengan menggunakan AWS CLI atau API sebagai gantinya.

    Untuk Konektivitas, masukkan informasi untuk opsi berikut:

    • Wajibkan Keamanan Lapisan Pengangkutan. Pilih pengaturan ini jika Anda ingin proksi menerapkan TLS/SSL untuk semua koneksi klien. Untuk koneksi terenkripsi atau tidak terenkripsi ke sebuah proksi, proksi menggunakan pengaturan enkripsi yang sama saat membuat koneksi ke basis data acuan.

    • Subnet. Bidang ini telah diisi sebelumnya dengan semua subnet yang terkait dengan VPC Anda. Anda dapat menghapus subnet apa pun yang tidak diperlukan oleh proksi ini. Anda harus membiarkan setidaknya dua subnet.

    Masukkan konfigurasi konektivitas tambahan:

    • Grup keamanan VPC. Pilih grup keamanan VPC yang sudah ada. Atau, Anda dapat membuat grup keamanan baru dari AWS Management Console. Anda harus mengonfigurasi Aturan masuk untuk mengizinkan aplikasi Anda mengakses proksi. Anda juga harus mengonfigurasi Aturan keluar untuk mengizinkan lalu lintas dari target DB Anda.

      catatan

      Grup keamanan ini harus mengizinkan koneksi dari proksi ke basis data. Grup keamanan yang sama digunakan sebagai jalur masuk dari aplikasi ke proksi, dan jalur keluar dari proksi ke basis data. Misalnya, anggap saja Anda menggunakan grup keamanan yang sama untuk basis data dan proksi Anda. Dalam kasus ini, pastikan sumber daya dalam grup keamanan tersebut dapat berkomunikasi dengan sumber daya lain dalam grup keamanan yang sama.

      Saat menggunakan VPC bersama, Anda tidak dapat menggunakan grup keamanan default untuk VPC, atau grup keamanan milik akun lain. Pilih grup keamanan milik akun Anda. Jika belum ada, buat. Untuk informasi selengkapnya tentang batasan ini, lihat Bekerja dengan VPC bersama.

      RDS men-deploy proksi di beberapa Zona Ketersediaan untuk memastikan ketersediaan yang tinggi. Untuk mengaktifkan komunikasi lintas-AZ untuk proksi semacam ini, daftar kontrol akses (ACL) untuk subnet proksi Anda harus mengizinkan jalan keluar khusus port mesin dan semua port untuk masuk. Untuk informasi selengkapnya tentang ACL jaringan, lihat Mengontrol lalu lintas ke subnet menggunakan ACL jaringan. Jika ACL jaringan untuk proksi dan target Anda identik, Anda harus menambahkan aturan masuknya protokol TCP tempat Sumber diatur ke CIDR VPC. Anda juga harus menambahkan aturan keluar protokol TCP khusus port engine di mana Tujuan diatur ke CIDR VPC.

    (Opsional) Masukkan konfigurasi lanjutan:

    • Aktifkan pencatatan log yang disempurnakan. Anda dapat mengaktifkan pengaturan ini untuk memecahkan masalah kompatibilitas proksi atau masalah performa.

      Saat pengaturan ini diaktifkan, RDS Proxy menyertakan informasi terperinci tentang kinerja proxy di lognya. Informasi ini membantu Anda untuk men-debug masalah yang melibatkan perilaku SQL atau performa serta skalabilitas koneksi proksi. Dengan demikian, hanya aktifkan pengaturan ini untuk debugging dan ketika Anda memiliki langkah-langkah keamanan untuk melindungi informasi sensitif apa pun yang muncul di log.

      Untuk meminimalkan overhead yang terkait dengan proksi Anda, Proksi RDS secara otomatis menonaktifkan pengaturan ini 24 jam setelah Anda mengaktifkannya. Aktifkan sementara untuk memecahkan masalah tertentu.

  5. Pilih Buat Proksi.

Untuk membuat proxy dengan menggunakan AWS CLI, panggil perintah create-db-proxy dengan parameter yang diperlukan berikut:

  • --db-proxy-name

  • --engine-family

  • --role-arn

  • --auth

  • --vpc-subnet-ids

Nilai --engine-family ini bersifat peka huruf besar-kecil.

contoh

Untuk Linux, macOS, atau Unix:

aws rds create-db-proxy \ --db-proxy-name proxy_name \ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \ --auth ProxyAuthenticationConfig_JSON_string \ --role-arn iam_role \ --vpc-subnet-ids space_separated_list \ [--vpc-security-group-ids space_separated_list] \ [--require-tls | --no-require-tls] \ [--idle-client-timeout value] \ [--debug-logging | --no-debug-logging] \ [--tags comma_separated_list]

Untuk Windows:

aws rds create-db-proxy ^ --db-proxy-name proxy_name ^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --auth ProxyAuthenticationConfig_JSON_string ^ --role-arn iam_role ^ --vpc-subnet-ids space_separated_list ^ [--vpc-security-group-ids space_separated_list] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeout value] ^ [--debug-logging | --no-debug-logging] ^ [--tags comma_separated_list]

Berikut ini adalah contoh nilai JSON untuk opsi --auth. Contoh ini menerapkan jenis autentikasi klien yang berbeda untuk setiap rahasia.

[ { "Description": "proxy description 1", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789123:secret/1234abcd-12ab-34cd-56ef-1234567890ab", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_SCRAM_SHA_256" }, { "Description": "proxy description 2", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122223333:seret/1234abcd-12ab-34cd-56ef-1234567890cd", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_MD5" }, { "Description": "proxy description 3", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122221111:secret/1234abcd-12ab-34cd-56ef-1234567890ef", "IAMAuth": "REQUIRED" } ]
Tip

Jika Anda belum tahu ID subnet yang akan digunakan untuk parameter --vpc-subnet-ids, lihat Menyiapkan prasyarat jaringan untuk contoh tentang cara menemukannya.

catatan

Grup keamanan ini harus mengizinkan akses ke basis data yang terhubung ke proksi. Grup keamanan yang sama digunakan sebagai jalur masuk dari aplikasi ke proksi, dan jalur keluar dari proksi ke basis data. Misalnya, anggap saja Anda menggunakan grup keamanan yang sama untuk basis data dan proksi Anda. Dalam kasus ini, pastikan sumber daya dalam grup keamanan tersebut dapat berkomunikasi dengan sumber daya lain dalam grup keamanan yang sama.

Saat menggunakan VPC bersama, Anda tidak dapat menggunakan grup keamanan default untuk VPC, atau grup keamanan milik akun lain. Pilih grup keamanan milik akun Anda. Jika belum ada, buat. Untuk informasi selengkapnya tentang batasan ini, lihat Bekerja dengan VPC bersama.

Untuk membuat pengaitan yang tepat untuk proksi, Anda juga dapat menggunakan perintah register-db-proxy-targets. Tentukan nama grup target default. Proksi RDS secara otomatis membuat grup target dengan nama ini saat Anda membuat setiap proksi.

aws rds register-db-proxy-targets --db-proxy-name value [--target-group-name target_group_name] [--db-instance-identifiers space_separated_list] # rds db instances, or [--db-cluster-identifiers cluster_id] # rds db cluster (all instances)

Untuk membuat proksi RDS, panggil operasi Amazon RDS API CreateDBProxy. Anda melewati parameter dengan struktur AuthConfigdata.

Proksi RDS secara otomatis membuat grup target bernama default saat Anda membuat setiap proksi. Anda mengaitkan Aurora DB cluster dengan grup target dengan memanggil fungsi registerDB. ProxyTargets

Melihat Proksi RDS

Setelah membuat satu atau beberapa proksi RDS, Anda dapat melihat semuanya. Dengan begitu, Anda dapat memeriksa detail konfigurasinya dan memilih mana yang akan dimodifikasi, dihapus, dan sebagainya.

Agar aplikasi basis data dapat menggunakan proksi, Anda harus menyediakan titik akhir proksi dalam string koneksi.

Untuk melihat proksi
  1. Masuk ke AWS Management Console dan buka konsol Amazon RDS di https://console.aws.amazon.com/rds/.

  2. Di sudut kanan atas AWS Management Console, pilih AWS Wilayah tempat Anda membuat Proxy RDS.

  3. Di panel navigasi, pilih Proksi.

  4. Pilih nama proksi RDS untuk menampilkan detailnya.

  5. Pada halaman detail, bagian Grup target menunjukkan bagaimana proksi dikaitkan dengan klaster DB Aurora. Anda dapat mengikuti tautan ke halaman grup target default untuk melihat detail selengkapnya tentang pengaitan antara proksi dan basis data. Halaman ini adalah tempat Anda melihat pengaturan yang Anda tentukan saat membuat proksi. Ini termasuk persentase koneksi maksimum, batas waktu peminjaman koneksi, keluarga mesin, dan filter penyematan sesi.

Untuk melihat proksi Anda menggunakan CLI, gunakan perintah describe-db-proxies. Secara default, ini menampilkan semua proxy yang dimiliki oleh akun Anda AWS . Untuk melihat detail dari satu proksi, masukkan namanya dengan parameter --db-proxy-name.

aws rds describe-db-proxies [--db-proxy-name proxy_name]

Untuk melihat informasi lain yang terkait dengan proksi, gunakan perintah berikut.

aws rds describe-db-proxy-target-groups --db-proxy-name proxy_name aws rds describe-db-proxy-targets --db-proxy-name proxy_name

Gunakan urutan perintah berikut untuk melihat detail selengkapnya tentang hal-hal yang terkait dengan proksi:

  1. Untuk mendapatkan daftar proksi, jalankan describe-db-proxies.

  2. Untuk menampilkan parameter koneksi seperti persentase maksimum koneksi yang dapat digunakan oleh proksi, jalankan --db-proxy-name describe-db-proxy-target-groups. Gunakan nama proksi sebagai nilai parameter.

  3. Untuk melihat detail klaster DB Aurora yang terkait dengan grup target yang ditampilkan, jalankan describe-db-proxy-targets.

Untuk melihat proksi Anda menggunakan RDS API, gunakan operasi DescribeDBProxies. Operasi ini akan menampilkan nilai dari jenis data DBProxy.

Untuk melihat detail pengaturan koneksi untuk proxy, gunakan pengidentifikasi proxy dari nilai pengembalian ini dengan operasi DescribeDB ProxyTarget Groups. Ia mengembalikan nilai-nilai tipe data ProxyTargetGrup DB.

Untuk melihat instance RDS atau cluster Aurora DB yang terkait dengan proxy, gunakan operasi DescribeDB. ProxyTargets Ia mengembalikan nilai-nilai dari tipe ProxyTarget data DB.

Terhubung ke basis data melalui Proksi RDS

Anda dapat terhubung ke klaster DB Aurora atau klaster yang menggunakan Aurora Serverless v2 melalui proksi seperti halnya Anda terhubung langsung ke basis data. Perbedaan utamanya adalah Anda menentukan titik akhir proksi, bukan titik akhir klaster. Secara default, semua koneksi proksi memiliki kemampuan baca/tulis dan menggunakan instans penulis. Jika Anda biasanya menggunakan titik akhir pembaca untuk koneksi hanya-baca, Anda dapat membuat titik akhir hanya-baca tambahan untuk proksi. Anda dapat menggunakan titik akhir tersebut dengan cara yang sama. Untuk informasi selengkapnya, lihat Ikhtisar titik akhir proksi.

Terhubung ke sebuah proksi menggunakan autentikasi native

Gunakan langkah berikut untuk terhubung ke proksi menggunakan autentikasi native:

  1. Temukan titik akhir proksi. Di AWS Management Console, Anda dapat menemukan titik akhir pada halaman detail untuk proxy yang sesuai. Dengan AWS CLI, Anda dapat menggunakan perintah deskripsi-db-proxies. Contoh berikut menunjukkan caranya.

    # Add --output text to get output as a simple tab-separated list. $ aws rds describe-db-proxies --query '*[*].{DBProxyName:DBProxyName,Endpoint:Endpoint}' [ [ { "Endpoint": "the-proxy.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy" }, { "Endpoint": "the-proxy-other-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-other-secret" }, { "Endpoint": "the-proxy-rds-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-rds-secret" }, { "Endpoint": "the-proxy-t3.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-t3" } ] ]
  2. Tentukan titik akhir sebagai parameter host dalam string koneksi untuk aplikasi klien Anda. Misalnya, tentukan titik akhir proksi sebagai nilai untuk opsi mysql -h atau opsi psql -h.

  3. Masukkan nama dan kata sandi pengguna basis data yang sama seperti biasanya.

Terhubung ke sebuah proksi menggunakan autentikasi IAM

Saat Anda menggunakan autentikasi IAM dengan Proksi RDS, siapkan pengguna basis data Anda untuk melakukan autentikasi dengan nama dan kata sandi pengguna reguler. Autentikasi IAM berlaku untuk Proksi RDS yang mengambil kredensial nama dan kata sandi pengguna dari Secrets Manager. Koneksi dari Proksi RDS ke basis data acuan tidak melewati IAM.

Untuk terhubung ke Proksi RDS menggunakan autentikasi IAM, gunakan prosedur koneksi umum yang sama seperti autentikasi IAM dengan klaster DB Aurora. Untuk informasi umum tentang cara menggunakan IAM, lihat Keamanan dalam Amazon Aurora.

Perbedaan utama dalam penggunaan IAM untuk Proksi RDS meliputi:

  • Anda tidak dapat mengonfigurasi setiap pengguna basis data dengan plugin otorisasi. Pengguna basis data masih memiliki nama dan kata sandi pengguna reguler dalam basis data. Anda dapat menyiapkan rahasia Secrets Manager yang berisi nama dan kata sandi pengguna ini, dan mengotorisasi Proksi RDS untuk mengambil kredensial dari Secrets Manager.

    Autentikasi IAM berlaku untuk koneksi antara program klien Anda dan proksi. Proksi kemudian melakukan autentikasi ke basis data menggunakan kredensial nama dan kata sandi pengguna yang diambil dari Secrets Manager.

  • Anda menentukan titik akhir proksi, bukan instans, klaster, atau titik akhir pembaca. Untuk detail tentang titik akhir proksi, lihat Menghubungkan ke klaster DB menggunakan autentikasi IAM.

  • Dalam kasus autentikasi IAM basis data langsung, Anda secara selektif memilih pengguna basis data dan mengonfigurasinya untuk diidentifikasi dengan plugin autentikasi khusus. Anda kemudian dapat terhubung ke pengguna tersebut menggunakan autentikasi IAM.

    Dalam kasus penggunaan proksi, Anda memberi proksi Rahasia yang berisi nama pengguna dan kata sandi pengguna tertentu (autentikasi native). Anda kemudian terhubung ke proksi menggunakan autentikasi IAM. Di sini, Anda melakukannya dengan membuat token autentikasi dengan titik akhir proksi, bukan titik akhir basis data. Anda juga menggunakan nama pengguna yang cocok dengan salah satu nama pengguna untuk rahasia yang Anda berikan.

  • Pastikan Anda menggunakan Keamanan Lapisan Pengangkutan (TLS)/Lapisan Soket Aman (SSL) saat terhubung ke sebuah proksi menggunakan autentikasi IAM.

Anda dapat memberi pengguna tertentu akses ke proksi dengan mengubah kebijakan IAM. Berikut contohnya.

"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"

Pertimbangan untuk terhubung ke sebuah proksi dengan PostgreSQL

Untuk PostgreSQL, saat klien memulai koneksi ke basis data PostgreSQL, pesan startup akan dikirimkan. Pesan ini berisi pasangan nama parameter dan string nilai. Untuk detailnya, lihat StartupMessage dalam PostgreSQL message formats dalam dokumentasi PostgreSQL.

Saat terhubung melalui proksi RDS, pesan startup bisa menyertakan parameter yang dikenal saat ini sebagai berikut:

  • user

  • database

Pesan startup juga bisa menyertakan parameter runtime tambahan berikut:

Untuk informasi selengkapnya tentang pesan PostgreSQL, lihat Frontend/Backend protocol dalam dokumentasi PostgreSQL.

Untuk PostgreSQL, jika Anda menggunakan JDBC, sebaiknya lakukan tindakan berikut untuk menghindari penyematan:

  • Atur parameter koneksi JDBC assumeMinServerVersion ke setidaknya 9.0 untuk menghindari penyematan. Tindakan ini dapat mencegah driver JDBC melakukan perjalanan roundtrip ekstra selama startup koneksi saat menjalankan SET extra_float_digits = 3.

  • Atur parameter koneksi JDBC ApplicationName ke any/your-application-name untuk menghindari penyematan. Tindakan ini dapat mencegah driver JDBC melakukan roundtrip ekstra selama startup koneksi saat menjalankan SET application_name = "PostgreSQL JDBC Driver". Perhatikan bahwa parameter JDBC adalah ApplicationName, tetapi parameter PostgreSQL StartupMessage adalah application_name.

Untuk informasi selengkapnya, lihat Menghindari penyematan. Untuk informasi selengkapnya tentang cara terhubung menggunakan JDBC, lihat Connecting to the database dalam dokumentasi PostgreSQL.