#!/bin/bash
# ============================================================================
# Скрипт для запуска аудита безопасности PostgreSQL
# ============================================================================
# Параметры подключения
DB_HOST="${1:-localhost}"
DB_PORT="${2:-5432}"
DB_USER="${3:-postgres}"
DB_NAME="${4:-postgres}"
OUTPUT_FILE="${5:-postgres_audit_$(date +%Y%m%d_%H%M%S).txt}"
echo "================================================================================"
echo " АУДИТ БЕЗОПАСНОСТИ POSTGRESQL"
echo "================================================================================"
echo "Дата: $(date '+%Y-%m-%d %H:%M:%S')"
echo "Хост: $DB_HOST"
echo "Порт: $DB_PORT"
echo "Пользователь: $DB_USER"
echo "База данных: $DB_NAME"
echo "Отчет: $OUTPUT_FILE"
echo "================================================================================"
# Проверка подключения
echo ""
echo "Проверка подключения к БД..."
if ! psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "SELECT 1;" > /dev/null 2>&1; then
echo "ОШИБКА: Не удалось подключиться к PostgreSQL!"
echo "Проверьте параметры подключения и права доступа."
exit 1
fi
echo "Подключение успешно установлено."
# Запуск аудита
echo ""
echo "Запуск проверок..."
{
echo "================================================================================"
echo " АУДИТ БЕЗОПАСНОСТИ POSTGRESQL"
echo "================================================================================"
echo "Дата проверки: $(date '+%Y-%m-%d %H:%M:%S')"
echo "Хост: $DB_HOST:$DB_PORT"
echo "База данных: $DB_NAME"
echo "Пользователь: $DB_USER"
echo "================================================================================"
echo ""
# Выполнение SQL-скрипта
psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" \
-f postgres_security_audit.sql 2>&1
} | tee "$OUTPUT_FILE"
# Подсчет результатов
echo ""
echo "================================================================================"
echo " СВОДКА ПО РЕЗУЛЬТАТАМ"
echo "================================================================================"
WARNING_COUNT=$(grep -c "WARNING" "$OUTPUT_FILE" || echo "0")
OK_COUNT=$(grep -c "| OK" "$OUTPUT_FILE" || echo "0")
INFO_COUNT=$(grep -c "| INFO" "$OUTPUT_FILE" || echo "0")
echo "Всего проверок с WARNING: $WARNING_COUNT"
echo "Всего проверок OK: $OK_COUNT"
echo "Информационных сообщений: $INFO_COUNT"
echo ""
if [ "$WARNING_COUNT" -gt 0 ]; then
echo "⚠️ Обнаружены потенциальные проблемы безопасности!"
echo "Рекомендуется изучить отчет: $OUTPUT_FILE"
else
echo "✅ Критических проблем не обнаружено."
fi
echo "================================================================================"
echo "Отчет сохранен в файл: $OUTPUT_FILE"
echo "================================================================================"