検索
連載

PostgreSQLのクライアント認証と暗号化の設定方法使えば分かるPostgreSQL運用&チューニング(3)(3/3 ページ)

本連載第1回で導入したPostgreSQLに対してクライアント認証の設定をします。運用形態によっては、クライアントアプリケーションとPostgreSQL間の通信を暗号化する必要がありますので、それについても併せて紹介します

PC用表示
Share
Tweet
LINE
Hatena
前のページへ |       

md5を使ったパスワード認証の設定

 今回は、md5を使ったパスワード認証の設定を行ってみましょう。 まず、パスワードを指定してユーザーを作成します。

パスワードを指定して新規にユーザーを作成する

ユーザーの作成はpsqlコマンドを用いてpostgresユーザーで適当なデータベースに接続し、CREATE USERコマンドを実行します。

template1=# CREATE USER testuser WITH CREATEDB PASSWORD 'secret';


 上記の例では、データベースの作成権限も一緒に与えています。ここで注意したいのが、psqlのヒストリ機能です。上向き矢印のカーソルキーを押すとパスワードが見えてしまいます。そのため、設定後は、psqlのヒストリファイル~/.psql_historyを開き、該当個所を削除しておきましょう

すでに存在するユーザーを設定する

 すでに存在するユーザーに対してパスワードを設定したい場合は、次のように「ALTER USER」コマンドを使用します。

template=# ALTER USER testuser WITH PASSWORD 'secret';


 ユーザーにパスワードを設定したら、pg_hba.confファイルの初期設定の行の一番上に次の行を追加します。

local all testuser md5


 そして、編集したpg_hba.confファイルを適用するためにpostgresユーザーで設定ファイルのリロードを行います。

$ pg_ctl reload


 以上で設定は完了です。

リロード後の動作確認

 testuserでUNIXドメイン接続をしようとすると次のようにパスワードを聞かれるようになります。

$ psql template1 testuser

Password for user testuser:


template1=# SELECT rolname,rolpassword FROM pg_authid;

rolname | rolpassword

----------+-------------------------------------

postgres |

testuser | md52a2009905b966f356aa26b60d6e9bb58

(2 rows)


 ただし、これを見たとしてもパスワードは暗号化されているため、たとえスーパーユーザーであっても実際のパスワードを知ることはできません。

通信経路の暗号化

 PostgreSQLを利用する一般的なシステム構成としては、クライアントアプリケーションとPostgreSQLを同一のサーバマシンで動作させることはまれで、別々のサーバマシンで動作させるのが主流です。 その際、注意しなければならないのは、アプリケーションとPostgreSQL間を流れるデータのセキュリティです。少しでも盗聴される恐れがあれば、通信経路を暗号化する必要があります。PostgreSQLでは、通信経路の暗号化方式としてSSL(Secure Sockets Layer)と呼ばれるプロトコルが利用できますが、今回はより簡単なSSH(Secure SHell)を利用した暗号化方法をご紹介します。

 SSHには、クライアントの指定したポートへの出力をサーバの指定したポートに転送するポート転送機能があります。ポート転送の設定は次のコマンドで行えます。

$ ssh -L クライアントのポート番号:転送先のIPアドレス(ホスト名):転送先のポート番号 ユーザー名@転送先のIPアドレス(ホスト名)


 具体例として、例えば次のコマンドを実行したとします。

$ ssh -L 3333:dbhost:5432 testuser@dbhost


 すると、次のコマンドでローカルホストの3333ポートに接続した場合、データは暗号化されたうえでdbhostサーバの5432ポートへ転送されるようになり、あたかもローカルホストでPostgreSQLが稼働しているような感じで接続することができます。

$ psql -h localhost -p 3333 template1



 以上が、最も基礎的なクライアント認証と通信経路の暗号化方法です。認証設定は、厳密に設定しないと情報漏えいにつながる可能性がありますので、十分検討、注意したうえで設定し、PostgreSQLを運用してください。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る