Menerapkan SHA1 hashing untuk data PII saat bermigrasi dari SQL Server ke PostgreSQL - AWS Prescriptive Guidance

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

Menerapkan SHA1 hashing untuk data PII saat bermigrasi dari SQL Server ke PostgreSQL

Rajkumar Raghuwanshi dan Jagadish Kantubugata, Amazon Web Services

Ringkasan

Pola ini menjelaskan cara menerapkan hashing Secure Hash Algorithm 1 (SHA1) untuk alamat email saat bermigrasi dari SQL Server ke Amazon RDS for PostgreSQL atau yang kompatibel dengan Amazon Aurora PostgreSQL. Alamat email adalah contoh informasi identitas pribadi (PII). PII adalah informasi yang, jika dilihat secara langsung atau dipasangkan dengan data terkait lainnya, dapat digunakan untuk menyimpulkan identitas individu secara wajar.

Pola ini mencakup tantangan mempertahankan nilai hash yang konsisten di berbagai kumpulan database dan pengkodean karakter, dan memberikan solusi menggunakan fungsi dan pemicu PostgreSQL. Meskipun pola ini berfokus pada SHA1 hashing, itu dapat disesuaikan untuk algoritma hashing lain yang didukung oleh modul PostgreSQL. pgcrypto Selalu pertimbangkan implikasi keamanan dari strategi hashing Anda dan konsultasikan dengan pakar keamanan jika menangani data sensitif.

Prasyarat dan batasan

Prasyarat

  • Aktif Akun AWS

  • Sumber database SQL Server

  • Target database PostgreSQL (Amazon RDS untuk PostgreSQL atau Aurora PostgreSQL kompatibel)

  • Keahlian pengkodean PL/PGSQL

Batasan

  • Pola ini memerlukan perubahan pemeriksaan tingkat basis data berdasarkan kasus penggunaan.

  • Dampak kinerja pada kumpulan data besar belum dievaluasi.

  • Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat AWS Layanan menurut Wilayah. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.

Versi produk

  • Microsoft SQL Server 2012 atau yang lebih baru

Arsitektur

Tumpukan teknologi sumber

  • SQL Server

  • .NET Framework

Tumpukan teknologi target

  • PostgreSQL

  • pgcryptoperpanjangan

Otomatisasi dan skala

  • Pertimbangkan untuk menerapkan fungsi hashing sebagai prosedur tersimpan untuk perawatan yang lebih mudah.

  • Untuk kumpulan data besar, evaluasi kinerja dan pertimbangkan pemrosesan batch atau strategi pengindeksan.

Alat

Layanan AWS

Alat lainnya

  • pgAdmin adalah alat manajemen open source untuk PostgreSQL. Ini menyediakan antarmuka grafis yang membantu Anda membuat, memelihara, dan menggunakan objek database.

  • SQL Server Management Studio (SSMS) adalah lingkungan terintegrasi untuk mengelola infrastruktur SQL apa pun.

Praktik terbaik

  • Gunakan pengaturan pemeriksaan yang sesuai untuk menangani karakter khusus di sisi database target.

  • Uji secara menyeluruh dengan berbagai alamat email, termasuk alamat dengan karakter non-ASCII.

  • Pertahankan konsistensi dalam penanganan huruf besar dan kecil antara lapisan aplikasi dan database.

  • Benchmark kinerja kueri menggunakan nilai hash.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Tinjau kode SQL Server.

Untuk meninjau kode SQL Server yang menghasilkan SHA1 hash, lakukan hal berikut:

  • Menganalisis implementasi SQL Server yang ada dari SHA1 hashing.

  • Identifikasi metode yang tepat yang digunakan untuk pembuatan hash.

  • Dokumentasikan parameter input dan format output.

  • Tinjau konversi atau transformasi tipe data apa pun.

  • Periksa pengaturan pemeriksaan dan dampaknya.

Insinyur data, DBA, Pengembang aplikasi

Dokumentasikan algoritma hashing dan transformasi data.

Untuk mendokumentasikan algoritma hashing dan transformasi data yang tepat, lakukan hal berikut:

  • Buat dokumentasi teknis terperinci dari proses hashing.

  • Dokumentasikan logika step-by-step transformasi.

  • Tentukan format input dan output serta tipe data.

  • Sertakan kasus tepi dan penanganan karakter khusus.

Pengembang aplikasi, Insinyur data, DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Buat pgcrypto ekstensi.

Untuk membuat pgcrypto ekstensi, gunakan pgAdmin/psql untuk menjalankan perintah berikut:

CREATE EXTENSION pgcrypto;
DBA, Insinyur data

Menerapkan fungsi PostgreSQL.

Menerapkan fungsi PostgreSQL berikut untuk mereplikasi logika hashing SQL Server. Pada tingkat tinggi, fungsi ini menggunakan langkah-langkah berikut:

  1. Secara opsional mengubah input menjadi huruf besar.

  2. Menciptakan SHA1 hash dari input.

  3. Mengambil 10 byte terakhir (80 bit) dari hash ini.

  4. Mengkonversi byte ini ke integer 64-bit.

CREATE OR REPLACE FUNCTION utility.hex_to_bigint ( par_val character varying, par_upper character varying DEFAULT 'lower'::character varying) RETURNS bigint LANGUAGE 'plpgsql' AS $BODY$ DECLARE retnumber bigint; digest_bytes bytea; BEGIN if lower(par_upper) = 'upper' then digest_bytes := digest(upper(par_val), 'sha1'); else digest_bytes := digest((par_val), 'sha1'); end if; retnumber := ('x' || encode(substring(digest_bytes, length(digest_bytes)-10+1), 'hex'))::bit(64)::bigint; RETURN retnumber; END; $BODY$;
Insinyur data, DBA, Pengembang aplikasi

