翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SQL Server から PostgreSQL に移行する際に、PII データに SHA1 ハッシュを実装する
Amazon Web Services、Rajkumar Raghuwanshi および Jagadish Kantubugata
概要
このパターンでは、SQL Server から Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL 互換に移行する際に、E メールアドレスにセキュアハッシュアルゴリズム 1 (SHA1) ハッシュを実装する方法について説明します。E メールアドレスは、個人を特定できる情報 (PII) の一例です。PII は、直接閲覧した場合、または他の関連データと組み合わせた場合に、個人の身元を合理的に推測するために使用できる情報です。
このパターンでは、さまざまなデータベースの照合順序と文字エンコーディングにわたって一貫したハッシュ値を維持するという課題について説明し、PostgreSQL 関数とトリガーを使用したソリューションを提供します。このパターンは SHA1 ハッシュに重点を置いていますが、PostgreSQL の pgcrypto モジュールでサポートされている他のハッシュアルゴリズムにも適応できます。機密データを扱う場合には、ハッシュ戦略のセキュリティ上の影響を常に考慮し、セキュリティエキスパートに相談してください。
前提条件と制限事項
前提条件
アクティブな AWS アカウント
ソース SQL Server データベース
ターゲット PostgreSQL データベース (Amazon RDS for PostgreSQL または Aurora PostgreSQL 互換)
PL/PgSQL コーディングの専門知識
制限事項
このパターンでは、ユースケースに基づいてデータベースレベルの照合順序を変更する必要があります。
大規模なデータセットに対するパフォーマンスの影響は評価されていません。
一部の AWS のサービス は、すべてで利用できるわけではありません AWS リージョン。利用可能なリージョンについては、「AWS サービス (リージョン別)
」を参照してください。特定のエンドポイントについては、「サービスエンドポイントとクォータ」を参照して、サービスのリンクを選択してください。
製品バージョン
Microsoft SQL Server 2012 以降
アーキテクチャ
ソーステクノロジースタック
SQL Server
特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。
ターゲットテクノロジースタック
[PostgreSQL]
pgcryptoエクステンション
自動化とスケール
メンテナンスを容易にするために、ハッシュ関数をストアドプロシージャとして実装することを検討します。
大規模なデータセットの場合は、パフォーマンスを評価し、バッチ処理またはインデックス作成戦略を検討します。
ツール
AWS のサービス
Amazon Aurora PostgreSQL 互換は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援するフルマネージド型の ACID 互換リレーショナルデータベースエンジンです。
AWS Database Migration Service (AWS DMS) を使用すると、データストアを に移行する AWS クラウド か、クラウドとオンプレミスのセットアップの組み合わせ間で移行できます。
Amazon Relational Database Service Amazon RDS for PostgreSQL を使用すると、 AWS クラウドで PostgreSQL リレーショナルデータベースのセットアップ、運用、スケーリングができます。
AWS Schema Conversion Tool (AWS SCT) は、ソースデータベーススキーマとカスタムコードの大部分をターゲットデータベースと互換性のある形式に自動的に変換することで、異種データベースの移行をサポートします。
その他のツール
「pgAdmin
」 は PostgreSQL 用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。 SQL Server Management Studio (SSMS)
は、SQL Server インフラストラクチャを管理するための統合環境です。
ベストプラクティス
ターゲットデータベース側で特殊文字を処理するには、適切な照合順序設定を使用します。
非 ASCII 文字のアドレスなど、さまざまな E メールアドレスで徹底的にテストします。
アプリケーションレイヤーとデータベースレイヤーの間で大文字と小文字の処理の一貫性を維持します。
ハッシュ値を使用してクエリのパフォーマンスをベンチマークします。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
SQL Server コードを確認します。 | SHA1 ハッシュを生成する SQL Server コードを確認するには、以下を行います。
| データエンジニア、DBA、アプリケーション開発者 |
ハッシュアルゴリズムとデータ変換を文書化します。 | ハッシュアルゴリズムとデータ変換を正確に文書化するには、以下を行います。
| アプリケーション開発者、データエンジニア、DBA |
| タスク | 説明 | 必要なスキル |
|---|---|---|
|
| DBA、データエンジニア |
PostgreSQL 関数を実装します。 | SQL Server のハッシュロジックをレプリケートするには、次の PostgreSQL 関数を実装します。大まかに言うと、この関数では次のステップを使用します。
| データエンジニア、DBA、アプリケーション開発者 |
関数をテストします。 | 関数をテストするには、SQL Server のサンプルデータを使用して、一致するハッシュ値を検証します。次のコマンドを実行します。
| アプリ開発者、DBA、データエンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
関連するテーブルでトリガーを作成します。 | 挿入または更新時にハッシュ値を自動的に生成するためのトリガーを、関連するテーブルで作成するには、次のコマンドを実行します。
| アプリケーション開発者、データエンジニア、DBA |
| タスク | 説明 | 必要なスキル |
|---|---|---|
移行スクリプトを開発するか、 を使用します AWS DMS。 | 移行スクリプトを作成するか AWS DMS 、 を使用して既存のデータのハッシュ値 (
| データエンジニア、アプリケーション開発者、DBA |
新しい PostgreSQL ハッシュ関数を使用します。 | 新しい PostgreSQL ハッシュ関数を使用して一貫性を確保するには、以下を行います。
| アプリ開発者、DBA、DevOps エンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
アプリケーションクエリを特定します。 | ハッシュ値を使用するアプリケーションクエリを特定するには、以下を行います。
| アプリ開発者、DBA、データエンジニア |
クエリを変更します。 | 必要に応じて、新しい PostgreSQL ハッシュ関数を使用するようにクエリを変更します。以下の操作を実行します。
| アプリ開発者、DBA、データエンジニア |
| タスク | 説明 | 必要なスキル |
|---|---|---|
テストを実行します。 | 本番データのサブセットを使用して徹底的なテストを実行するには、以下を行います。
| アプリケーション開発者、データエンジニア、DBA |
ハッシュ値が一致することを検証します。 | SQL Server と PostgreSQL 間でハッシュ値が一致することを検証するには、以下を行います。
| アプリケーション開発者、データエンジニア、DBA |
アプリケーションの機能を検証します。 | 移行されたデータと新しいハッシュ実装を使用してアプリケーションの機能を検証するには、以下を行います。
| アプリ開発者、DBA、データエンジニア |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
ハッシュ値が一致しません。 | ソースとターゲット間の文字エンコードと照合順序を検証します。詳細については、「Manage collation changes in PostgreSQL on Amazon Aurora and Amazon RDS |
関連リソース
AWS ブログ
その他のリソース
PostgreSQL pgcrypto モジュール
(PostgreSQL ドキュメント) PostgreSQL トリガー関数
(PostgreSQL ドキュメント) SQL Server HASHBYTES 関数
(Microsoft ドキュメント)