sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLの脆弱性ギャップを埋める方法

    使用しているテクノロジーやセキュリティシステムの種類に関係なく、100%安全なシステムがないため、ハッキングされるリスクが常にあります。データはおそらく企業にとって最も重要な資産であるため、このリスクを最小限に抑えるために、システムを可能な限り保護する必要があります。

    このブログでは、脆弱性のギャップを埋め、最も一般的なセキュリティ問題のいくつかを回避するためにPostgreSQL環境で実行するいくつかの重要なチェックについて説明します。

    通信の保護

    異なるクラウドプロバイダー、クラウドプロバイダーとオンプレミスの組み合わせ、またはオンプレミス環境のみを使用している場合は、すべてのシステムの通信を暗号化する必要があり、ネットワークへの不正アクセスのリスクを軽減するために、既知のソースからのみトラフィックを送信します。

    VPN、SSH、ファイアウォールルール、またはそれらの組み合わせの使用は、この点で優れたソリューションです。

    データベースアクセスの制御 物理アクセスとリモートアクセスの両方を制限する必要があります。

    • 物理アクセス(オンプレミス):データベースサーバーへの不正な物理アクセスを制限します。

    • リモートアクセス:リモートアクセスを必要な人だけに制限し、可能な限り最小限のソースからアクセスします。 VPNを使用してアクセスすることは、ここでは間違いなく便利ですが、SSHトンネリングのような他のオプションもあります。あなたの会社に最適なソリューションを見つける必要があります。

    データベースユーザーアカウントの管理

    PostgreSQLでユーザーアカウントのセキュリティを向上させる方法はたくさんあります。

    • 非アクティブなユーザーを削除します。このためには、ユーザーを非アクティブと見なす期間を定義する必要があり、ユーザーを自動的に削除するようにスケジュールすることができます。

    • 新しいユーザーアカウントを作成するときに、必要な権限のみを付与します。

    • pg_hba.conf構成ファイルを使用して各ユーザー接続のソースを制限します。

    • 安全なパスワードポリシーを定義します(または、パスワードチェックなどのプラグインを有効にします)。

    安全なインストールと構成

    PostgreSQLのインストールを保護するために行うべき変更がいくつかあります。

    • サーバーに必要なパッケージとサービスのみをインストールします。

    • デフォルトの管理者ユーザーパスワードを変更し、ローカルホストのみからの使用を制限します。

    • デフォルトのポートを変更し、リッスンするインターフェイスを指定します。

    • パスワードセキュリティポリシープラグインを有効にします。

    • 送信中のデータを暗号化するように、SSL証明書を構成します。

    • 保存データを暗号化します。

    • ローカルネットワークからのみデータベースポートへのアクセスを許可するようにローカルファイアウォールを構成します。

    マネージドPostgreSQLデータベースを使用している場合、上記のポイントのいくつかは必要ありません。

    監査とログ

    ステートメントのログは、セキュリティの問題を検出したり、時間内に追いついた場合に回避したりするのに役立ちます。

    log_statementパラメータを使用して標準のロギングPostgreSQL機能を使用できますが、pgAuditなどの拡張機能を使用して、より詳細なセッションおよびオブジェクト監査ロギングを行うこともできます。

    WAF(Webアプリケーションファイアウォール)を実装する

    SQLインジェクションまたはDoS攻撃(サービス拒否)はデータベースに対する最も一般的な攻撃であり、これらを回避する最も安全な方法は、WAFを使用してこの種のSQLクエリまたはSQLをキャッチすることです。トラフィックを分析するためのプロキシ。

    CVE(Common Vulnerabilities and Exposures)を頻繁にチェックする

    毎日、データベースサーバーの新しい脆弱性が検出されます。パッチを適用する必要があるか、構成内の何かを変更する必要があるかを知るために、頻繁にチェックする必要があります。それを知る1つの方法は、CVE Webサイトを確認することです。ここでは、説明付きの脆弱性のリストを見つけ、データベースのバージョンとベンダーを探して、できるだけ早く修正するために重要なものがあるかどうかを確認できます。

    具体的には、PostgreSQLセクションをチェックして、データベースバージョンの問題を見つけることができます。

    OSとデータベースを最新の状態に保つ

    脆弱性を修正または回避するために、データベースベンダーまたはオペレーティングシステムがリリースするいくつかの修正と改善があります。パッチとセキュリティアップグレードを適用して、システムを可能な限り最新の状態に保つことが重要です。

    監視

    システムのステータスを知るには、適切な監視システムを導入する必要があります。これは、セキュリティの問題を見つけたり、回避したりするのに役立つ可能性があります。

    ClusterControlは、使いやすいインターフェイスからデータベースを展開、管理、監視、および拡張するのに役立つ管理および監視システムであるため、このための優れたオプションです。最高のオープンソースデータベーステクノロジーをサポートしており、新しいノードの追加とスケーリング、バックアップと復元の実行など、定期的に実行する必要のあるデータベースタスクの多くを自動化できます。

    ClusterControlを使用すると、事前定義されたダッシュボードのセットを使用してサーバーをリアルタイムで監視し、最も一般的なメトリックのいくつかを分析できます。

    クラスターで使用可能なグラフをカスタマイズできます。また、エージェントベースの監視を有効にして、より詳細なダッシュボードを生成できます。

    クラスター内のイベントを通知するアラートを作成したり、PagerDutyやSlackなどのさまざまなサービスと統合したりすることもできます。

    クエリモニターセクションでは、上位のクエリ、実行中のクエリ、クエリの外れ値、およびデータベーストラフィックを監視するためのクエリ統計を確認できます。

    これらの機能を使用すると、PostgreSQLデータベースの状態を確認できます。

    結論

    上記のポイントは、PostgreSQLデータベースの脆弱性のギャップを埋めるのに役立ちますが、前述したように、ハッキングされるリスクは常にあります。

    また、ClusterControlのような優れた監視システムが必要であり、セキュリティリスクをさらに最小限に抑えるために、Nessusのような脆弱性を探すセキュリティスキャンツールを定期的に実行する必要があります。


    1. Mysql列を行に変換(ピボットテーブル)

    2. エラー2006(HY000):MySQLサーバーがなくなりました

    3. Flask、Connexion、SQLAlchemyを使用したPython REST API –パート2

    4. PL/SQLを使用してOracle11gのJSONファイルにデータをエクスポートする