Lapisan Soket Aman Oracle - Layanan Basis Data Relasional Amazon

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

Lapisan Soket Aman Oracle

Untuk mengaktifkan SSL enkripsi RDS untuk instance Oracle DB, tambahkan opsi Oracle ke grup SSL opsi yang terkait dengan instans DB. Amazon RDS menggunakan port kedua, seperti yang dipersyaratkan oleh Oracle, untuk SSL koneksi. Pendekatan ini memungkinkan teks yang jelas dan komunikasi SSL -terenkripsi terjadi pada saat yang sama antara instans DB dan *Plus. SQL Misalnya, Anda dapat menggunakan port dengan komunikasi teks yang jelas untuk berkomunikasi dengan sumber daya lain di dalam VPC sementara menggunakan port dengan komunikasi SSL -terenkripsi untuk berkomunikasi dengan sumber daya di luar. VPC

catatan

Anda dapat menggunakan salah satu SSL atau Native Network Encryption (NNE) yang sama RDS untuk instance Oracle DB, tetapi tidak keduanya. Jika Anda menggunakan SSL enkripsi, pastikan untuk mematikan enkripsi koneksi lainnya. Untuk informasi selengkapnya, lihat Enkripsi jaringan asli Oracle.

SSL/TLSdan tidak lagi NNE menjadi bagian dari Oracle Advanced Security. RDSUntuk Oracle, Anda dapat menggunakan SSL enkripsi dengan semua edisi berlisensi dari versi database berikut:

  • Oracle Database 21c (21.0.0)

  • Oracle Database 19c (19.0.0)

TLSversi untuk opsi Oracle SSL

Amazon RDS untuk Oracle mendukung Transport Layer Security (TLS) versi 1.0 dan 1.2. Saat Anda menambahkan SSL opsi Oracle baru, atur SQLNET.SSL_VERSION secara eksplisit ke nilai yang valid. Nilai-nilai berikut diizinkan untuk pengaturan opsi ini:

  • "1.0"— Klien dapat terhubung ke instans DB menggunakan TLS versi 1.0 saja. Untuk SSL opsi Oracle yang ada, SQLNET.SSL_VERSION diatur ke "1.0" secara otomatis. Anda dapat mengubah pengaturan bila diperlukan.

  • "1.2"— Klien dapat terhubung ke instans DB hanya menggunakan TLS 1.2.

  • "1.2 or 1.0"— Klien dapat terhubung ke instans DB menggunakan TLS 1.2 atau 1.0.

Cipher suite untuk opsi Oracle SSL

Amazon RDS untuk Oracle mendukung beberapa SSL cipher suite. Secara default, SSL opsi Oracle dikonfigurasi untuk menggunakan SSL_RSA_WITH_AES_256_CBC_SHA cipher suite. Untuk menentukan cipher suite yang berbeda untuk digunakan melalui SSL koneksi, gunakan pengaturan SQLNET.CIPHER_SUITE opsi.

Anda dapat menentukan beberapa nilai untukSQLNET.CIPHER_SUITE. Teknik ini berguna jika Anda memiliki link database antara instans DB Anda dan memutuskan untuk memperbarui cipher suite Anda.

Tabel berikut merangkum SSL dukungan RDS untuk Oracle di semua edisi Oracle Database 19c dan 21c.

Suite Cipher (. SQLNET CIPHER_SUITE) TLSdukungan versi (SQLNET. SSL_VERSION) FIPSdukungan RAMPPatuh Fed
SSL_ _ RSA WITH _ AES _256_ CBC _ SHA (default) 1.0 dan 1.2 Ya Tidak
SSL_ _ RSA WITH _ AES CBC _256_ _ SHA256 1.2 Ya Tidak
SSL_ _ RSA WITH _ AES GCM _256_ _ SHA384 1.2 Ya Tidak
TLS_ _ ECDHE _ RSA WITH _ AES GCM _256_ _ SHA384 1.2 Ya Ya
TLS_ _ ECDHE _ RSA WITH _ AES GCM _128_ _ SHA256 1.2 Ya Ya
TLS_ _ ECDHE _ RSA WITH _ AES CBC _256_ _ SHA384 1.2 Ya Ya
TLS_ _ ECDHE _ RSA WITH _ AES CBC _128_ _ SHA256 1.2 Ya Ya
TLS_ _ ECDHE _ RSA WITH _ AES CBC _256_ _ SHA 1.2 Ya Ya
TLS_ _ ECDHE _ RSA WITH _ AES CBC _128_ _ SHA 1.2 Ya Ya

