kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

★『postgre用データベースのマスクSQL作成.xls』つくってる。

★『postgre用データベースのマスクSQL作成.xls』つくってる。
postgre用データベースのマスキングツール(個人情報保護法対応)です。
Pマーク、ISMSのためのセキュリティ強化対策として作成しました。DBデータにマスクをかけて、重要な情報は表示させないようにします。

■マスク方法:文字の種類は変えない(チェックエラーにならない)ということを主眼にしてます。

    項目内要を2文字めから1文字おきに置換する
   ・' '、'ー'、' 'は変換しない。
     ・全角数字項目は"9"
     ・全角"A"から"Z"は"X"
     ・全角"a"から"z"は"x"
     ・全角カタカナ項目は"ア"
     ・全角ひらがな項目は"あ"
   ・半角カタカナ項目は"ア"
     ・上記以外の全角は"X"
     ・半角数字項目は"9"
     ・半角"A"から"Z"は"X"
     ・半角"a"から"z"は"x"
     ・半角"-",".","@"は変換しない
     ・上記以外の半角は"X"
    nullはnullを戻す

SQL例:(zz_mask4item()関数作成済み

update t_usr set
 tanknjsei = zz_mask4item(tanknjsei) 
,tanknjmei = zz_mask4item(tanknjmei)
,tansei = zz_mask4item(tansei) 
,tanmei = zz_mask4item(tanmei)
,mailadrs = zz_mask4item(mailadrs);

■結果例:

    網坂  一太郎  アミザカ  イチタロウ  i-amizaka@kazpgm.xxx.jp
    ★=>こんな風にマスク
    網X  一X郎  アアザア  イアタアウ  i-axixaxa@kxzxgx.xxx.xp

■zz_mask4item()関数 <−postgre用です。<=EUC_JP用です。UTF-8用とかSJIS用とかはまだ作っていません。

-- Function: zz_mask4item(text)
-- For EUC-JP !! http://kazpgm.ddo.jp/ NewBSD

-- DROP FUNCTION zz_mask4item(text);

CREATE OR REPLACE FUNCTION zz_mask4item(text)
  RETURNS text AS
$BODY$

DECLARE
strItem ALIAS FOR $1;
str TEXT;
strsub TEXT;
i integer;

BEGIN

if strItem is null then
    return null;
end if;

str := '';
strsub := '';

for i in 1..length(strItem) loop
    if mod(i,2) = 1 then
        str := str || substr(strItem,i,1);
    else
        strsub = substr(strItem,i,1);
        if strsub >= '0' AND strsub <= '9' then
            str := str || '9';
        elseif strsub >= 'A' AND strsub <= 'Z' then
            str := str || 'X';
        elseif strsub >= 'a' AND strsub <= 'z' then
            str := str || 'x';
        elseif strsub >= 'ァ' AND strsub <= 'ヶ' then
            str := str || 'ア';
        elseif strsub >= 'ぁ' AND strsub <= 'ん' then
            str := str || 'あ';
        elseif strsub = ' ' OR strsub = 'ー' then
            str := str || strsub;
        elseif strsub >= 'ヲ' AND strsub <= '゚' then
            str := str || 'ア';
        elseif strsub > ' ' then
            str := str || 'X';
        elseif strsub >= '0' AND strsub <= '9' then 
            str := str || '9';
        elseif strsub >= 'A' AND strsub <= 'Z' then 
            str := str || 'X';
        elseif strsub >= 'a' AND strsub <= 'z' then 
            str := str || 'x';
        elseif ascii(strsub) < 255 then
            if strsub = '-' OR strsub = '.' OR strsub = '@' OR strsub = ' '  then 
                str := str || strsub;
            else
                str := str || 'X';
            end if;
        else
        end if;
    end if;
end loop;

return str;

END;

$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION zz_mask4item(text) OWNER TO postgres;

Vectorに載せた「postgre用データベースのマスクSQL作成.xls」ツールの画像

Vectorに載せたReadme.txt

=============================================================================

       postgre用データベースのマスクSQL作成 はじめにお読み下さい。

                Copyright(C) By http://kazpgm.ddo.jp/

=============================================================================

目次

1 postgre用データベースのマスクSQL作成とは
2 主な機能
3 セットアップ方法
4 動作環境
5 使用方法
6 著作権その他
7 サポート等

=============================================================================

1 postgre用データベースのマスクSQL作成とは、
  データベースのマスキングツール(個人情報保護法対応)です。

 a.解析する「テーブル項目一覧.xls」からpostgre用データベースのマスクSQL文を作成します。

 b.Pマークまたは、ISMSのためのセキュリティ強化対策として作成しました。
   DBデータにマスクをかけて、重要な情報は表示させないようにします。

   注意:作成したSQLを実行する前に必ずDBのバックアップを取って置いてください。

2 主な機能

 a.解析する「テーブル項目一覧.xls」の情報を設定して
  「postgre用データベースのマスクSQL文作成」ボタン押下すると、指定のフォルダに
  ”テーブルのマスクSQL文.txt”及び、”テーブルのマスク項目一覧.txt”ができます。

 b.実際に作成したものを「サンプル」フォルダに載せました。


3 セットアップ方法

・圧縮ファイルを解凍
 a.「postgre用データベースのマスクSQL作成.xls」
 b.「zz_mask4item.sql」<=EUC_JP用です。UTF-8用とかSJIS用とかはまだ作っていません。

4 動作環境
   エクセル
  対応OS
   Windows2000
   WindowsXP
   WindowsVista
    postgreはOSを問いません

5 使用方法

 前準備.「zz_mask4item.sql」を実行してpostgreに関数を登録して置いてください。

 手順1.解析する「テーブル項目一覧.xls」のエクセル名を
     ドライブからFULLで(例:c:\XXX.xls)指定する。

 手順2.データベースのマスクSQL文作成先フォルダ名(存在すること)を
     ドライブからFULLで(例:C:\作成SQL文)指定する。

 手順3.解析する「テーブル項目一覧.xls」の情報(日本語項目名のカラム位置など)を設定する。

 手順4. 「postgre用データベースのマスクSQL作成」ボタン押下すると、指定のフォルダに
      ”テーブルのマスクSQL文.txt”及び、”テーブルのマスク項目一覧.txt”ができろ。

 手順5. ”テーブルのマスク項目一覧.txt”の内容が間違っていないことを確認してください。

 手順6. ”テーブルのマスクSQL文.txt”をpostgreで実行してください。



6 著作権その他

・このソフトウェアはフリーウェアですが、著作権は作者が保持します。
・このソフトウェアによるいかなる損害に対しても、作者は保障致しません。
・使用方法や著作権などは「postgre用データベースのマスクSQL作成.xls」に記載しました。

7 サポート等

 ご意見ご要望などがありましたら、電子メールでお寄せください。

      URL:http://kazpgm.ddo.jp/
  メールアドレス:kazpgm@gmail.com

                               以 上

Vectorのプレビュー画面(http://www.vector.co.jp/soft/win95/business/se489024.html


■2011/02/28に以下の修正を行いました。

201102280101の修正内容.txt

1、『postgre用データベースのマスクSQL作成』に以下の修正を行いました。

    ■Readme.txt 修正
    <<44行目:修正前>>
 b.「zz_mask4item.sql」
    <<44行目:修正後>>
 b.「zz_mask4item.sql」<=EUC_JP用です。UTF-8用とかSJIS用とかはまだ作っていません。

    ■postgre用データベースのマスクSQL作成.xls 修正
    <<91行目:修正前>>
 b.「zz_mask4item.sql」
    <<91行目:修正後>>
 b.「zz_mask4item.sql」<=EUC_JP用です。UTF-8用とかSJIS用とかはまだ作っていません。

    ■zz_mask4item.sql 修正
    (1)当関数は文字コードEUC_JP用であること、NewBSDライセンスであることを追記した。
    (2)' '、'ー'、' 'は変換するのをやめた。(カタカナとして入っていてもエラーにならないように)
    (3)>= 'ヲ' かつ <= '゚'を入れて半角カタカナにも対応した。
    
    <<2行目:追加>>
-- For EUC-JP !! http://kazpgm.ddo.jp/ NewBSD

    <<28行目から54行目:修正前>>
        strsub = substr(strItem,i,1);
        if strsub >= '0' AND strsub <= '9' then
            str := str || '9';
        elseif strsub >= 'A' AND strsub <= 'Z' then
            str := str || 'X';
        elseif strsub >= 'a' AND strsub <= 'z' then
            str := str || 'x';
        elseif strsub >= 'ァ' AND strsub <= 'ヶ' then
            str := str || 'ア';
        elseif strsub >= 'ぁ' AND strsub <= 'ん' then
            str := str || 'あ';
        elseif strsub >= ' ' then
            str := str || 'X';
        elseif strsub >= '0' AND strsub <= '9' then 
            str := str || '9';
        elseif strsub >= 'A' AND strsub <= 'Z' then 
            str := str || 'X';
        elseif strsub >= 'a' AND strsub <= 'z' then 
            str := str || 'x';
        elseif ascii(strsub) < 255 then
            if strsub = '-' OR strsub = '.' OR strsub = '@' then 
                str := str || strsub;
            else
                str := str || 'X';
            end if;
        else
        end if;

    <<29行目から59行目:修正後>>
        strsub = substr(strItem,i,1);
        if strsub >= '0' AND strsub <= '9' then
            str := str || '9';
        elseif strsub >= 'A' AND strsub <= 'Z' then
            str := str || 'X';
        elseif strsub >= 'a' AND strsub <= 'z' then
            str := str || 'x';
        elseif strsub >= 'ァ' AND strsub <= 'ヶ' then
            str := str || 'ア';
        elseif strsub >= 'ぁ' AND strsub <= 'ん' then
            str := str || 'あ';
        elseif strsub = ' ' OR strsub = 'ー' then
            str := str || strsub;
        elseif strsub >= 'ヲ' AND strsub <= '゚' then
            str := str || 'ア';
        elseif strsub > ' ' then
            str := str || 'X';
        elseif strsub >= '0' AND strsub <= '9' then 
            str := str || '9';
        elseif strsub >= 'A' AND strsub <= 'Z' then 
            str := str || 'X';
        elseif strsub >= 'a' AND strsub <= 'z' then 
            str := str || 'x';
        elseif ascii(strsub) < 255 then
            if strsub = '-' OR strsub = '.' OR strsub = '@' OR strsub = ' '  then 
                str := str || strsub;
            else
                str := str || 'X';
            end if;
        else
        end if;

2011/02/08 01:30-04:40 zz_mask4item()関数はかなり前にお勉強のために作ったもの。今日はこれを汎用ツールにしてVectorに載せようという思い立ったのでちょっとやってみている。まだ載せるまでにはいたっていない。
2011/02/09 22:00-01:30 ■Vectorに載せる「postgre用データベースのマスクSQL作成.xls」ツールの画像と ■Vectorに載せるReadme.txtを追記した。、、、これからVectorに登録依頼する。、、、このブログのタイトルを「postgre用データベースのマスキングツール(個人情報保護法対応)つくってる。」から「★『postgre用データベースのマスクSQL作成.xls』つくってる。」に変更した。
2011/02/16 4:00-4:10 Vectorに載った。http://www.vector.co.jp/soft/win95/business/se489024.html。自WEBのTOPページを書き換えた。
2011/02/28 (1)当関数は文字コードEUC_JP用であること、NewBSDライセンスであることを追記した。(2)' '、'ー'、' 'は変換するのをやめた。(カタカナとして入っていてもエラーにならないように)(3)>= 'ヲ' かつ <= '゚'を入れて半角カタカナにも対応した。 本日Vectorの登録依頼(バージョン201102280101)しました。<=2011/03/04 VectorからOKがきました新バージョンを使ってください。