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

PolarDB:機能

最終更新日:Jan 14, 2026

このトピックでは、暗号化データベースの機能について説明します。

適用範囲

このトピックで説明する機能は、マイナーエンジンバージョンが 2.0.14.9.14.0 以降の PolarDB for PostgreSQL クラスター (PostgreSQL 14 を実行) で利用できます。

説明

マイナーエンジンバージョンは、コンソールで表示するか、SHOW polardb_version; 文を実行して確認できます。ご利用のクラスターがバージョン要件を満たしていない場合は、マイナーエンジンバージョンをアップグレードできます。

制限事項

  • プレーンテキスト列と暗号文列の両方を含む操作はサポートされていません。例: SELECT * FROM table_name WHERE plaintext_col < ciphertext_col;

    説明

    この例では、table_name はテーブル名、plaintext_col はプレーンテキスト列、ciphertext_col は暗号文列です。

  • 暗号化データベースは、カスタマーマスターキー (CMK) を生成またはバックアップするサービスを提供していません。お客様自身で CMK を生成する必要があります。キーを紛失した場合、既存のデータにアクセスできなくなります。そのため、CMK は安全な場所にバックアップしてください。

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

暗号化データベースでは、以下のデータ型が定義されています。これらのデータ型とその演算子は SQL クエリとトランザクションをサポートし、標準の SQL 構文と互換性があります。

データ型

説明

サポートされる暗号文の計算

enc_int4

暗号化された整数。対応するプレーンテキストは 4 バイト整数です。

+, -, *, /, %, >, =, <, >=, <=, !=

enc_int8

暗号化された整数。対応するプレーンテキストは 8 バイト整数です。

enc_float4

暗号化された浮動小数点数。対応するプレーンテキストは 4 バイト単精度浮動小数点数です。

+, -, *, /, >, =, <, >=, <=, !=

enc_float8

暗号化された浮動小数点数。対応するプレーンテキストは 8 バイト倍精度浮動小数点数です。

+, -, *, /, >, =, <, >=, <=, !=, pow

enc_decimal

暗号化された 10 進数。対応するプレーンテキストは 10 進数です。

+, -, *, /, >, =, <, >=, <=, !=, pow, %

enc_text

暗号化された可変長文字列。対応するプレーンテキストは UTF-8 エンコードのテキスト文字列です。

substr/substring, ||, like, ~~, !~~, >, =, <, >=, <=, !=

enc_timestamp

暗号化されたタイムスタンプ。対応するプレーンテキストはタイムゾーンなしのタイムスタンプです。

extract year, >, =, <, >=, <=, !=

det_type

任意の型の暗号化データ。同じプレーンテキストから同じ暗号文が生成されます。

=

rnd_type

任意の型の暗号化データ。同じプレーンテキストから異なる暗号文が生成されます。

N/A。ストレージのみがサポートされます。暗号文に対する計算はサポートされていません。

ore_int8

順序を保持する暗号化整数。対応するプレーンテキストは 8 バイト整数です。この暗号化は高信頼実行環境に依存しません。

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

ore_float8

順序を保持する暗号化浮動小数点数。対応するプレーンテキストは 8 バイト倍精度浮動小数点数です。この暗号化は高信頼実行環境に依存しません。

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

SQL 例:

CREATE TABLE example ( 
  account enc_int4,         -- 口座番号、プレーンテキストの integer 型に対応
  name enc_text,            -- 名前、プレーンテキストの text 型に対応
  balance enc_float4,       -- 口座残高、プレーンテキストの real 型に対応
  credit enc_float4,        -- 与信限度額、プレーンテキストの real 型に対応
  quota real,               -- プレーンテキスト列
  address enc_text,         -- 住所、プレーンテキストの text 型に対応
  remark text,              -- 備考
  PRIMARY KEY (account)     -- account 列をプライマリキーとして使用
);

クエリ句

機密データベースは、一般的なデータベースクエリについて、以下の句をサポートしています。

説明

例では、table_name はテーブル名、col は列名、ciphertext_col は暗号文列です。

WHERE

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

ORDER BY

GROUP BY

SELECT col1, count(*)
    FROM table_name
    GROUP BY col1
    HAVING col1 IS NOT NULL;

HAVING

INTERSECT

SELECT ACCOUNT 
    FROM table_name
    WHERE col1 IS NOT NULL
EXCEPT
    SELECT ACCOUNT 
    FROM table_name
    WHERE ciphertext_col1 > ciphertext_col2 
LIMIT 1;

EXCEPT

UNION

LIMIT

OFFSET

インデックスによる高速化

暗号化列にインデックスを作成して、クエリを高速化できます。例:

CREATE INDEX IF NOT EXISTS name_index_btree on table_name USING btree (name);
CREATE INDEX IF NOT EXISTS name_index_hash on table_name USING hash (name);

マルチユーザー権限付与

暗号化データベースでは、暗号文データはデフォルトでユーザー間で分離されています。Behavior Control List (BCL) を発行して他のユーザーにアクセス権を付与し、共有データでの共同計算を有効にすることができます。詳細については、「複数ユーザーへのアクセス権の付与」をご参照ください。

プレーンテキストと暗号文の型変換

列の型をプレーンテキストと暗号文の間で変換できます。詳細については、「プレーンテキストと暗号文の間の変換」をご参照ください。

重要

この機能を使用するには、現在のユーザーが BCL 権限を持っている必要があります。