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

PostgreSQLおよびTimescaleDB用にAppArmorを構成する方法

    セキュリティは、すべてのシステムがデータを可能な限り保護するために必須です。ハッキングされるリスクが常にある場合でも、セキュリティチェックリストに従うことで、このリスクを大幅に減らすことができます。基本的なセキュリティチェックリストには、ファイアウォール構成、データ暗号化、認証ポリシーなどが含まれます。Debianベースのオペレーティングシステムでデータを保護するためのもう1つの重要なツールは、AppArmorです。このブログでは、PostgreSQLおよびTimescaleDBデータベース用にそれを構成する方法とその内容を説明します。

    AppArmorとは何ですか?

    AppArmorは、UbuntuおよびDebian(とりわけ)オペレーティングシステムにデフォルトで含まれており、プログラムを限られたリソースセットに制限するための強制アクセス制御(MAC)システムです。カーネルにロードされたプロファイルを使用して機能します。これらのプロファイルは、次の2つのモードで構成できます。

    • 適用:このモードでロードされたプロファイルは、プロファイルで定義されたポリシーを適用し、ポリシー違反を報告します試みます。

    • 不満:このモードのプロファイルはポリシーを適用せず、代わりにポリシー違反の試みを報告します。

    また、AppArmorでは、執行モードと苦情モードのプロファイルを混在させることができます。

    AppArmorを設定する方法

    AppArmorプロファイルは/etc/apparmor.d/にあります。独自のプロファイルを作成してそこに移動するか、AppArmorリポジトリを確認することができます。新しいAppArmorプロファイルを作成する方法を見てみましょう。

    まず、これを処理するために必要なパッケージをインストールしましょう:

    $ apt install apparmor-profiles apparmor-utils

    AppArmorが有効になっているかどうかを確認します:

    $ systemctl status apparmor.service
    または

    $ aa-status
    apparmor module is loaded.
    31 profiles are loaded.
    29 profiles are in enforce mode.
       /snap/snapd/11588/usr/lib/snapd/snap-confine
       /snap/snapd/11588/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
      ...

    上記のパス/etc/apparmor.d/を確認すると、usr.sbin.tcpdumpやusr.sbin.tracerouteなどの基本的なプロファイルが表示されます。それでは、PostgreSQLまたはTimescaleDBの新しいプロファイルを作成しましょう。このために、このプロファイルを例として使用できます。そのプロファイルに基づいて、PostgreSQLのバージョンをより具体的に置き換えます。この場合、PostgreSQL13を使用します。

    # Author: Felix Geyer <[email protected]>
    #include <tunables/global>
    /usr/lib/postgresql/13/bin/postgres {
      #include <abstractions/base>
      #include <abstractions/nameservice>
      #include <abstractions/ssl_keys>
      /etc/postgresql/** r,
      /usr/share/postgresql/** r,
      /var/lib/postgresql/** rwl,
      /{,var/}run/postgresql/** rw,
      owner @{PROC}/13/oom_adj rw,
    }
    それを/etc/apparmor.d/usr.lib.postgresql.13.bin.postgresに保存します。次に、apparmor_parser -a:

    を使用して新しいプロファイルをロードします
    $ cat /etc/apparmor.d/usr.lib.postgresql.13.bin.postgres | sudo apparmor_parser -a

    このプロファイルの何かを変更したい場合は、それをリロードする必要があります:

    $ apparmor_parser -r /etc/apparmor.d/usr.lib.postgresql.13.bin.postgres

    次のコマンドを使用して、プロファイルに不平モードを割り当てることができます。

    $ aa-complain /usr/lib/postgresql/13/bin/postgres

    次に、/ var / log内のsyslogファイルをチェックして、AppArmorの構成が正しいかどうか、または何かを変更する必要があるかどうかを確認できます。安全になったら、次のコマンドを実行してモードを強制に変更できます。

    $ aa-enforce /usr/lib/postgresql/13/bin/postgres

    ログをフィルタリングして、許可または拒否されたアクションを探すことができます:

    Jun 25 19:48:02 ip-172-31-18-94 kernel: [ 5160.111028] audit: type=1400 audit(1624650482.537:103): apparmor="ALLOWED" operation="open" profile="/usr/lib/postgresql/13/bin/postgres" name="/proc/17405/oom_score_adj" pid=17405 comm="postgres" requested_mask="w" denied_mask="w" fsuid=113 ouid=113
    
    Jun 25 19:48:02 ip-172-31-18-94 kernel: [ 5160.112524] audit: type=1400 audit(1624650482.541:104): apparmor="ALLOWED" operation="open" profile="/usr/lib/postgresql/13/bin/postgres" name="/proc/17404/oom_score_adj" pid=17404 comm="postgres" requested_mask="w" denied_mask="w" fsuid=113 ouid=113
    
    Jun 25 19:50:02 ip-172-31-18-94 kernel: [ 5280.141262] audit: type=1400 audit(1624650602.569:112): apparmor="DENIED" operation="open" profile="/usr/lib/postgresql/13/bin/postgres" name="/proc/17518/oom_score_adj" pid=17518 comm="postgres" requested_mask="w" denied_mask="w" fsuid=113 ouid=113
    次の方法でプロファイルを無効にすることもできます:

    $ aa-disable /etc/apparmor.d/usr.lib.postgresql.13.bin.postgres

    そして、サービスをリロードする必要があります:

    $ systemctl reload apparmor.service

    AppArmorを無効にする場合は、次のコマンドを実行できます:

    $ systemctl stop apparmor
    $ systemctl disable apparmor
    

    もちろん、これは実稼働環境では推奨されません。少なくとも、すべてのプロファイルでComplainモードを使用して実行し続ける必要があります。そうすれば、ログをチェックして予期しない動作を探すことができます。

    ClusterControlとAppArmorでPostgreSQLとTimescaleDBを使用する方法

    ClusterControlは、AppArmorのようなLinuxカーネルセキュリティモジュールを管理しません。 ClusterControlを使用してPostgreSQLまたはTimescaleDBクラスターをデプロイする場合、デプロイプロセス中にClusterControlでAppArmorを無効にして、エラーのリスクを軽減するかどうかを指定できます。

    無効にしたくない場合は、本番環境に推奨されます環境では、Complainモードを使用し、サーバーのログを監視して、AppArmorが正しく構成されていることを確認できます。その後、上記の手順に従って強制に変更できます。

    AppArmorの構成の詳細については、Ubuntuの公式サイトをご覧ください。


    1. IBMSPSSでのODBCデータの分析

    2. Postgres FOR LOOP

    3. SQLServerテーブルからn個のランダムな行を選択します

    4. SQLServerのSelectステートメントでNULL値を持つ行をフィルタリングする方法-SQLServer/TSQLチュートリアルパート110