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

PolarDB:平文と暗号文の間でデータを変換する

最終更新日:Jun 28, 2024

常に機密性の高いデータベースクラスターを使用する場合、列の種類を平文と暗号文の間で変換できます。

前提条件

構文

ALTER TABLE <table_name> 
    ALTER COLUMN <column_name> [SET DATA] TYPE <Data type after conversion> 
    USING <Data conversion function>(<column_name>[, <keyname>]);
説明
  • データを暗号文から平文に変換する場合は、column_nameパラメーターのみを設定する必要があります。

  • データを平文から暗号文に変換する場合は、column_nameパラメーターのみを設定できます。 column_nameパラメーターとkeynameパラメーターを同時に設定することもできます。

表1データ変換関数

平文データ

暗号文データ

平文から暗号文への変換関数

暗号化テキストから平文への変換関数

int4

enc_int4

encdb.enc_int4_encrypt

encdb.de crypt

int8

enc_int8

encdb.enc_int8_encrypt

encdb.de crypt

float4

enc_float4

encdb.enc_float4_encrypt

encdb.de crypt

float8

enc_float8

encdb.enc_float8_encrypt

encdb.de crypt

numeric

enc_decimal

encdb.enc_decimal_encrypt

encdb.de crypt

text

enc_text

encdb.enc_text_encrypt

encdb.de crypt

timestamp

enc_timestamp

encdb.enc_timestamp_encrypt

encdb.de crypt

  • 構築されたキー名のキーを使用して、列内のデータを平文から暗号文に変換します。

    1. キー名を作成します。

      SELECT encdb.keyname_generate(<user_name> 、<database_name> 、<schema_name> 、<table_name> 、<column_name>);
    2. keynameのキーを生成します。

      SELECT encdb.de k_generate(<keyname>[, <json_params>]);

      encdb.de k_generatejson_paramsパラメーターはオプションです。 このパラメーターにはJSON形式の値を指定できます。 次の表に、サポートされているキーと値のペアを示します。

      キー

      説明

      algorithm

      暗号化アルゴリズム。

      デフォルト値: AES_128_GCM。

      policy

      DEFAULT

      暗号化ポリシーです。 パラメーターは予約されています。 値はDEFAULTとして固定されています。

      flags

      • RND

      • DET

      暗号化方法。 有効な値:

      • RND: ランダム暗号化

      • DET: 決定論的暗号化

      デフォルト値: RND

      mekid

      ユーザーのマスター暗号化キー (MEK) ID

      データ暗号化キー (DEK) の生成に使用されるMEKのID。

      デフォルト値は、現在のユーザーのMEK IDです。

    3. keynameのキーを使用して、列内のデータを平文から暗号文に変換します。 たとえば、データをint4型からenc_int4型に変換できます。

      ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DATA TYPE enc_int4 USING encdb.enc_int4_encrypt(<column_name>, <keyname>);
  • 現在のデータベースのデフォルトキーを使用して、列のデータを平文から暗号文に変換します。

    説明

    現在のデータベースで使用されているデフォルトキーのキー名は、|<User >|< database> | です。

    ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DATA TYPE enc_int4 USING encdb.enc_int4_encrypt(<column_name>);
  • 列のデータを平文から暗号文に変換します。

    ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DATA TYPE int4 USING encdb.decrypt(<column_name>);