FIPSdukungan

RDSuntuk Oracle memungkinkan Anda untuk menggunakan standar Federal Information Processing Standard (FIPS) untuk 140-2. FIPS140-2 adalah standar pemerintah Amerika Serikat yang mendefinisikan persyaratan keamanan modul kriptografi. Anda mengaktifkan FIPS standar dengan mengatur FIPS.SSLFIPS_140 TRUE untuk SSL opsi Oracle. Ketika FIPS 140-2 dikonfigurasi untukSSL, pustaka kriptografi mengenkripsi data antara klien dan instance untuk Oracle DB. RDS

Klien harus menggunakan cipher suite yang -compliant. FIPS Saat membuat koneksi, klien dan RDS untuk instans Oracle DB menegosiasikan cipher suite mana yang akan digunakan saat mengirimkan pesan bolak-balik. Tabel di Cipher suite untuk opsi Oracle SSL menunjukkan suite SSL cipher FIPS -compliant untuk setiap versi. TLS Untuk informasi selengkapnya, lihat pengaturan database Oracle FIPS 140-2 dalam dokumentasi Oracle Database.

Menambahkan SSL opsi

Untuk menggunakannyaSSL, instans DB RDS untuk Oracle Anda harus dikaitkan dengan grup opsi yang menyertakan SSL opsi.

Untuk menambahkan SSL opsi ke grup opsi
  1. Buat grup opsi baru atau identifikasi grup opsi yang ada yang dapat ditambahi opsi SSL.

    Untuk informasi tentang pembuatan grup opsi, lihat Membuat grup opsi.

  2. Tambahkan opsi SSL ke grup opsi.

    Jika Anda ingin menggunakan hanya FIPS -verified cipher suite untuk SSL koneksi, atur opsi ke. FIPS.SSLFIPS_140 TRUE Untuk informasi tentang FIPS standar, lihatFIPSdukungan.

    Untuk informasi tentang menambahkan opsi ke grup opsi, lihat Menambahkan opsi ke grup opsi.

  3. Buat instans Oracle DB baru RDS dan kaitkan grup opsi dengannya, atau modifikasi instance RDS untuk Oracle DB untuk mengaitkan grup opsi dengannya.

    Untuk informasi tentang cara membuat instans DB, lihat Membuat instans DB Amazon RDS.

    Untuk informasi tentang cara memodifikasi instans DB, lihat Memodifikasi instans DB Amazon RDS.

Untuk menambahkan SSL opsi ke grup opsi
  1. Buat grup opsi baru atau identifikasi grup opsi yang ada yang dapat ditambahi opsi SSL.

    Untuk informasi tentang pembuatan grup opsi, lihat Membuat grup opsi.

  2. Tambahkan opsi SSL ke grup opsi.

    Tentukan pengaturan opsi berikut:

    • Port— Nomor SSL port

    • VpcSecurityGroupMemberships— Grup VPC keamanan yang opsinya diaktifkan

    • SQLNET.SSL_VERSION— TLS Versi yang dapat digunakan klien untuk terhubung ke instans DB

    Misalnya, AWS CLI perintah berikut menambahkan SSL opsi ke grup opsi bernamaora-option-group.

    contoh

    Untuk Linux, macOS, atau Unix:

    aws rds add-option-to-option-group --option-group-name ora-option-group \ --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'

    Untuk Windows:

    aws rds add-option-to-option-group --option-group-name ora-option-group ^ --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'
  3. Buat instans Oracle DB baru RDS dan kaitkan grup opsi dengannya, atau modifikasi instance RDS untuk Oracle DB untuk mengaitkan grup opsi dengannya.

    Untuk informasi tentang cara membuat instans DB, lihat Membuat instans DB Amazon RDS.

    Untuk informasi tentang cara memodifikasi instans DB, lihat Memodifikasi instans DB Amazon RDS.

