ポストグレスで暗号化するには?

ショコラ
ショコラ

ポストグレスで暗号化するには?

これはPostgreSQL8の話です。
①pgcrypto拡張モジュールを有効する。
②暗号化データをインサートしてセレクトしてキメマス。

もっさん先輩
もっさん先輩

手順

  1. postgresql-contrib をインストールします。
yum install postgresql-contrib

/usr/lib64/pgsql のディレクトリにライブラリがインストールされます。

  1. ポストグレスのライブラリディレクトリを確認します。
pg_config --libdir
/usr/local/pgsql/lib

postgresql-contrib がインストールされたディレクトリと libdir のディレクトリが違いますので、次にリンクを張ります。リンクを張らないと pgcrypto のインストールでエラーになります。

  1. リンクを張ります。
ln -s /usr/lib64/pgsql/pgcrypto.so /usr/local/pgsql/lib/pgcrypto.so
  1. pgcrypto をインストールします。
psql -U postgres -f /usr/share/pgsql/contrib/pgcrypto.sql {データベース}
  1. 設定ファイルにパスワードを設定します。
cat <<EOF >> /usr/local/pgsql/data/postgresql.conf
custom_variable_classes = 'encrypt'
encrypt.password='123456'
EOF
  1. 設定ファイルに読み込みます。
su - postgres -c 'pg_ctl reload'
  1. 準備ができました。ポストグレスに接続して確認してみましょう。
psql -U postgres
  1. テーブルを作成します。
CREATE TABLE privacy(mail bytea); 
  1. 暗号化してインサートします。
INSERT INTO privacy values(pgp_sym_encrypt('mos@answorz.com',current_setting('encrypt.password')));
  1. 複合化してセレクトします。
SELECT pgp_sym_decrypt(mail,current_setting('encrypt.password')) FROM privacy;

因みにアンインストールはこちらです。

psql -U postgres -f /usr/share/pgsql/contrib/uninstall_pgcrypto.sql {データベース}
Scroll to Top