このトピックでは、PolarDB の PolarProxy が提供する PolarDB 常時機密性機能について説明します。PolarDB。
前提条件
PolarDB の PolarProxy のバージョンは 2.8.36 以降です。PolarProxy のバージョンの表示または更新方法については、「リビジョン バージョン バージョン管理」をご参照ください。
背景情報
今日の規制要件と業界標準では、データのライフサイクル全体にわたる堅牢なセキュリティ対策の採用が必要であり、従来のサードパーティによるセキュリティ強化とクライアントベースの暗号化は、コスト、アーキテクチャの適応、およびデータベースのパフォーマンスの点で不十分なため、もはや十分ではありません。このような状況において、エンドツーエンドの暗号化をサポートするデータベースが業界全体で普及しつつあります。PolarDB は、このような要件への対応として、PolarDB 常時機密性も提供しています。
この機能は、以下のシナリオで最大の利点を発揮します。
信頼できない環境にデータを保存する場合: これらのシナリオには、クラウド上、または顧客のオンプレミス データセンターにデータを保存することが含まれ、クラウド サービス プロバイダーや組織および顧客の O&M 担当者による不正アクセスにつながる可能性があります。
サードパーティ プロバイダーによるデータ管理サービスを使用する場合: これにより、ビジネス上の機密情報がサービス プロバイダーに公開される可能性があります。これは、データに個人識別情報や遺伝データなどの機密データが含まれている場合、特に危険です。
他の組織とデータを共有する場合: これらのシナリオには、共同リスク管理や国際的なサービス提供が含まれ、関係する組織はデータ コンプライアンス要件によって制限され、プレーンテキスト データを直接共有することはできません。また、他の企業とマーケティングを実施し、競争関係のためにデータを保護したい場合も含まれます。
特徴
すべての SQL オペレーターがサポートされています。コードを変更することなく、アプリケーションをこの機能に適応させることができます。アプリケーションのビジネス コードを変更することなく、EncJDBC に切り替えるためのわずかな構成のみが必要です。詳細については、「EncJDBC の統合」をご参照ください。
クエリ結果は暗号化され、データベース アカウントとビジネス データのセキュリティが確保されます。特定のデータのみを暗号化するルールを構成できます。PolarDB 常時機密性が指定されたデータをクエリすると、カスタム マスターキー(CMK)を使用して暗号化を実行するため、キーを持つユーザーのみがデータを表示できます。このように、データベース アカウントが漏洩した場合でも、侵入者はクエリ結果のデータを表示できません。データベースの開発担当者や O&M 担当者でさえ、プレーンテキストでクエリ結果を取得することはできません。
データを暗号化するために使用される CMK を指定できます。独自のキー管理サービスまたはサードパーティのキー管理サービスを使用し、キーをデータベース クライアントに動的に渡すことができます。承認されたユーザーのみが使用できるキーは、安全な配布メカニズムを通じてクエリで有効になり、使用後に自動的に取り消されるため、盗難の可能性を防ぎます。
PolarDB 常時機密性が有効になっている場合、パフォーマンスはわずかに低下するだけです。PolarDB 常時機密性が有効になっている場合のデータ処理のパフォーマンスは、暗号化されるデータ列の数に反比例します。クエリに含まれる暗号化データが多いほど、パフォーマンスは低下します。TPC-C テストでは、列の 20%、50%、100% が暗号化されている場合、パフォーマンスはそれぞれ PolarDB 常時機密性が有効になっていない場合の 93%、86%、79% です。パフォーマンステストの結果の詳細については、「パフォーマンステスト」をご参照ください。
シナリオ
PolarDB 常時機密性は、データの機密性と整合性を確保する機能を備えた次世代データベース フレームワークと製品を提供するために開発されました。最適な設計により、データベースは高パフォーマンス、安定性、および費用対効果を確保しながら、セキュリティ機能を提供できます。
PolarDB 常時機密性の典型的なシナリオを以下に示します。
アプリケーションからデータベースに送信されるデータを暗号化する
ほとんどの場合、アプリケーション プロバイダーはデータの所有者であり、通常はデータベース サービスとその O&M 担当者がビジネス データにアクセスできないようにしたいと考えています。
ユーザーからアプリケーションに送信されるデータを暗号化する
個人用のアプリケーションでは、健康や金融に関連するデータなど、データの一部はユーザーが所有しており、通常は、アプリケーションがデータの管理と分析を行う際に、プレーンテキストでデータ自体にアクセスできないようにしたいと考えています。
暗号化されたデータを安全かつ確実に共有する
暗号化に使用されるキーは、データ所有者のみが使用できます。データ所有者が他のユーザーとデータを共有する必要がある場合、コンプライアンス要件を満たすために、キーを公開せずに共有したいと考えています。
制限事項
暗号化ルールはプライマリ エンドポイントには適用されません。クラスター エンドポイントまたはカスタム クラスター エンドポイントを使用する必要があります。
PolarDB 常時機密性機能は、
COM_QUERYコマンドのみをサポートしています。COM_STMT_PREPAREなどの他のコマンド タイプはサポートされていません。EncJDBC はテキスト プロトコルのみをサポートしています。バイナリ プロトコルはサポートされていません。プリペアド ステートメントを活用する操作は、常にテキスト プロトコル クエリを介して完了します。PolarDB 常時機密性と動的マスキングは同時に有効にすることはできません。
動的マスキング ルールが存在する場合、PolarDB 常時機密性を有効にするには、既存のすべてのマスキング ルールを削除し、タイプが暗号化である新しいルールを作成する必要があります。
CMK は、指定後に変更することはできません。クラスター全体で同じ CMK を使用します。
SecureGW をバイパスしてネイティブ MySQL カーネルに直接接続する場合、暗号化機能は有効になりません。これを行わないことをお勧めします。不正アクセスの影響を最小限に抑えるために、ログ監査などの他のセキュリティ機能を有効にすることもお勧めします。
使用方法
詳細については、「暗号化ルールの管理」をご参照ください。