Mengkonfigurasi SQL *Plus untuk digunakan SSL dengan instance RDS for Oracle DB

Sebelum Anda dapat terhubung ke instans RDS untuk Oracle DB yang menggunakan SSL opsi Oracle, Anda harus SQL mengkonfigurasi*Plus sebelum menghubungkan.

catatan

Untuk mengizinkan akses ke instans DB dari klien yang sesuai, pastikan bahwa grup keamanan Anda dikonfigurasi dengan benar. Untuk informasi selengkapnya, lihat Mengontrol akses dengan grup keamanan. Juga, instruksi ini untuk SQL *Plus dan klien lain yang langsung menggunakan rumah Oracle. Untuk JDBC koneksi, lihatMenyiapkan SSL koneksi melalui JDBC.

Untuk SQL mengkonfigurasi*Plus untuk digunakan SSL untuk terhubung ke instans RDS for Oracle DB
  1. Menetapkan variabel lingkungan ORACLE_HOME ke lokasi direktori Oracle home Anda.

    Path ke direktori Oracle home Anda bergantung pada instalasi Anda. Contoh berikut menetapkan variabel lingkungan ORACLE_HOME.

    prompt>export ORACLE_HOME=/home/user/app/user/product/19.0.0/dbhome_1

    Untuk informasi tentang pengaturan variabel lingkungan Oracle, lihat SQL*Plus variabel lingkungan dalam dokumentasi Oracle, dan lihat juga panduan instalasi Oracle untuk sistem operasi Anda.

  2. Menambahkan $ORACLE_HOME/lib ke variabel lingkungan LD_LIBRARY_PATH.

    Berikut ini adalah contoh yang menetapkan LD_ LIBRARY _ variabel PATH lingkungan.

    prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
  3. Buat direktori untuk dompet Oracle di $ORACLE_HOME/ssl_wallet.

    Berikut ini adalah contoh yang membuat direktori dompet Oracle.

    prompt>mkdir $ORACLE_HOME/ssl_wallet
  4. Unduh file certificate bundle .pem yang berfungsi untuk semua Wilayah AWS dan letakkan file di direktori ssl_wallet. Untuk informasi, lihat .

  5. Di direktori $ORACLE_HOME/network/admin, ubah atau buat file tnsnames.ora dan sertakan entri berikut.

    net_service_name = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPS) (HOST = endpoint) (PORT = ssl_port_number) ) ) (CONNECT_DATA = (SID = database_name) ) (SECURITY = (SSL_SERVER_CERT_DN = "C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=endpoint") ) )
  6. Di direktori yang sama, ubah atau buat file sqlnet.ora dan sertakan parameter berikut.

    catatan

    Untuk berkomunikasi dengan entitas melalui koneksi TLS aman, Oracle memerlukan dompet dengan sertifikat yang diperlukan untuk otentikasi. Anda dapat menggunakan ORAPKI utilitas Oracle untuk membuat dan memelihara dompet Oracle, seperti yang ditunjukkan pada langkah 7. Untuk informasi selengkapnya, lihat Menyiapkan dompet Oracle menggunakan ORAPKI dokumentasi Oracle.

    WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = $ORACLE_HOME/ssl_wallet))) SSL_CLIENT_AUTHENTICATION = FALSE SSL_VERSION = 1.0 SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA) SSL_SERVER_DN_MATCH = ON
    catatan

    Anda dapat menetapkan SSL_VERSION ke nilai yang lebih tinggi jika instans DB Anda mendukungnya.

  7. Jalankan perintah berikut untuk membuat dompet Oracle.

    prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only
  8. Ekstrak setiap sertifikat dalam file paket .pem ke dalam file .pem terpisah menggunakan utilitas OS.

  9. Tambahkan setiap sertifikat ke dompet Anda menggunakan perintah orapki terpisah, mengganti certificate-pem-file dengan nama file absolut dari file .pem.

    prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert certificate-pem-file -auto_login_only

    Untuk informasi selengkapnya, lihat Memutar sertifikat SSL TLS /Anda.