Uji fungsinya.

Untuk menguji fungsi, gunakan data sampel dari SQL Server untuk memverifikasi nilai hash yang cocok. Jalankan perintah berikut:

select 'alejandro_rosalez@example.com' as Email, utility.hex_to_bigint('alejandro_rosalez@example.com','upper') as HashValue; --OUTPUT /* email hashvalue "alejandro_rosalez@example.com" 451397011176045063 */
Pengembang aplikasi, DBA, Insinyur data
TugasDeskripsiKeterampilan yang dibutuhkan

Buat pemicu pada tabel yang relevan.

Untuk membuat pemicu pada tabel yang relevan untuk secara otomatis menghasilkan nilai hash pada insert atau update, jalankan perintah berikut:

CREATE OR REPLACE FUNCTION update_email_hash() RETURNS TRIGGER AS $$ BEGIN NEW.email_hash = utility.hex_to_bigint(NEW.email, 'upper'); RETURN NEW; END; $$ LANGUAGE plpgsql;
CREATE TRIGGER email_hash_trigger BEFORE INSERT OR UPDATE ON users FOR EACH ROW EXECUTE FUNCTION update_email_hash();
Pengembang aplikasi, Insinyur data, DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Kembangkan skrip migrasi atau gunakan AWS DMS.

Kembangkan skrip migrasi atau gunakan AWS DMS untuk mengisi nilai hash untuk data yang ada (termasuk nilai hash yang disimpan seperti BIGINT dalam sistem sumber.) Lakukan hal-hal berikut:

  • Buat skrip migrasi untuk transfer data dengan nilai hash.

  • Konfigurasikan AWS DMS tugas dengan aturan transformasi yang sesuai.

  • Siapkan titik akhir sumber dan target di AWS DMS.

  • Menerapkan penanganan kesalahan dan mekanisme logging.

  • Rancang strategi pemrosesan batch untuk kumpulan data besar.

  • Buat kueri validasi untuk verifikasi data.

Insinyur data, Pengembang aplikasi, DBA

Gunakan fungsi hashing PostgreSQL yang baru.

Untuk menggunakan fungsi hashing PostgreSQL baru untuk memastikan konsistensi, lakukan hal berikut:

  • Menerapkan prosedur validasi untuk memverifikasi konsistensi hash.

  • Buat skrip perbandingan antara sumber dan sistem target.

  • Siapkan pengujian otomatis untuk verifikasi nilai hash.

  • Dokumentasikan setiap perbedaan dan langkah resolusi.

Pengembang aplikasi, DBA, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Identifikasi kueri aplikasi.

Untuk mengidentifikasi kueri aplikasi yang menggunakan nilai hash, lakukan hal berikut:

  • Analisis basis kode aplikasi untuk kueri menggunakan nilai hash.

  • Tinjau prosedur dan fungsi tersimpan yang mereferensikan operasi hash.

  • Metrik kinerja kueri dokumen dan rencana eksekusi.

  • Identifikasi dependensi pada pencarian berbasis hash.

  • Memetakan komponen aplikasi yang terpengaruh.

Pengembang aplikasi, DBA, Insinyur data

Ubah kueri.

Jika perlu, ubah kueri untuk menggunakan fungsi hashing PostgreSQL yang baru. Lakukan hal-hal berikut:

  • Memfaktorkan ulang kueri yang ada untuk menggunakan fungsi hashing PostgreSQL.

  • Perbarui prosedur dan fungsi yang tersimpan.

  • Menerapkan dan menguji pola kueri baru.

  • Optimalkan kueri yang dimodifikasi untuk kinerja.

Pengembang aplikasi, DBA, Insinyur data
TugasDeskripsiKeterampilan yang dibutuhkan

Lakukan pengujian.

Untuk melakukan pengujian menyeluruh dengan subset data produksi, lakukan hal berikut:

  • Buat rencana pengujian untuk validasi subset data.

  • Ekstrak sampel representatif dari data produksi.

  • Siapkan lingkungan pengujian dengan konfigurasi yang tepat.

  • Jalankan pemuatan data dan tes transformasi.

  • Lakukan pengujian volume dan stress.

Pengembang aplikasi, Insinyur data, DBA

Validasi bahwa nilai hash cocok.

Untuk memvalidasi bahwa nilai hash cocok antara SQL Server dan PostgreSQL, lakukan hal berikut:

  • Kembangkan skrip perbandingan untuk nilai hash.

  • Buat laporan validasi untuk pencocokan hash.

  • Menerapkan prosedur verifikasi otomatis.

  • Dokumentasikan setiap perbedaan yang ditemukan.

  • Menganalisis dan menyelesaikan ketidakcocokan hash.

Pengembang aplikasi, Insinyur data, DBA

Verifikasi fungsionalitas aplikasi.

Untuk memverifikasi fungsionalitas aplikasi dengan menggunakan data yang dimigrasi dan implementasi hashing baru, lakukan hal berikut:

  • Jalankan pengujian end-to-end aplikasi.

  • Validasi semua fitur aplikasi menggunakan data hash.

  • Uji kinerja aplikasi dengan implementasi baru.

  • Verifikasi integrasi dan dependensi API.

Pengembang aplikasi, DBA, Insinyur data

Pemecahan Masalah

IsuSolusi

Nilai hash tidak cocok.

Verifikasi pengkodean karakter dan susunan antara sumber dan target. Untuk informasi selengkapnya, lihat Mengelola perubahan pemeriksaan di PostgreSQL di Amazon Aurora dan Amazon RDS (Blog).AWS

Sumber daya terkait

AWS Blog

Sumber daya lainnya