

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
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql"></a>

*Rajkumar Raghuwanshi dan Jagadish Kantubugata, Amazon Web Services*

## Ringkasan
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-summary"></a>

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
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-prereqs"></a>

**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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

**Versi produk**
+ Microsoft SQL Server 2012 atau yang lebih baru

## Arsitektur
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-architecture"></a>

**Tumpukan teknologi sumber**
+ SQL Server
+ .NET Framework

**Tumpukan teknologi target**
+ PostgreSQL
+ `pgcrypto`perpanjangan

**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
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-tools"></a>

**Layanan AWS**
+ [Amazon Aurora PostgreSQL kompatibel](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) adalah mesin database relasional yang dikelola sepenuhnya dan sesuai dengan ACID yang membantu Anda mengatur, mengoperasikan, dan menskalakan penerapan PostgreSQL.
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) membantu Anda memigrasikan penyimpanan data ke dalam AWS Cloud atau di antara kombinasi pengaturan cloud dan lokal.
+ [Amazon Relational Database Service Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html) membantu Anda mengatur, mengoperasikan, dan menskalakan database relasional PostgreSQL di. AWS Cloud
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) mendukung migrasi database heterogen dengan secara otomatis mengonversi skema basis data sumber dan sebagian besar kode kustom ke format yang kompatibel dengan database target.

