Compliance#

TPAは、クラスターがSTIGまたはCIS標準に準拠することを簡単にするように設計された構成を生成できます。 --compliance stig または--compliance cis をtpaexec configure に渡すと、TPAは次のことを行います。

  • 他のオプションが適切な規格と互換性があることを確認します。

  • これが特定の標準に準拠するクラスターであることのマーキングや、標準の要求に応じてPostgres構成の設定を含む、生成されたconfig.yml にさまざまなエントリを追加します。

  • コンプライアンスを適用するように一部の展開タスクを調整します。

  • 展開の最後にチェックを実行します。

オプション--excluded_tasks=compliance 〜tpaexec deploy を指定することにより、展開時チェックをスキップできます。この機能は、完全なコンプライアンスが不可能なテストシステムを使用する場合、SSL証明書が使用できない場合など、テストのみを対象としています。

TPAが選択した標準に意図的に準拠しない場合があります。これらは以下の例外に文書化されています。

STIG#

STIG準拠は、 tpaexec configure への--compliance stig オプションによって示されます。

オプションの互換性#

STIGコンプライアンスには、bare プラットフォームとepas フレーバーが必要です。バージョン8または9のRedHat OSが必要です。

config.ymlの設定#

EDB Postgres Advanced ServerのSQL /Protect機能を使用するために、次のエントリがcluster_vars に追加されます。

extra_postgres_extensions: [ sql_protect ]

次のエントリがcluster_vars に追加されて、クライアントにSSL認証を使用するように強制します。

hba_force_hostssl: True
hba_force_certificate_auth: True
hba_cert_authentication_map: sslmap

次のエントリがcluster_vars に追加されて、postgresql.confでGUCが設定されます。

tcp_keepalives_idle: 10
tcp_keepalives_interval: 10
tcp_keepalives_count: 10
log_destination: "stderr"
postgres_log_file_mode: "0600"

次のエントリがcluster_vars のpostgres_conf_settings に追加されて、postgresql.confでGUCを設定します。

edb_audit: "xml"
edb_audit_statement: "all"
edb_audit_connect: "all"
edb_audit_disconnect: "all"
statement_timeout: 1000
client_min_messages: "ERROR"

デプロイメントの違い#

TPAは、展開中に、通常の操作に必要な接続数に対応して、作成するデータベースユーザーの接続制限を設定します。各ユーザーが設定されると、SSLクライアント証明書が提供されたことも確認します。

クライアントSSL証明書の提供#

STIGは、クライアント接続に国防総省承認のssl証明書を必要とします。これらの証明書はTPAでは生成できないため、提供する必要があります。クラスター内のノードからユーザーの認証を設定すると、TPAはノードで証明書/キーペアを検索します。証明書とキーは、ssl_client_cert_dir 設定で指定されたディレクトリの<username>.crt および<username>.key というファイルにある必要があります。この設定のデフォルトは/ であるため、ファイルは、たとえば、 barman ユーザーがセットアップされている場合の/barman.crt および/barman.key になります。

最終チェック#

展開の最後に、TPAはサーバーでFIPSが有効になっていることを確認します。

例外#

フェールオーバーマネージャーとしてEFMを選択すると、TPAはEFMユーザーのパスワード認証を構成します。これは、すべてのTCP接続が証明書認証を使用するというSTIG要件に反しています。この例外の理由は、EFMが証明書認証をサポートしていないためです。

CIS#

CIS準拠は、 tpaexec configure への--compliance cis オプションによって示されます。

config.ymlの設定#

次のエントリがcluster_vars に追加されて、postgresql.confでGUCが設定されます。

log_connections: "on"
log_disconnections: "on"

次のエントリーがcluster_vars に追加されて、必要な拡張機能を有効にします。

extra_postgres_extensions: ["passwordcheck", "pgaudit"]

次のエントリーがcluster_vars に追加されて、postgres OSユーザーのumaskを設定します。

extra_bash_rc_lines: "umask 0077"

次のエントリがcluster_vars のpostgres_conf_settings に追加されて、postgresql.confでGUCを設定します。

log_error_verbosity: "verbose"
log_line_prefix: "%m [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h "
log_replication_commands: "on"
temp_file_limit: "1GB"

最終チェック#

展開の最後に、TPAはサーバーでFIPSが有効になっていることを確認します。

例外#

CIS仕様で記載されているように、TPAはpgBackRestをサポートしていません。代わりに、TPAはBarmanをインストールします。

TPAは、CIS仕様で必要とされるset_user のインストールと構成を行いません。これは、 Postgresユーザーによるログオンを防止すると、TPAがデータベースに接続および構成できなくなるためです。