ページの先頭行へ戻る
Symfoware Analytics ServerV12.2.0 利用ガイド
FUJITSU Software

7.2.1 データベースの暗号化

Symfoware Analytics Serverでは、セキュリティを強化するためにカラムナテーブルのカラム単位での暗号化を提供します。

暗号化には、128ビットのアルゴリズムおよび暗号化キーを使用します。データの判読は不可能であり、暗号化キーがなければ解読できません。

データ秘匿化は返却データを改訂することにより、データ表示に対するセキュリティを強化します。これに対して、暗号化では物理データそのものを物理的に暗号化するため、データベースを直接参照されたとしても解読は不可能であり、より強固なセキュリティを確保できます。

ポイント

本機能は、Symfoware Analytics Server Advanced Security Optionを利用することで実現できます。

7.2.1.1 暗号化のメリット

データベースの暗号化を利用すると、以下のようなメリットがあります。

7.2.1.2 暗号化キー

暗号化キーを利用してデータの暗号化および復号化を行います。暗号化したデータは、そのデータを暗号化した暗号化キーを用いてのみ復号化を行えます。

暗号化キーの値の指定内容

暗号化キーの値には、長さが16文字以上255文字以内の半角英数字で、大文字と小文字を含んだものを選びます。

注意

暗号化キーを紛失しないでください。暗号化キーを紛失した場合、暗号化したデータにアクセスできなくなります。また、データを修復する方法もありません。

7.2.1.3 暗号化が可能なデータ型

暗号化可能なデータ型は、“H.3 暗号化が可能なデータ型”を参照してください。

7.2.1.4 カラム暗号化の手順

カラム暗号化の手順について説明します。

注意

暗号化はバイパスモードのみ対応しています。

7.2.1.4.1 DWHサーバの起動

スーパーユーザーでDWHサーバにログインしたあと、環境変数を設定してから以下のコマンドを実行します。

例)
/opt/FJSVsymas/bin/symasstart.sh

参照

7.2.1.4.2 セキュリティオプションの有効化

symassetcrptenvコマンドを実行して、Symfoware Analytics Server Advanced Security Optionを有効化します。
symassetcrptenvコマンドは、DWHサーバが起動していることを確認してから実行してください。

/opt/FJSVsymas/bin/symassetcrptenv.sh

Symfoware Analytics Server Advanced Security Optionを有効化すると、以下のシステム関数が利用できます。

Symfoware Analytics Server Advanced Security Optionを無効化する場合には、symasunsetcrptenvを実施してください。

参照

7.2.1.4.3 暗号化の設定

以下の手順で暗号化の設定を行います。

  1. データベースpostgresへの接続

    psqlコマンドを使用して、データベースpostgresに接続します。

    サーバのIPアドレスが“192.0.2.0”、ポート番号が“26500”の場合の例を示します。

    例)
    psql -d postgres -h 192.0.2.0 -p 26500
    psql (9.2.8)
    Type "help" for help.
  2. カラムナテーブルの作成

    以下のように実行してカラムナテーブルを作成します。

    例)
    CREATE FOREIGN TABLE table1 (
    username char(100),
    number1 integer,
    rate decimal(5,3)
    )
    SERVER dwh_server options (database 'symfoas', schema 'symfoasuser' , table 'postgres_public_table1');
  3. 暗号化カラムナテーブルの格納構造の作成

    暗号化したデータを格納するためのカラムナテーブルを作成します。

    暗号化データは従来のデータ型では保存できないため、pgxa_create_table_for_encryptシステム関数を利用して暗号化データに適した形でカラムナテーブルを生成する必要があります。

    参照

    pgxa_create_table_for_encryptシステム関数の詳細は、“J.4.24 pgxa_create_table_for_encrypt”を参照してください。

    以下の例では、“username”カラムおよび“rate”カラムを暗号化カラムとし格納構造を作成します。

    例)
    postgres=# SELECT pgxa_create_table_for_encrypt('table1', 'MODE_COLUMN', 'username, rate' );
7.2.1.4.4 カラムへの暗号化データの格納

データを暗号化して格納するには、pgxa_put_encryptdataシステム関数を使用します。

pgxa_put_encryptdataシステム関数で暗号化を行うには、データのほかに暗号化キーおよび暗号化するカラムのデータ型を指定する必要があります。

以下の例では、暗号化対象として設定したusernameカラムおよびrateカラムに対して、それぞれ暗号化キー“SecurityKey00001”および“SecurityKey00002”を用いてpgxa_put_encryptdataシステム関数で暗号化したあと、テーブルtable1に挿入しています。
また、暗号化するデータ(以下の例では、“富士通太郎”および“0.234”)に対して、CAST関数を使用して外部テーブルの表定義で指定したデータ型への明示的な型変換を実施する必要があります。

