Untuk meningkatkan keamanan transmisi data antara aplikasi klien dan Hologres, Anda dapat mengaktifkan transmisi terenkripsi Secure Socket Layer (SSL). SSL mengenkripsi koneksi jaringan antara instance Hologres dan klien menggunakan sertifikat digital dan algoritma enkripsi seperti Transport Layer Security (TLS), memastikan keamanan serta integritas data yang ditransmisikan.
Skenario
Transmisi terenkripsi SSL cocok untuk skenario berikut:
Akses jarak jauh ke database: Saat mengakses database secara remote dari klien, Anda dapat mengaktifkan transmisi terenkripsi SSL untuk meningkatkan keamanan selama transmisi data.
Kepatuhan keamanan: Jika enkripsi diperlukan untuk transmisi data berdasarkan standar industri dan peraturan, Anda dapat mengaktifkan transmisi terenkripsi SSL untuk memenuhi persyaratan keamanan.
SSL mengenkripsi koneksi jaringan pada lapisan transport. Ini meningkatkan keamanan dan integritas data yang ditransmisikan, tetapi dapat meningkatkan waktu respons koneksi jaringan.
Prasyarat
Sebuah instance Hologres telah dibeli. Untuk informasi lebih lanjut, lihat Beli instance Hologres.
Klien PostgreSQL atau driver Java Database Connectivity (JDBC) telah diunduh dan diinstal. Untuk informasi lebih lanjut, lihat Klien PostgreSQL atau JDBC.
Catatan penggunaan
Hologres V1.1 dan versi lebih baru mendukung enkripsi transmisi. Hologres V1.2 dan versi lebih baru mendukung Transport Layer Security (TLS). Di Hologres V2.1 dan versi lebih baru, Anda dapat menggunakan sertifikat Certificate Authority (CA) dengan transmisi terenkripsi SSL dan mengaktifkan transmisi terenkripsi SSL di konsol Hologres.
CatatanJika versi instance Hologres Anda lebih lama dari V1.1, Anda dapat secara manual memperbarui instance Hologres Anda di konsol Hologres atau bergabung dengan grup DingTalk Hologres untuk menghubungi dukungan teknis Hologres. Untuk informasi lebih lanjut tentang cara memperbarui instance Hologres Anda secara manual di konsol Hologres, lihat Pembaruan Manual (beta). Untuk informasi lebih lanjut tentang cara mendapatkan dukungan teknis, lihat Dapatkan dukungan online untuk Hologres.
Setiap kali Anda mengaktifkan atau menonaktifkan transmisi terenkripsi SSL untuk sebuah instance, instance tersebut akan di-restart. Lanjutkan dengan hati-hati. Secara default, transmisi terenkripsi SSL dinonaktifkan.
Setelah transmisi terenkripsi SSL diaktifkan untuk instance Hologres, Anda diizinkan untuk terhubung ke instance Hologres melalui koneksi SSL. Dalam hal ini, saat Anda terhubung ke instance Hologres menggunakan klien, Anda harus secara eksplisit menentukan apakah akan mengenkripsi koneksi ke Hologres.
Setelah transmisi terenkripsi SSL dinonaktifkan untuk instance Hologres, Anda hanya dapat terhubung ke instance Hologres melalui koneksi non-SSL.
Tabel berikut menjelaskan mode transmisi terenkripsi SSL yang didukung oleh Hologres.
Mode transmisi terenkripsi SSL
Versi yang didukung
Require: Klien menggunakan SSL untuk mengenkripsi hanya koneksi yang digunakan untuk mentransmisikan data.
V1.1
Verify-CA: Klien menggunakan SSL untuk mengenkripsi koneksi yang digunakan untuk mentransmisikan data dan menggunakan sertifikat CA untuk memvalidasi server Hologres.
V2.1
Verify-Full: Klien menggunakan SSL untuk mengenkripsi koneksi yang digunakan untuk mentransmisikan data, menggunakan sertifikat CA untuk memvalidasi server Hologres, dan memeriksa apakah CN atau Domain Name System (DNS) yang ditentukan dalam sertifikat CA konsisten dengan titik akhir Hologres yang ditentukan selama pembuatan koneksi.
V2.1
Masa berlaku sertifikat SSL adalah satu tahun. Anda perlu memperbarui sertifikat SSL secara manual setelah kedaluwarsa. Jika tidak, transmisi terenkripsi SSL tidak dapat digunakan setelah sertifikat SSL kedaluwarsa.
Setelah transmisi terenkripsi SSL diaktifkan, beban CPU meningkat dan latensi baca/tulis meningkat.
Setelah Anda mengaktifkan transmisi terenkripsi SSL, Anda harus menutup dan membuat ulang koneksi yang ada agar enkripsi berlaku.
Saat Anda mengaktifkan atau menonaktifkan transmisi terenkripsi SSL atau memperbarui sertifikat SSL, instance Hologres Anda akan di-restart. Restart memakan waktu sekitar 3 menit. Lakukan operasi ini selama jam-jam sepi.
Langkah 1: Aktifkan transmisi terenkripsi SSL untuk instance Hologres
Masuk ke konsol Hologres. Di pojok kiri atas, pilih wilayah.
Di panel navigasi sebelah kiri, klik Instances. Pada halaman yang muncul, klik ID instance yang diinginkan.
Di panel navigasi di sebelah kiri halaman Detail Instance, klik Data Security.
Pada tab SSL, aktifkan saklar SSL Encryption.
Dalam pesan Enable SSL Encryption, klik Enable SSL encryption.
Langkah 2: Unduh sertifikat CA
Hologres menyediakan sertifikat CA. Saat Anda terhubung secara remote ke instance Hologres dari klien Anda, Anda dapat menggunakan sertifikat CA dari instance untuk memvalidasi instance Hologres.
Masuk ke konsol Hologres. Di pojok kiri atas, pilih wilayah.
Di panel navigasi di sebelah kiri, klik Instances. Pada halaman yang muncul, klik ID instance yang diinginkan.
Di panel navigasi di sebelah kiri halaman Detail Instance, klik Data Security.
Pada tab SSL, klik Download Certificate.
Langkah 3: Terhubung ke instance Hologres
Anda dapat menggunakan klien PostgreSQL atau driver JDBC untuk terhubung ke instance Hologres. Anda dapat mengonfigurasi parameter untuk mengaktifkan transmisi terenkripsi SSL untuk koneksi tersebut.
Gunakan CLI PostgreSQL untuk terhubung ke instance Hologres
Perintah
PG_USER=<ID AccessKey> PG_PASSWORD=<Rahasia AccessKey> PG_SSLMODE=<Mode SSL> PG_SSLROOTCERT=<folder sertifikat> PGSSLMODE=$PG_SSLMODE PGSSLROOTCERT=$PG_SSLROOTCERT PGUSER=$PG_USER PGPASSWORD=$PG_PASSWORD psql -p <Port> -h <Titik akhir> -d <Database>Parameter
Parameter
Deskripsi
ID AccessKey
ID AccessKey dari akun Alibaba Cloud.
Anda dapat memperoleh ID AccessKey dari halaman Pasangan AccessKey.
Kami merekomendasikan Anda mengonfigurasi variabel lingkungan dan memperoleh ID AccessKey dan Rahasia AccessKey dari variabel lingkungan. Ini membantu mengurangi risiko kebocoran.
Rahasia AccessKey
Rahasia AccessKey dari akun Alibaba Cloud.
Anda dapat memperoleh Rahasia AccessKey dari halaman Pasangan AccessKey.
Kami merekomendasikan Anda mengonfigurasi variabel lingkungan dan memperoleh ID AccessKey dan Rahasia AccessKey dari variabel lingkungan. Ini membantu mengurangi risiko kebocoran.
Mode SSL
Mode enkripsi di mana klien PostgreSQL terhubung ke instance Hologres. Nilai valid:
require: Klien menggunakan SSL untuk mengenkripsi koneksi yang digunakan untuk mentransmisikan data.
verify-ca: Klien menggunakan SSL untuk mengenkripsi koneksi yang digunakan untuk mentransmisikan data dan memvalidasi instance Hologres.
verify-full: Klien menggunakan SSL untuk mengenkripsi koneksi yang digunakan untuk mentransmisikan data, memvalidasi instance Hologres, dan memeriksa apakah CN atau DNS yang ditentukan dalam sertifikat CA konsisten dengan titik akhir Hologres yang ditentukan selama pembuatan koneksi.
disable: Klien tidak menggunakan SSL untuk transmisi terenkripsi.
folder sertifikat
Lokasi penyimpanan sertifikat CA.
Jika Anda mengatur
Mode SSLke verify-ca atau verify-full, Anda harus mengonfigurasi parameter ini.Port
Nomor port publik instance Hologres.
Contoh:
80.Titik akhir
Titik akhir publik instance Hologres.
Contoh:
xxx-cn-hangzhou.hologres.aliyuncs.com.Database
Nama database Hologres yang ingin Anda hubungkan.
Setelah Anda membeli instance Hologres, database bernama postgres dibuat secara otomatis.
Anda dapat terhubung ke database postgres. Namun, sumber daya terbatas dialokasikan ke database ini. Kami merekomendasikan Anda pergi ke konsol Hologres dan membuat database untuk memastikan sumber daya yang cukup untuk bisnis Anda. Untuk informasi lebih lanjut, lihat Buat database.
Contoh:
mydb.Verifikasi
Jika Anda mengatur parameter PGSSLMODE ke
requiredan pesan berikut muncul saat Anda terhubung ke Hologres, koneksi dienkripsi menggunakan SSL.
Gunakan driver JDBC untuk terhubung ke instance Hologres
Jika Anda menggunakan driver JDBC untuk terhubung ke instance Hologres, Anda dapat menggunakan parameter ssl dan sslmode untuk menentukan apakah akan mengaktifkan transmisi terenkripsi SSL. Hasil koneksi di Hologres bervariasi berdasarkan nilai setiap parameter. Tabel berikut menjelaskan pemetaan antara nilai dan hasil.
Transmisi terenkripsi SSL diaktifkan untuk instance Hologres | ssl | sslmode | Hasil |
Ya | true |
| Anda dapat menghubungkan klien ke instance Hologres dan melakukan operasi. Data dienkripsi saat ditransmisikan antara klien dan instance Hologres. |
Ya | false |
| Anda dapat menghubungkan klien ke instance Hologres dan melakukan operasi. Data tidak dienkripsi saat ditransmisikan antara klien dan instance Hologres. |
Tidak | true |
| Pesan kesalahan yang ditunjukkan pada gambar berikut dilaporkan.
|
Tidak | false |
| Anda dapat menghubungkan klien ke instance Hologres dan melakukan operasi. Data tidak dienkripsi saat ditransmisikan antara klien dan instance Hologres. |
Kode contoh
// Tentukan titik akhir instance Hologres.
String hostname = "hgxxxxxxx-cn-hangzhou-vpc.hologres.aliyuncs.com:80";
// Tentukan nomor port instance Hologres.
String port = "80";
//Tentukan nama database yang ingin Anda hubungkan.
String dbname = "postgres";
String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbname+"?binaryTransfer=true";
Properties properties = new Properties();
// Tentukan ID AccessKey yang digunakan untuk terhubung ke database. Kami merekomendasikan Anda mengonfigurasi variabel lingkungan dan memperoleh ID AccessKey dari variabel lingkungan.
properties.setProperty("user", "accessid");
// Tentukan Rahasia AccessKey yang digunakan untuk terhubung ke database. Kami merekomendasikan Anda mengonfigurasi variabel lingkungan dan memperoleh Rahasia AccessKey dari variabel lingkungan.
properties.setProperty("password", "accesskey");
// Gunakan SSL untuk transmisi terenkripsi.
properties.setProperty("ssl", "true");
// Tentukan kunci publik CA.
properties.setProperty("sslrootcert", path + "/" + "hologres_certificate.crt");
// Tentukan mode koneksi SSL. Nilai valid: require, verify-ca, dan verify-full.
properties.setProperty("sslmode", "verify-full");
try {
Class.forName("org.postgresql.Driver");
Connection connection = DriverManager.getConnection(jdbcUrl, properties);
// Dalam contoh ini, database bernama postgres berisi tabel bernama example, dan data di-query dari tabel.
PreparedStatement preparedStatement = connection.prepareStatement("select * from " +
"example");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnCount = rsmd.getColumnCount();
Map map = new HashMap();
for (int i = 0; i < columnCount; i++) {
map.put(rsmd.getColumnName(i + 1).toLowerCase(), resultSet.getObject(i + 1));
}
System.out.println(map);
}
} catch (Exception exception) {
exception.printStackTrace();
}