mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2026-05-09 04:42:40 +02:00
8225d41661
- Deliver postgres super and app passwords via mounted 0600 secret files (POSTGRES_PASSWORD_FILE, SO_POSTGRES_PASS_FILE) instead of plaintext env vars visible in docker inspect output - Mount a managed pg_hba.conf that only allows local trust and hostssl scram-sha-256 so TCP clients cannot negotiate cleartext sessions - Restrict postgres.key to 0400 and ensure owner/group 939 - Set umask 0077 on so-postgres-backup output - Validate host values in so-stats-show against [A-Za-z0-9._-] before SQL interpolation so a compromised minion cannot inject SQL via a tag value - Coerce postgres:telegraf:retention_days to int before rendering into SQL - Escape single quotes when rendering pillar values into postgresql.conf - Own postgres tooling in /usr/sbin as root:root so a container escape cannot rewrite admin scripts - Gate ES migration TLS verification on esVerifyCert (default false, matching the elastic module's existing pattern)
111 lines
2.5 KiB
Plaintext
111 lines
2.5 KiB
Plaintext
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
|
|
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
|
|
# https://securityonion.net/license; you may not use this file except in compliance with the
|
|
# Elastic License 2.0.
|
|
|
|
{% from 'allowed_states.map.jinja' import allowed_states %}
|
|
{% if sls.split('.')[0] in allowed_states %}
|
|
{% from 'postgres/map.jinja' import PGMERGED %}
|
|
|
|
# Postgres Setup
|
|
postgresconfdir:
|
|
file.directory:
|
|
- name: /opt/so/conf/postgres
|
|
- user: 939
|
|
- group: 939
|
|
- makedirs: True
|
|
|
|
postgressecretsdir:
|
|
file.directory:
|
|
- name: /opt/so/conf/postgres/secrets
|
|
- user: 939
|
|
- group: 939
|
|
- mode: 700
|
|
- makedirs: True
|
|
|
|
postgresdatadir:
|
|
file.directory:
|
|
- name: /nsm/postgres
|
|
- user: 939
|
|
- group: 939
|
|
- makedirs: True
|
|
|
|
postgreslogdir:
|
|
file.directory:
|
|
- name: /opt/so/log/postgres
|
|
- user: 939
|
|
- group: 939
|
|
- makedirs: True
|
|
|
|
postgresinitdir:
|
|
file.directory:
|
|
- name: /opt/so/conf/postgres/init
|
|
- user: 939
|
|
- group: 939
|
|
- makedirs: True
|
|
|
|
postgresinitusers:
|
|
file.managed:
|
|
- name: /opt/so/conf/postgres/init/init-users.sh
|
|
- source: salt://postgres/files/init-users.sh
|
|
- user: 939
|
|
- group: 939
|
|
- mode: 755
|
|
|
|
postgresconf:
|
|
file.managed:
|
|
- name: /opt/so/conf/postgres/postgresql.conf
|
|
- source: salt://postgres/files/postgresql.conf.jinja
|
|
- user: 939
|
|
- group: 939
|
|
- template: jinja
|
|
- defaults:
|
|
PGMERGED: {{ PGMERGED }}
|
|
|
|
postgreshba:
|
|
file.managed:
|
|
- name: /opt/so/conf/postgres/pg_hba.conf
|
|
- source: salt://postgres/files/pg_hba.conf.jinja
|
|
- user: 939
|
|
- group: 939
|
|
- mode: 640
|
|
- template: jinja
|
|
|
|
postgres_super_secret:
|
|
file.managed:
|
|
- name: /opt/so/conf/postgres/secrets/postgres_password
|
|
- user: 939
|
|
- group: 939
|
|
- mode: 600
|
|
- contents_pillar: 'secrets:postgres_pass'
|
|
- show_changes: False
|
|
- require:
|
|
- file: postgressecretsdir
|
|
|
|
postgres_app_secret:
|
|
file.managed:
|
|
- name: /opt/so/conf/postgres/secrets/so_postgres_pass
|
|
- user: 939
|
|
- group: 939
|
|
- mode: 600
|
|
- contents_pillar: 'postgres:auth:users:so_postgres_user:pass'
|
|
- show_changes: False
|
|
- require:
|
|
- file: postgressecretsdir
|
|
|
|
postgres_sbin:
|
|
file.recurse:
|
|
- name: /usr/sbin
|
|
- source: salt://postgres/tools/sbin
|
|
- user: root
|
|
- group: root
|
|
- file_mode: 755
|
|
|
|
{% else %}
|
|
|
|
{{sls}}_state_not_allowed:
|
|
test.fail_without_changes:
|
|
- name: {{sls}}_state_not_allowed
|
|
|
|
{% endif %}
|