postgres=# INSERT INTO table1 (username, number1, rate) VALUES (
postgres(=# pgxa_put_encryptdata( CAST('富士通太郎' as char(100) ), 'SecurityKey00001'),
postgres(=# 100,
postgres(=# pgxa_put_encryptdata( CAST( 0.234 as decimal(5,3)), 'SecurityKey00002'));

注意

  • 同じカラムに対して、CAST関数で通知するデータ型および暗号キーには常に同じ値を指定してください。

  • CAST関数で通知するデータ型および暗号キーに異なる値を指定した場合、復号化できなくなります。

7.2.1.4.5 暗号化データの参照

暗号化を行ったカラムのデータは、判読できない形式のデータです。判読が可能なもとの形式のデータに復号化するためには、暗号化キーを使用して復号化を行ったあと参照します。

復号化には、pgxa_get_decryptdataシステム関数を使用します。
復号化を行うには、暗号化を行う場合と同様に暗号化キーおよび暗号化されたカラムのデータ型が必要です。暗号化キーおよび暗号化されたカラムのデータ型には、暗号化を行ったときに使用した値と同じものを使用する必要があります。暗号化キーおよび暗号化されたカラムのデータ型が異なっていた場合、復号化を行えずにSQL文の実行は異常終了します。

参照

pgxa_get_decryptdataシステム関数の詳細は、“J.4.23 pgxa_get_decryptdata”を参照してください。

ポイント

BIツールなどから暗号化されたカラムを参照する場合には、事前に復号化されたカラムを参照するviewを作成してそのviewを参照することをお勧めします。

viewの作成方法については、“J.4.11 pgxa_create_view”も合わせて参照してください。

復号化して参照する場合

以下の例では、usernameカラムおよびrateカラムの復号化を行ったあとデータを参照しています。

データ型には、暗号化データを格納するために定義した外部テーブルのカラムのデータ型“char(100)”および“decimal(5,3)”を指定しています。

例)
postgres=# SELECT pgxa_get_decryptdata( username, 'SecurityKey00001', 'char(100)' ) as username, number1, pgxa_get_decryptdata( rate, 'SecurityKey00002', 'decimal(5,3)')  as rate  FROM  table1;
  username     |  number1    |   rate
---------------+-------------+--------------------------
   富士通太郎  |    100      |           
   富士通次郎  |    75       |      0.345
   富士通三郎  |             |      0.456
   神戸  花子  |             |      0.567
   神戸  未来  |    80       |      0.678
(5 row)

復号化せずに参照する場合

暗号化を行ったデータは、Symfoware Analytics Serverで独自のデータ型として保存されてデータ長も変わっているため、復号化を行わずに参照した場合の動作は保証されていません。SQL文の実行は異常終了します。
しかし、以下の方法を使用すると、復号化を行わずに暗号化されたままのデータを参照できます。

以下の例では、char型であるusernameカラムを復号化せずにもとのデータ型の大きさにおさまるように参照しています。
usernameカラムは暗号化されているため、判読できない形式のデータとして表示されます。

例)
postgres=# SELECT left(username, 10) as username_crpt , number1, pgxa_get_decryptdata( rate, 'SecurityKey00002', 'decimal(5,3)') as rate FROM  table1;
 username_crpt |  number1    |   rate
---------------+-------------+--------------------------
   A8ED2AA42E  |    100      |           
   C4A0C74321  |    75       |      0.345
   DC84337B66  |             |      0.456
   5093953F7C  |             |      0.567
   FC5417B211  |     80      |      0.678
 (5 row)

注意

  • 暗号化を行ったデータを結果カラムに設定する場合は、必ず復号化を行ってください。暗号化を行ったデータは、暗号前のデータとはデータ型や長さが異なるため、SQL文の実行の異常終了や正しくない値を参照して誤動作する可能性があります。

  • 暗号化キーを紛失しないでください。暗号化キーを紛失した場合、暗号化したデータにアクセスできなくなります。また、データを修復する方法もありません。

7.2.1.4.6 検索条件への暗号化カラムの設定

検索条件への暗号化カラムの設定について説明します。検索条件への暗号化カラムの設定は、以下の2つの方法で行えます。

注意

  • 1つの暗号化カラムに対して、同じ暗号化キーで復号化を行ってください。

  • 暗号化データは暗号化を行ったあとのデータのみで管理されているため、暗号化を行ったカラムを検索条件およびソート条件にした場合は、復号化を行いながら評価します。そのため、暗号化を行っていないカラムを検索条件およびソート条件にした場合と比較して、処理時間が数倍から数十倍程度遅くなる場合があります。

  • 暗号化キーを紛失しないでください。暗号化キーを紛失した場合、暗号化したデータにアクセスできなくなります。また、データを修復する方法もありません。