皆さんこんにちは!
豪雨に地震と不安を言い訳に日々を怠惰に鬱々と過ごしているポンコツエンジニアのGONです。
若い頃、善福寺川沿いに住んでいたころも豪雨があって、近隣のコンビニが水浸しになって大変だったのですが、その時もなぜか
自分は関係ないし何の影響もないのに
「コンビニが大変なんだよ」と言い訳して1日ダラダラ過ごしていたことがありました。
自分は関係ないのに..
..さて、前回までに人生を賭けた求人サービスを構築するために『PHP』『postgreSQL』『AWS』を選んだ理由や、
サービス名の由来、求職者様向け&企業様向け機能のご紹介、面談の採用確率UP方法、
『PHP』『postgreSQL』『AWS』の実機練習用サイトをご紹介させていただき、
さらに『SQL』『PHP』『AWS』の基本的な操作方法とセキュリティについて書かせていただきました。
そして、なんとコメントで『postgreSQL』のセキュリティに興味がある、なんてご意見も頂戴しました。
なので、今回も
めちゃくちゃ調子に乗って
『postgreSQL』のセキュリティについて掘り下げていきます!
今日はセキュリティ編の第4回目として、
『ネットワークアクセス制御』について語ります。
まず、PostgreSQLのネットワークアクセス制御とは?
簡単にいうと、**「誰が、どこから、PostgreSQLに接続できるかを制限する仕組み」**です。
『pg_hba.conf』による接続制御
PostgreSQLでは、主に『pg_hba.conf』という設定ファイルで接続を制御します。
例えば、
host mydb appuser 192.168.1.10/32 scram-sha-256
と設定すると、
・データベース:mydb
・ユーザー:appuser
・接続元:192.168.1.10
・認証方式:scram-sha-256
という条件で接続を許可できます。
つまり、許可した端末やサーバーだけがデータベースに接続できるようにできるんです。
不正アクセスが日常茶飯事の昨今、これはとても大切ですよね。
接続元IPアドレスを制限する
例えば、PostgreSQLサーバーが 192.168.1.100 にあり、アプリケーションサーバーが 192.168.1.10 にあるとします。
この場合、
host mydb appuser 192.168.1.10/32 scram-sha-256
として、アプリケーションサーバーからの接続だけを許可できます。
一方で、
host all all 0.0.0.0/0 scram-sha-256
のようにすると、すべてのIPアドレスからの接続を許可することになります。
これはインターネットに直接公開する環境では非常に危険です。
渋谷の交差点に銀行のパスワードを置いておくようなヤバさです。
ファイアウォールでポートを制限する
PostgreSQLは通常、5432番ポートを使用します。
そのため、サーバーのファイアウォールで、
「5432番ポートへのアクセスは、アプリケーションサーバーからだけ許可する」
という設定を行います。
イメージとしては、
インターネット
↓ ×
ファイアウォール
↓
PostgreSQL
:5432
↑
アプリサーバー ○
のようにします。
pg_hba.conf とファイアウォールを組み合わせることが重要です。
PostgreSQLを外部に直接公開しない
セキュリティ上、PostgreSQLをインターネットから直接接続できる状態にするのは避けるのが基本です。
例えば、
[インターネット]
↓
[Webサーバー]
↓
[アプリサーバー]
↓
[PostgreSQL]
のように、PostgreSQLを内部ネットワークに配置します。
利用者が直接PostgreSQLへ接続するのではなく、アプリケーションを経由してデータを取得する構成です。
SSL/TLSによる通信の暗号化
ネットワーク経由でPostgreSQLへ接続する場合、SSL/TLSを利用して通信を暗号化できます。
これによって、通信の途中でデータの中身や、認証の情報を盗み見られるリスクを低減できます。
特に、PostgreSQLサーバーとアプリケーションサーバーが別のネットワークにある場合にはとても重要なので覚えておきたいのですが、私はポンコツなのでよく忘れてしまいます。
誰が、どこから、PostgreSQLに接続できるかを整理して安全に運営している求人サービスは以下になります。
企業の方、エンジニアの方に使ってください!
▼求人マッチングサービス【ヴェテラン】
https://veteran-work.com/
「postgreSQLじゃなくてOralceの記事も書けや!」
「ヴェテランってなんや?」
など質問やご意見いただけますとモチベーション爆上げします!
先日の記事に『♡』して貰えた方、私はむせび泣きましたよ。
本日もお疲れ様でした。
明日もコツコツと頑張りましょう。
