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