Data Security Center (DSC) の列レベルの暗号化機能は、ApsaraDB RDS for MySQL、ApsaraDB RDS for PostgreSQL、PolarDB for MySQL、PolarDB for PostgreSQL、PolarDB for PostgreSQL (Oracle Compatible)、および PolarDB-X 2.0 などのデータベース内の特定の列を暗号化します。この機能により、不正ユーザーがクラウドプラットフォームソフトウェアやデータベース接続ツールを通じてプレーンテキストの機密データにアクセスするのを防ぎ、内部および外部のセキュリティ脅威を軽減します。
メリット
-
アプリケーションの変更不要:クライアントドライバーが自動的に暗号化および復号を処理するため、アプリケーションに対して透明であり、導入コストを削減できます。
-
低オーバーヘッド:TPC-C ベンチマークテストによると、パフォーマンスはプレーンテキスト操作の 93 % 以上を達成します。
-
エンドツーエンドの暗号保護:重要なデータは常に暗号文として返されます。データベースアカウントの認証情報が漏洩した場合でも、データは安全に保たれます。
-
完全な SQL サポート:暗号化されたデータに対しても、すべてのネイティブ SQL クエリ関数が機能制限なくサポートされます。
-
安全な鍵管理:使用する鍵を指定できます。サービスが終了すると鍵は即座に削除され、鍵の更新およびローテーションもサポートされています。
基本概念
DSC における列レベルの暗号化は、暗号化設定とアカウント権限管理の 2 つの主要部分で構成されます。暗号化設定では、暗号化アルゴリズム、方法、および対象範囲(データベースインスタンス、データベース、テーブル、列)を定義します。アカウント権限管理では、どのデータベースアカウントが暗号化されたデータにアクセスできるか、およびその権限レベルを制御します。
-
暗号化アルゴリズム:列レベルの暗号化では、業界標準の SM4-128-GCM、AES-128-GCM、および AES-256-GCM 暗号化アルゴリズムを使用して、指定された列のデータを暗号化します。
-
暗号化方法:列レベルの暗号化では、指定されたデータベースの暗号鍵を管理する方法として、ローカル鍵 および KMS 鍵 の 2 種類をサポートしています。
-
ローカル鍵:暗号鍵はご利用のローカル環境で生成・保管されます。
-
KMS 鍵(推奨):Key Management Service (KMS) を使用して、指定されたデータベースの暗号鍵をホストします。DSC では、KMS で作成・管理する Customer Master Key の使用をサポートしています。鍵タイプの詳細については、「Key types」をご参照ください。
-
-
アカウント権限:
アカウントとは、ご利用の ApsaraDB RDS for MySQL、ApsaraDB RDS for PostgreSQL、PolarDB for MySQL、PolarDB for PostgreSQL、PolarDB for PostgreSQL (Oracle Compatible)、および PolarDB-X 2.0 インスタンスから取得されたデータベースアカウントであり、DSC がアクセスを許可されたものです。
以下の表は、利用可能な権限を示しています。
権限
説明
Ciphertext Permission (JDBC Decryption)
この権限を持つアカウントはデフォルトで、暗号化された列の暗号文にアクセスできます。SDK および常時機密クライアントドライバーを使用して、ローカル鍵またはKMS 鍵でデータを復号し、プレーンテキストを表示できます。
Ciphertext Permission (No Decryption Permission)
このアカウントは、暗号化された列の暗号文にのみアクセスできます。いかなる手段でもデータを復号することはできません。
Plaintext Permissions
データベースで列レベルの暗号化が有効になると、この権限を持つアカウントは暗号化設定をバイパスし、暗号化された列のプレーンテキストデータに直接アクセスできます。
クォータと制限事項
|
データベースタイプ |
バージョン |
暗号化アルゴリズム |
暗号化方法 |
権限 |
|
ApsaraDB RDS for MySQL |
メジャーエンジンバージョンが MySQL 5.7 または MySQL 8.0、マイナーエンジンバージョンが 20240731 以降である必要があります。 |
|
|
|
|
ApsaraDB RDS for PostgreSQL |
メジャーエンジンバージョンが PostgreSQL 16、マイナーエンジンバージョンが 20241230 以降である必要があります。 |
AES-256-GCM。 |
ローカル鍵。 |
|
|
PolarDB for MySQL |
メジャーエンジンバージョンが MySQL 5.7 または MySQL 8.0、データベースプロキシバージョンが 2.8.36 以降である必要があります。 重要
PolarDB for MySQL クラスターに対して列レベルの暗号化ポリシーを設定する場合は、クラスターエンドポイントを使用してクラスターに接続する必要があります。プライマリエンドポイントを使用した場合、列レベルの暗号化ポリシーは適用されません。詳細については、「Configure database proxy」および「Manage endpoints」をご参照ください。 |
AES-128-GCM。 |
ローカル鍵。 |
|
|
PolarDB for PostgreSQL |
メジャーエンジンバージョンが PostgreSQL 14、データベースバージョンが 2.0.14.15.31.0 以降である必要があります。 |
AES-256-GCM。 |
ローカル鍵。 |
|
|
PolarDB for PostgreSQL (Oracle Compatible) |
Oracle 構文互換バージョン 2.0 のみサポートされます。メジャーエンジンバージョンが PostgreSQL 14、データベースバージョンが 2.0.14.15.31.0 以降である必要があります。 |
AES-256-GCM。 |
ローカル鍵。 |
|
|
PolarDB-X 2.0 |
シリーズが Enterprise Edition である必要があります。データベースバージョンが polardb-2.5.0_5.4.20-20250714 以降である必要があります。 |
|
|
課金
DSC では、1 列分の暗号化について無料クォータを提供しています。複数の列を暗号化するには、Column Encryptionサービスを有効化し、十分な数の暗号化列数を購入する必要があります。このサービスはサブスクリプション制です。詳細については、「Billing」をご参照ください。
列レベルの暗号化設定で暗号化方法をKMS 鍵に設定した場合、KMS から鍵ホスティング料金が発生します。詳細については、「Product Billing」をご参照ください。
ワークフロー概要
列レベルの暗号化ワークフロー
次の図は、データベースの列レベルの暗号化を設定するワークフローを示しています。詳細については、「Configure column encryption for a database」をご参照ください。
暗号化データへのアクセス
列レベルの暗号化を設定後、暗号文権限を持つデータベースアカウントが暗号化された列をクエリすると、データベースは暗号文のみを返します。その後、クライアント側でデータを復号してプレーンテキストを取得できます。このプロセスにより、クライアントとデータベース間のデータ転送中にデータが暗号化された状態に保たれます。
クライアントの使用方法
Alibaba Cloud は、Java および Go 向けの常時機密クライアントドライバーを提供しています。暗号文権限(JDBC 復号)を持つデータベースアカウントを使用して、対象データベースの暗号化された列のプレーンテキストデータを復号およびアクセスできます。
|
言語 |
データベースタイプ |
ドキュメント |
|
Java |
|
Integrate EncJDBC(ローカル鍵および KMS 鍵による復号をサポート) |
|
Go |
|
Integrate GoLang driver(ローカル鍵による復号のみサポート) |