PostgreSQLのlocalhost接続は安全?SQL Shell(psql)が自分のPC内だけで動いているか確認する方法

SQL Server

PostgreSQLを学習用にインストールしたあと、「SQL Shell(psql)に表示されるlocalhostとは何なのか」「外部のサーバーへ接続されていないか」と不安になる方は少なくありません。特にデータベース初心者の場合、自分のパソコン内だけで処理しているのか、インターネット上へ公開されている状態なのかを確認しておくことは大切です。この記事では、PostgreSQLのlocalhostの意味や、接続先を確認する方法、inet_server_addr()の結果の見方について解説します。

PostgreSQLのlocalhostとは自分のパソコンを意味する

SQL Shell(psql)を起動した際に表示される「Server [localhost]」のlocalhostとは、基本的に現在使用しているパソコン自身を表しています。

localhostはネットワーク上の特別な名前で、「このコンピューター」という意味になります。つまり、PostgreSQLを自分のPCへインストールし、標準設定のまま利用している場合は、データベースサーバーも同じパソコン内で動作しています。

例えば、自宅のWindowsパソコンへPostgreSQLをインストールして学習している場合、localhostへ接続している状態では、そのパソコン内部でSQLの処理が完結しています。

PostgreSQLはインストールしただけでは外部公開されない

PostgreSQLをインストールすると、データベースサーバーというプログラムがパソコン上で起動します。しかし、インストールしただけでインターネット上の誰でもアクセスできる状態になるわけではありません。

通常の学習用インストールでは、接続先はlocalhost、接続ポートは5432番、アクセス許可も自分のパソコン内部からのみという設定になっています。

そのため、個人学習用としてPostgreSQLを使っている場合、特別な設定変更をしていなければ、外部の人が勝手にデータベースへ接続する可能性は低いです。

inet_server_addr()で接続先を確認する方法

PostgreSQLでは、現在接続しているサーバーのIPアドレスを確認するために、inet_server_addr()という関数を利用できます。

SQL Shell(psql)で以下のSQLを実行します。

SELECT inet_server_addr();

結果としてNULLや空欄が表示される場合がありますが、これは必ずしも「自分のPCだけで完結している」という意味だけではありません。

この関数は接続しているサーバー側のIPアドレスを返すものです。localhost経由のローカル接続では、ネットワーク通信として扱われないため、NULLになる場合があります。

つまり、NULLだから安全、NULLではないから危険という単純な判断ではなく、接続設定全体を見る必要があります。

自分のPC内だけで動いているか確認するポイント

PostgreSQLがローカル環境だけで動作しているか確認するには、いくつかの設定を確認すると確実です。

  • 接続先がlocalhostまたは127.0.0.1になっているか
  • PostgreSQLの設定ファイルpostgresql.confを確認する
  • pg_hba.confで接続許可範囲を確認する
  • WindowsやMacのファイアウォール設定を確認する

特に確認したい項目はpostgresql.conf内のlisten_addressesです。

例えば以下のような設定の場合、ローカル接続のみ許可しています。

listen_addresses = 'localhost'

一方で、以下のような設定にすると外部からの接続を受け付ける可能性があります。

listen_addresses = '*'

自分で変更した覚えがない場合は、多くの場合localhost設定のまま利用されています。

SQL Shell(psql)で表示される項目の意味

SQL Shellを起動すると、以下のような入力項目が表示されます。

項目 意味
Server 接続するデータベースサーバーの場所
Database 接続するデータベース名
Port PostgreSQLが待ち受けている番号
Username ログインするユーザー名
Password 認証用パスワード

Serverがlocalhostになっている場合は、自分のパソコン内にあるPostgreSQLへ接続しようとしている状態です。

例えばServerに192.168.x.xやクラウドサーバーのドメイン名が設定されている場合は、別のコンピューター上のPostgreSQLへ接続している可能性があります。

初心者が確認しておきたいPostgreSQLのセキュリティ対策

学習目的でPostgreSQLを利用する場合でも、最低限のセキュリティ対策をしておくと安心です。

  • postgresユーザーのパスワードを設定する
  • 不要な外部接続を許可しない
  • PostgreSQLを常に最新版へ更新する
  • 本番環境では強力なユーザー管理を行う

特に注意が必要なのは、将来的に自分のPCではなくクラウドサーバーや会社のサーバーへPostgreSQLを設置する場合です。その場合は外部接続設定やファイアウォール設定を適切に行う必要があります。

まとめ

SQL Shell(psql)のServerにlocalhostと表示されている場合、多くのケースではPostgreSQLは自分のパソコン内で動作しています。インストールしただけで外部へ公開されることは通常ありません。

また、inet_server_addr()がNULLになることはローカル接続では一般的に起こるため、それだけで安全性を判断することはできません。

接続先がlocalhostになっているか、listen_addressesやpg_hba.confの設定がどうなっているかを確認することで、PostgreSQLがどの範囲からアクセス可能なのかを正しく把握できます。

コメント

タイトルとURLをコピーしました