全部產品
Search
文件中心

ApsaraDB RDS:功能支援

更新時間:Jun 19, 2024

本文介紹全密態資料庫的功能支援情況。

功能限制

  • 暫不支援明文列與密文列混合運算,例如:SELECT * FROM table_name WHERE plaintext_col < ciphertext_col;

    說明

    樣本中table_name表示表名,plaintext_col表示明文列,ciphertext_col表示密文列。

  • 全密態資料庫不提供使用者主要金鑰的產生和備份服務,您需要自行產生使用者主要金鑰。一旦您丟失密鑰,將無法再訪問已有的資料。因此我們建議您妥善備份使用者主要金鑰。

注意事項

本文介紹的全密態資料庫支援的功能,需確保RDS PostgreSQL執行個體核心版本大於等於20230830。

說明

如需升級核心小版本,請參見升級核心小版本

支援的資料類型和相關運算元

全密態資料庫定義並新增了以下資料類型,這些資料類型及其相應運算元的範圍內,支援SQL查詢與事務,相容標準SQL文法。

資料類型

說明

支援密文計算

enc_int4

加密後的整型數,對應的明文資料為4位元組整型數。

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

enc_int8

加密後的整型數,對應的明文資料為8位元組整型數。

enc_float4

加密後的浮點數,對應的明文資料為4位元組單精確度浮點數。

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

enc_float8

加密後的浮點數,對應的明文資料為8位元組雙精確度浮點數。

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

enc_decimal

加密後的十進位數,對應的明文資料類型為decimal。

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

enc_text

加密後的可變長度字串,對應的明文資料類型為text,編碼為UTF-8。

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

enc_timestamp

加密後的時間戳記,對應的明文資料類型為timestamp without time zone。

extract year、>、=、<、>=、<=、!=

det_type

加密後的任意資料,相同的明文資料加密得到相同的密文資料。

=

rnd_type

加密後的任意資料,相同的明文資料加密得到不同的密文資料。

NA(僅支援密文儲存,不支援密文計算)

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);
說明

RDS PostgreSQL支援外掛程式encdb_btree,能夠提高全密態資料庫密文索引相關操作的效率。更多資訊,請參見加速密文索引(encdb_btree)

多使用者授權

在全密態資料庫中,不同使用者之間天然存在密文資料隔離,可以通過簽發BCL(Behavior Control List)授權,實現不同使用者之間資料融合計算。更多資訊,請參見授權多使用者訪問

明文-密文類型轉換

全密態資料庫支援修改列類型(明文類型修改為密文類型,密文類型修改為明文類型)。更多資訊,請參見明文和密文的轉換

重要

使用該功能前,目前使用者需要先獲得BCL授權。