Menghubungkan ke instans RDS untuk Oracle DB menggunakan SSL

Setelah Anda mengonfigurasikan SQL *Plus untuk digunakan SSL seperti yang dijelaskan sebelumnya, Anda dapat terhubung ke instans RDS for Oracle DB dengan opsi. SSL Jika perlu, Anda dapat terlebih dahulu mengekspor nilai TNS_ADMIN yang mengacu ke direktori yang berisi file tnsnames.ora dan sqlnet.ora. Melakukannya memastikan bahwa SQL *Plus dapat menemukan file-file ini secara konsisten. Contoh berikut mengekspor nilai TNS_ADMIN.

export TNS_ADMIN = ${ORACLE_HOME}/network/admin

Hubungkan ke instans DB. Misalnya, Anda dapat terhubung menggunakan SQL *Plus dan <net_service_name> dalam file tnsnames.ora.

sqlplus mydbuser@net_service_name

Anda juga dapat terhubung ke instans DB menggunakan SQL *Plus tanpa menggunakan file tnsnames.ora dengan menggunakan perintah berikut.

sqlplus 'mydbuser@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = endpoint) (PORT = ssl_port_number))(CONNECT_DATA = (SID = database_name)))'

Anda juga dapat terhubung ke instans RDS for Oracle DB tanpa menggunakanSSL. Misalnya, perintah berikut terhubung ke instans DB melalui port teks yang jelas tanpa SSL enkripsi.

sqlplus 'mydbuser@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = endpoint) (PORT = port_number))(CONNECT_DATA = (SID = database_name)))'

Jika Anda ingin menutup akses port Transmission Control Protocol (TCP), buat grup keamanan tanpa alamat IP yang masuk dan tambahkan ke instance. Penambahan ini menutup koneksi melalui TCP port, sementara masih memungkinkan koneksi melalui SSL port yang ditentukan dari alamat IP dalam rentang yang diizinkan oleh grup keamanan SSL opsi.

Menyiapkan SSL koneksi melalui JDBC

Untuk menggunakan SSL koneksi overJDBC, Anda harus membuat keystore, mempercayai sertifikat Amazon RDS root CA, dan menggunakan cuplikan kode yang ditentukan berikut ini.

Untuk membuat keystore dalam JKS format, Anda dapat menggunakan perintah berikut. Untuk informasi selengkapnya tentang cara membuat keystore, lihat Creating a keystore di dokumentasi Oracle. Untuk informasi referensi, lihat keytool di Platform Java, Referensi Alat Edisi Standar.

keytool -genkey -alias client -validity 365 -keyalg RSA -keystore clientkeystore

Ambil langkah-langkah berikut untuk mempercayai sertifikat Amazon RDS root CA.

Untuk mempercayai sertifikat CA RDS root Amazon
  1. Unduh file .pem paket sertifikat yang berfungsi untuk semua Wilayah AWS dan letakkan file di direktori ssl_wallet.

    Untuk informasi tentang cara mengunduh sertifikat, lihat .

  2. Ekstrak setiap sertifikat dalam file.pem ke dalam file terpisah menggunakan utilitas OS.

  3. Ubah setiap sertifikat ke format.der menggunakan openssl perintah terpisah, ganti certificate-pem-file dengan nama file sertifikat.pem (tanpa ekstensi.pem).

    openssl x509 -outform der -in certificate-pem-file.pem -out certificate-pem-file.der
  4. Impor setiap sertifikat ke keystore menggunakan perintah berikut.

    keytool -import -alias rds-root -keystore clientkeystore.jks -file certificate-pem-file.der

    Untuk informasi selengkapnya, lihat Memutar sertifikat SSL TLS /Anda.

  5. Konfirmasi bahwa keystore berhasil dibuat.

    keytool -list -v -keystore clientkeystore.jks

    Masukkan kata sandi keystore saat diminta.