**Alat lainnya**
+ [pgAdmin](https://www.pgadmin.org/) 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)](https://learn.microsoft.com/en-us/ssms/sql-server-management-studio-ssms) adalah lingkungan terintegrasi untuk mengelola infrastruktur SQL apa pun.

## Praktik terbaik
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-best-practices"></a>
+ 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
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-epics"></a>

### Menganalisis implementasi hashing sumber
<a name="analyze-source-hashing-implementation"></a>


| Tugas | Deskripsi | Keterampilan 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.<br />+ Identifikasi metode yang tepat yang digunakan untuk pembuatan hash.<br />+ Dokumentasikan parameter input dan format output.<br />+ Tinjau konversi atau transformasi tipe data apa pun.<br />+ 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.<br />+ Dokumentasikan logika step-by-step transformasi.<br />+ Tentukan format input dan output serta tipe data.<br />+ Sertakan kasus tepi dan penanganan karakter khusus. | Pengembang aplikasi, Insinyur data, DBA | 

### Buat fungsi hashing PostgreSQL
<a name="create-postgresql-hashing-function"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat `pgcrypto` ekstensi. | Untuk membuat `pgcrypto` ekstensi, gunakan `pgAdmin/psql` untuk menjalankan perintah berikut:<pre>CREATE EXTENSION pgcrypto;</pre> | 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.<br />2. Menciptakan SHA1 hash dari input.<br />3. Mengambil 10 byte terakhir (80 bit) dari hash ini.<br />4. Mengkonversi byte ini ke integer 64-bit.<pre>CREATE OR REPLACE FUNCTION utility.hex_to_bigint ( <br />     par_val character varying, <br />     par_upper character varying DEFAULT 'lower'::character varying) <br />RETURNS bigint <br />LANGUAGE 'plpgsql' <br />AS $BODY$ <br />DECLARE <br />    retnumber bigint; <br />    digest_bytes bytea;<br />BEGIN <br />    if lower(par_upper) = 'upper' <br />    then <br />        digest_bytes := digest(upper(par_val), 'sha1');<br />    else <br />        digest_bytes := digest((par_val), 'sha1');<br />    end if; <br />    retnumber := ('x' || encode(substring(digest_bytes, length(digest_bytes)-10+1), 'hex'))::bit(64)::bigint; <br />    RETURN retnumber; <br />END; <br />$BODY$;</pre> | 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:<pre>select 'alejandro_rosalez@example.com' as Email, utility.hex_to_bigint('alejandro_rosalez@example.com','upper') as HashValue;<br /><br />--OUTPUT<br />/*<br />email 	        hashvalue<br />"alejandro_rosalez@example.com"	451397011176045063<br />*/<br /></pre> | Pengembang aplikasi, DBA, Insinyur data | 

### Menerapkan pemicu untuk hashing otomatis
<a name="implement-triggers-for-automatic-hashing"></a>


| Tugas | Deskripsi | Keterampilan 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:<pre>CREATE OR REPLACE FUNCTION update_email_hash() <br />RETURNS TRIGGER <br />AS $$ <br />BEGIN <br />    NEW.email_hash = utility.hex_to_bigint(NEW.email, 'upper'); <br />    RETURN NEW; <br />END; <br />$$ LANGUAGE plpgsql;</pre><pre>CREATE TRIGGER email_hash_trigger BEFORE INSERT OR UPDATE ON users FOR EACH ROW EXECUTE FUNCTION update_email_hash();</pre> | Pengembang aplikasi, Insinyur data, DBA | 

### Migrasi data yang ada
<a name="migrate-existing-data"></a>


| Tugas | Deskripsi | Keterampilan 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.<br />+ Konfigurasikan AWS DMS tugas dengan aturan transformasi yang sesuai.<br />+ Siapkan titik akhir sumber dan target di AWS DMS.<br />+ Menerapkan penanganan kesalahan dan mekanisme logging.<br />+ Rancang strategi pemrosesan batch untuk kumpulan data besar.<br />+ 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.<br />+ Buat skrip perbandingan antara sumber dan sistem target.<br />+ Siapkan pengujian otomatis untuk verifikasi nilai hash.<br />+ Dokumentasikan setiap perbedaan dan langkah resolusi. | Pengembang aplikasi, DBA, DevOps insinyur | 

### Perbarui kueri aplikasi
<a name="update-application-queries"></a>


| Tugas | Deskripsi | Keterampilan 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.<br />+ Tinjau prosedur dan fungsi tersimpan yang mereferensikan operasi hash.<br />+ Metrik kinerja kueri dokumen dan rencana eksekusi.<br />+ Identifikasi dependensi pada pencarian berbasis hash.<br />+ 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.<br />+ Perbarui prosedur dan fungsi yang tersimpan.<br />+ Menerapkan dan menguji pola kueri baru.<br />+ Optimalkan kueri yang dimodifikasi untuk kinerja. | Pengembang aplikasi, DBA, Insinyur data | 

### Uji dan validasi
<a name="test-and-validate"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Lakukan pengujian. | Untuk melakukan pengujian menyeluruh dengan subset data produksi, lakukan hal berikut:+ Buat rencana pengujian untuk validasi subset data.<br />+ Ekstrak sampel representatif dari data produksi.<br />+ Siapkan lingkungan pengujian dengan konfigurasi yang tepat.<br />+ Jalankan pemuatan data dan tes transformasi.<br />+ 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.<br />+ Buat laporan validasi untuk pencocokan hash.<br />+ Menerapkan prosedur verifikasi otomatis.<br />+ Dokumentasikan setiap perbedaan yang ditemukan.<br />+ 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.<br />+ Validasi semua fitur aplikasi menggunakan data hash.<br />+ Uji kinerja aplikasi dengan implementasi baru.<br />+ Verifikasi integrasi dan dependensi API. | Pengembang aplikasi, DBA, Insinyur data | 

## Pemecahan masalah
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| 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](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)).AWS  | 

## Sumber daya terkait
<a name="implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql-resources"></a>

**AWS Blog**
+ [Kelola perubahan pemeriksaan di PostgreSQL di Amazon Aurora dan Amazon RDS](https://aws.amazon.com/blogs/database/manage-collation-changes-in-postgresql-on-amazon-aurora-and-amazon-rds/)
+ [Migrasikan SQL Server ke Amazon Aurora PostgreSQL menggunakan praktik terbaik dan pelajaran yang dipetik dari lapangan](https://aws.amazon.com/blogs/database/migrate-sql-server-to-amazon-aurora-postgresql-using-best-practices-and-lessons-learned-from-the-field/)

**Sumber daya lainnya**
+ [PostgreSQL modul pgcrypto (dokumentasi PostgreSQL)](https://www.postgresql.org/docs/current/pgcrypto.html)
+ Fungsi [pemicu PostgreSQL (dokumentasi PostgreSQL)](https://www.postgresql.org/docs/current/plpgsql-trigger.html)
+ [Fungsi SQL Server HASHBYTES (dokumentasi Microsoft)](https://docs.microsoft.com/en-us/sql/t-sql/functions/hashbytes-transact-sql)