すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:サポートされる機能

最終更新日:Jan 16, 2024

このトピックでは、さまざまなインスタンスタイプでサポートされている完全暗号化データベース機能の機能について説明します。

制限事項

  • ステートメントを実行して、プレーンテキスト列と暗号文列の両方に対して同時に操作を実行することはできません。 例: SELECT * FROM table_name WHERE plaintext_col < ciphertext_col;

    説明

    上記のステートメントでは、table_nameはテーブル名、plainte_colはプレーンテキスト列、ciphertext_colは暗号文列を示します。

  • 完全暗号化データベース機能は、マスター暗号化キー (MEK) の生成とバックアップには使用できません。 MEKを手動で作成する必要があります。 MEKを紛失すると、既存の暗号化データにアクセスできなくなります。 MEKをバックアップすることをお勧めします。

使用上の注意

完全暗号化データベース機能を使用するには、ApsaraDB RDS for PostgreSQLインスタンスのマイナーエンジンバージョンが20230830以降であることを確認する必要があります。

説明

RDSインスタンスのマイナーエンジンバージョンを更新する方法の詳細については、「マイナーエンジンバージョンの更新」をご参照ください。

サポートされるデータ型と関連演算子

完全暗号化データベース機能は、次のデータ型を定義および提供します。 データ型および関連する演算子は、SQLクエリおよびトランザクションをサポートし、標準SQL構文と互換性があります。

データ型

説明

サポートされる演算子

enc_int4

平文の4バイト整数に対応する暗号化された整数。

+ 、-、* 、/、% 、> 、=、<、≥ 、≤ 、および! =

enc_int8

平文の8バイトの整数に対応する暗号化された整数。

enc_float4

平文の4バイトの単精度浮動小数点数に対応する暗号化された浮動小数点数。

+ 、-、* 、/、> 、=、<、≥ 、≤ 、および! =

enc_float8

平文の8バイトの倍精度浮動小数点数に対応する暗号化された浮動小数点数。

+, -, *, /, >, =, <, ≥, ≤, ! =、およびpow

enc_decimal

decimalデータ型の平文データに対応する暗号化された10進数。

+, -, *, /, >, =, <, ≥, ≤, ! =、pow、および %

enc_text

TEXTデータ型の平文データに対応する可変長の暗号化文字列。 文字列はUTF-8でエンコードされます。

substr/substring, ||, like, ~~, !~~, >, =, <, ≥, ≤, and! =

enc_timestamp

timestamp WITHOUT TIME ZONEデータ型のプレーンテキストデータに対応する暗号化されたタイムスタンプ。

extract year, >, =, <, ≥, ≤, and! =

det_type

暗号化されたデータ。 同じ平文データは、同じ暗号文データに暗号化される。

=

rnd_type

暗号化されたデータ。 同一の平文データは、異なる暗号文データに暗号化される。

N/A (暗号文ストレージはサポートされていますが、暗号文コンピューティングはサポートされていません。)

ore_int8

順番に暗号化され、平文の8バイトの整数に対応する整数。 暗号化は信頼できるハードウェアに依存しません。

>, =, <, >=, <=, and! =

ore_float8

順番に暗号化され、平文の8バイトの倍精度浮動小数点数に対応する浮動小数点数。 暗号化は信頼できるハードウェアに依存しません。

>, =, <, >=, <=, and! =

サンプルSQL文:

CREATE TABLEの例 ( 
  account enc_int4, -- INTEGER型の平文データに対応するアカウント。
  name enc_text, -- TEXT型の平文データに対応する名前。
  balance enc_float4, -- REAL型の平文データに対応する口座残高。
  credit enc_float4, -- REALタイプの平文データに対応するアカウントのクレジットライン。
  quota real, -- 平文列。
  address enc_text, -- TEXT型の平文データに対応するアドレス。
  発言テキスト、-発言。
  PRIMARY KEY (account) -- 主キーとして使用されるアカウント列。
);

クエリ句

完全暗号化データベース機能は、一般的なデータベースクエリに必要な次の句をサポートします。

説明

次の例では、table_nameはテーブル名、colは列名、ciphertext_colは暗号文列を示します。

条項

WHERE

SELECT col1, col2
    FROM table_name
    WHERE ciphertext_col1 > ciphertext_col2 
    注文BY col1; 

ORDER BY

GROUP BY

SELECT col1, count(*)
    FROM table_name
    グループBY col1
    持っているcol1はNULLではない; 

持っている

INTERSECT

SELECTアカウント 
    FROM table_name
    col1がNULLではない場合
例外
    アカウントを選択 
    FROM table_name
    WHERE ciphertext_col1 > ciphertext_col2
LIMIT 1; 

EXCEPT

UNION

リミット

オフセット

インデックス

完全暗号化データベース機能を使用すると、暗号化列にインデックスを作成してクエリを高速化できます。 例:

CREATE INDEXが存在しない場合は、table_nameにname_index_btreeを使用してbtree (name);
CREATE INDEXが存在しない場合name_index_hash on table_name USING hash (name); 
説明

ApsaraDB RDS for PostgreSQLは、encdb_btree拡張機能をサポートしています。 これにより、完全暗号化データベースの暗号文インデックスに対する操作が容易になります。 詳細については、「encdb_btreeを使用して暗号文インデックスの操作を容易にする」をご参照ください。

マルチユーザー権限付与

完全に暗号化されたデータベースでは、さまざまなユーザーの暗号文データが自動的に分離されます。 暗号文データの統合コンピューティングを実行するには、ビヘイビアコントロールリスト (BCL) を発行して、暗号文データに対するアクセス許可を付与します。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのマルチユーザーデータに対するアクセス許可の付与」をご参照ください。

平文と暗号文の変換

完全暗号化データベース機能を使用すると、列の種類を変更できます。 プレーンテキストと暗号文の間で列タイプを変更できます。 詳細については、「平文と暗号文の変換」をご参照ください。

重要

平文と暗号文の間でデータを変換する前に、BCLを使用して許可されていることを確認してください。