Contoh kode berikut menunjukkan cara mengatur SSL koneksi menggunakanJDBC.

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class OracleSslConnectionTest { private static final String DB_SERVER_NAME = "dns-name-provided-by-amazon-rds"; private static final Integer SSL_PORT = "ssl-option-port-configured-in-option-group"; private static final String DB_SID = "oracle-sid"; private static final String DB_USER = "user-name"; private static final String DB_PASSWORD = "password"; // This key store has only the prod root ca. private static final String KEY_STORE_FILE_PATH = "file-path-to-keystore"; private static final String KEY_STORE_PASS = "keystore-password"; public static void main(String[] args) throws SQLException { final Properties properties = new Properties(); final String connectionString = String.format( "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SID=%s)))", DB_SERVER_NAME, SSL_PORT, DB_SID); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); properties.put("oracle.jdbc.J2EE13Compliant", "true"); properties.put("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH); properties.put("javax.net.ssl.trustStoreType", "JKS"); properties.put("javax.net.ssl.trustStorePassword", KEY_STORE_PASS); final Connection connection = DriverManager.getConnection(connectionString, properties); // If no exception, that means handshake has passed, and an SSL connection can be opened } }
catatan

Tetapkan kata sandi selain penggugah (prompt) yang ditampilkan di sini sebagai praktik terbaik keamanan.

Menegakkan kecocokan DN dengan koneksi SSL

Anda dapat menggunakan parameter Oracle SSL_SERVER_DN_MATCH untuk menerapkan bahwa nama yang dibedakan (DN) untuk server basis data cocok dengan nama layanannya. Jika Anda menerapkan verifikasi kecocokan, SSL pastikan sertifikat tersebut berasal dari server. Jika Anda tidak menerapkan verifikasi kecocokan, SSL lakukan pemeriksaan tetapi mengizinkan koneksi, terlepas dari apakah ada kecocokan. Jika Anda tidak menerapkan kecocokan, Anda mengizinkan server untuk berpotensi memalsukan identitasnya.

Untuk menerapkan pencocokan DN, tambahkan properti kecocokan DN dan gunakan string koneksi yang ditentukan di bawah ini.

Tambahkan properti ke koneksi klien untuk menerapkan pencocokan DN.

properties.put("oracle.net.ssl_server_dn_match", "TRUE");

Gunakan string koneksi berikut untuk menerapkan pencocokan DN saat menggunakan. SSL

final String connectionString = String.format( "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))" + "(CONNECT_DATA=(SID=%s))" + "(SECURITY = (SSL_SERVER_CERT_DN = \"C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=%s\")))", DB_SERVER_NAME, SSL_PORT, DB_SID, DB_SERVER_NAME);

Memecahkan masalah koneksi SSL

Anda mungkin mengueri basis data Anda dan menerima kesalahan ORA-28860.

ORA-28860: Fatal SSL error 28860. 00000 - "Fatal SSL error" *Cause: An error occurred during the SSL connection to the peer. It is likely that this side sent data which the peer rejected. *Action: Enable tracing to determine the exact cause of this error.

Kesalahan ini terjadi ketika klien mencoba untuk terhubung menggunakan versi TLS yang server tidak mendukung. Untuk menghindari kesalahan ini, edit sqlnet.ora dan atur SSL_VERSION ke versi yang benar. TLS Untuk informasi selengkapnya, lihat Oracle Support Document 2748438.1 di Dukungan Oracle.