

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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Insinyur data, DBA, Pengembang aplikasi | 
| Dokumentasikan algoritma hashing dan transformasi data. | Untuk mendokumentasikan algoritma hashing dan transformasi data yang tepat, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html)<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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Insinyur data, Pengembang aplikasi, DBA | 
| Gunakan fungsi hashing PostgreSQL yang baru. | Untuk menggunakan fungsi hashing PostgreSQL baru untuk memastikan konsistensi, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Pengembang aplikasi, DBA, Insinyur data | 
| Ubah kueri. | Jika perlu, ubah kueri untuk menggunakan fungsi hashing PostgreSQL yang baru. Lakukan hal-hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Pengembang aplikasi, Insinyur data, DBA | 
| Validasi bahwa nilai hash cocok. | Untuk memvalidasi bahwa nilai hash cocok antara SQL Server dan PostgreSQL, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | Pengembang aplikasi, Insinyur data, DBA | 
| Verifikasi fungsionalitas aplikasi. | Untuk memverifikasi fungsionalitas aplikasi dengan menggunakan data yang dimigrasi dan implementasi hashing baru, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/implement-sha1-hashing-for-pii-data-when-migrating-from-sql-server-to-postgresql.html) | 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)