PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Автоматизиране на одитите на сигурността за PostgreSQL

Одитите на сигурността са задължителни във всички компании, за да се защитят данните и да се избегнат евентуални пробиви в сигурността, но също така е и отнемаща време задача, тъй като трябва периодично да проверявате много неща. Резултатът е, че като цяло компаниите следват контролен списък за сигурност и конфигурират всичко, за да го покрият, но нямат одити на сигурността. Може да кажете:„Ако всичко работи добре, просто го оставете така, както е“. Е, всъщност, не можете да вярвате, че политиките за сигурност, които конфигурирате сега, ще бъдат полезни в бъдеще и че нищо няма да се промени, за да ги засегне. Решението за това може да бъде автоматизирането на тези одити на сигурността или начинът да го правите периодично по удобен за потребителя начин.

В този блог ще видим как да извършваме различни одити на сигурността за PostgreSQL и да ги автоматизираме с помощта на ClusterControl.

Какво ви е необходимо, за да направите одит на сигурността на PostgreSQL?

Нека разгледаме някои от най-важните неща за одит за целите на сигурността в PostgreSQL база данни:

  • Комуникации:Комуникацията във всичките ви системи трябва да бъде криптирана и трябва да ограничите  трафика до този, който идва само от известни източници, за да намалите риска от неоторизиран достъп до вашите данни.

  • Достъп до база данни:Трябва да ограничите както физическия, така и отдалечения достъп до вашите бази данни. Отдалеченият достъп може да бъде ограничен чрез разрешаване на връзки само от известни източници за всеки потребител или дори чрез използване на SSH или VPN връзки.

  • Потребителски акаунти:Има много начини да подобрите сигурността на вашите потребителски акаунти в PostgreSQL, като например премахване на неактивни потребители , предоставяне само на необходимите привилегии и др.

  • Инсталиране и конфигуриране:Има някои промени, които трябва да направите, за да защитите вашата инсталация на PostgreSQL, като например инсталиране само на необходимите пакети, промяна на идентификационните данни и конфигурацията по подразбиране и др.

  • Одит и регистриране:Изявленията за регистриране могат да ви помогнат да откриете проблеми със сигурността или да ги избегнете, ако ги уловите навреме . Можете да използвате стандартното средство за регистриране на PostgreSQL, но можете да използвате и разширение като pgAudit, за да имате по-подробно регистриране.

  • Надстройки:Поддържайте операционната си система и базата данни възможно най-актуални, като прилагате корекции и надстройки на сигурността.

  • Монитор на заявки:Трябва да проверите трафика, за да откриете необичайни заявки или DoS атаки.

  • Наблюдение:За да знаете състоянието на вашите системи, ще трябва да имате добра система за наблюдение. Това може да е полезно за намиране на проблеми със сигурността или дори за избягването им.

Сега знаем какво да проверим, нека разгледаме опция за автоматизиране на тези задачи – ClusterControl.

Одити на сигурността за PostgreSQL с ClusterControl

За одитите на сигурността на PostgreSQL ClusterControl е добър вариант, тъй като е система за управление и наблюдение, която ви помага да разгръщате, управлявате, наблюдавате и мащабирате вашите бази данни от удобен за потребителя интерфейс. Той поддържа най-добрите технологии за бази данни с отворен код и можете да автоматизирате много от задачите на базата данни, които трябва да изпълнявате редовно, като добавяне и мащабиране на нови възли, стартиране на архивиране и възстановяване и др.

Нека да разгледаме как можете да покриете споменатите по-горе проверки за сигурност с помощта на ClusterControl.

Комуникации

В секцията за сигурност (ClusterControl -> Изберете раздела Cluster -> Security) можете да активирате SSL криптиране, за да шифровате връзките между клиентите и сървъра.

 

Достъпът от ClusterControl до възлите също е защитен чрез SSH без парола с двойка ключове.

Достъп до база данни

Можете да ограничите достъпа до вашата PostgreSQL база данни, като модифицирате конфигурационния файл pg_hba.conf от потребителския интерфейс на ClusterControl (ClusterControl -> Изберете Cluster -> Manage -> Configurations). По този начин можете да посочите следните опции:

  • Тип:Най-използваните опции тук са „локални“ за сокет на Unix домейн и „хост“ за обикновен или SSL-криптиран TCP/IP сокет, но има и други опции като „hostssl“ и други.

  • База данни:Тя може да бъде "all", "sameuser", "samerole", "replication", a име на база данни или разделен със запетая списък с имена на база данни.

  • Потребител:Може да бъде "всички", потребителско име, име на група с префикс "+", или разделен със запетая списък от тях.

  • Адрес:име на хост или IP адрес и CIDR маска.

  • Метод:Най-използваните тук са "доверие", "отхвърляне", "md5", "идентификация" , и "peer", но има повече опции като "scram-sha-256" или "ldap".

Пример:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
  host  all             admindb         10.10.10.121/32         md5

Потребителски акаунти

Можете да управлявате потребителите на вашата база данни от потребителския интерфейс на ClusterControl (ClusterControl -> Изберете Cluster -> Manage -> User Management). Можете да създавате нови потребители или да редактирате и изтривате съществуващи и да им присвоявате съответните привилегии.

Инсталиране и конфигуриране

Можете да разгърнете нов PostgreSQL клъстер или да импортирате съществуващ. С вашия PostgreSQL клъстер, добавен в ClusterControl, можете да управлявате текущата конфигурация (ClusterControl -> Изберете Cluster -> Manage -> Configuration) или дори да добавяте нови възли към клъстера.

По време на внедряването можете да промените конфигурацията на базата данни като порт на базата данни или идентификационни данни и след това ClusterControl ще инсталира само необходимите пакети за разгръщане на вашия нов клъстер.

Одит и регистриране

Можете да проверите стандартното регистриране на PostgreSQL в потребителския интерфейс на ClusterControl (ClusterControl -> Изберете Cluster -> Logs -> System Logs) или дори да активирате разширението pgAudit от ClusterControl и да проверите регистрирането на одита на същото място .

Надстройки

В случай на незначителни надстройки можете да използвате ClusterControl за тази задача. Можете да получите достъп до потребителския интерфейс и да стартирате надстройката (ClusterControl -> Изберете Cluster -> Manage -> Upgrades) или да използвате оперативния отчет на ClusterControl „Надстройки на пакети“, за да получите наличните пакети по имейл или да ги проверите в потребителския интерфейс на ClusterControl.

Монитор на заявки

В секцията за наблюдение на заявки можете да намерите най-популярните заявки, изпълнявани заявки, отклонения от заявки и статистически данни на заявките, за да наблюдавате трафика на вашата база данни.

Наблюдение

ClusterControl ви позволява да наблюдавате сървърите си в реално време с предварително дефиниран набор от табла за управление, за да анализирате някои от най-често срещаните показатели.

ClusterControl ви позволява да персонализирате наличните графики в клъстера и можете да активирате базирания на агент мониторинг, за да генерирате по-подробни табла за управление.

Можете също да създавате сигнали, които ви информират за събития във вашия клъстер или да се интегрират с различни услуги като PagerDuty или Slack.

Оперативни отчети

Ако не искате да имате достъп до потребителския интерфейс на ClusterControl, за да проверите състоянието на вашите клъстери, можете да създадете или насрочите оперативни отчети.

Оперативните отчети ви дават информация за състоянието на вашата база данни, която можете да използвате за одит на вашата среда. Тези отчети се състоят от различни проверки и се занимават с различни ежедневни задачи на DBA. Идеята зад ClusterControl Operational Reporting е да се съберат всички най-подходящи данни в един документ, който може бързо да се анализира, за да се получи ясно разбиране за състоянието на базите данни и техните процеси.

Можете да планирате отчети като „Ежедневен системен отчет“, „Отчет за надграждане на пакета“, „Отчет за промяна на схемата“, „Резервни копия“ и „Наличност“ и можете да ги получавате в повече от един имейл адрес.

Използване на ClusterControl CLI за автоматизиране на одитите на сигурността

ClusterControl CLI, известен също като s9s, е инструмент от командния ред, въведен във версия 1.4.1 на ClusterControl за взаимодействие, управление и управление на клъстери от база данни с помощта на системата ClusterControl. ClusterControl CLI отваря нова врата за автоматизация на клъстерите, където можете лесно да го интегрирате със съществуващи инструменти за автоматизация на внедряване като Ansible, Puppet, Chef и др. Инструментът от командния ред се извиква чрез изпълнение на двоичен файл, наречен s9s, добавен по подразбиране в инсталацията на ClusterControl.

Нека разгледаме някои примери за този мощен инструмент. За това ще видим как да изпълняваме споменатите задачи за одит на сигурността с помощта на ClusterControl CLI.

Комуникации

Можете да активирате SSL криптиране във вашия клъстер, като използвате следната команда:

$ s9s cluster --enable-ssl --cluster-id=ID

Където ID е идентификационният номер на клъстера:можете да наблюдавате напредъка на тази задача (и останалите задачи), като изброите процеса на работа.

$ s9s job --list

Достъп до база данни

Можете да проверите конфигурацията на базата данни, за да потвърдите разрешения достъп:

$ s9s node --cluster-id=ID \
--nodes="IP_ADDRESS:PORT" \
--list-config

GROUP OPTION NAME                  VALUE
-     data_directory               '/var/lib/pgsql/13/data'
-     hba_file                     '/var/lib/pgsql/13/data/pg_hba.conf'
-     ident_file                   '/var/lib/pgsql/13/data/pg_ident.conf'
-     listen_addresses             '*'
-     port                         5432
-     max_connections              100
-     ssl                          on
-     ssl_ca_file                  '/etc/ssl/postgresql_single/cluster_47/server_ca.crt'
-     ssl_cert_file                '/etc/ssl/postgresql_single/cluster_47/server.crt'
...

Където ID е идентификационният номер на клъстера, IP_ADDRESS и PORT са IP адрес и порт на вашата база данни.

Потребителски акаунти

Можете да изброите потребителските акаунти, които са в клъстера:

$ s9s accounts --list --cluster-id=ID --long


NAME                            P CONN MAXC GRANTS
's9spostgresqlchk'@'%'          N    0    0 LOGIN,SUPERUSER,INHERIT,CREATEROLE,CREATEDB
'postgres'@'%'                  N    1    0 LOGIN,SUPERUSER,INHERIT,REPLICATION,CREATEROLE,CREATEDB
'pg_write_server_files'@'%'     N    0    0 INHERIT
...
'cmon_replication'@'%'          N    2    0 LOGIN,INHERIT,REPLICATION
'admindb'@'%'                   N    3    0 LOGIN,SUPERUSER,INHERIT,CREATEROLE,CREATEDB

Където ID е идентификационният номер на клъстера.

Инсталиране и конфигуриране

Можете да създавате нови клъстери, да добавяте нови възли на базата данни или дори да променяте съществуващите конфигурации във вашия клъстер:

$ s9s cluster --create \
--cluster-type=postgresql \
--nodes="IP_ADDRESS1?master;IP_ADDRESS2?slave;IP_ADDRESS3?slave;" \
--db-admin="DBUSER" \
--db-admin-passwd="DBPASSWORD" \
--cluster-name=PG1 \
--os-user=OSUSER \
--os-key-file=/home/OSUSER/.ssh/id_rsa \
--provider-version=13 \
--log

Където IP_ADDRESS е IP адресът на вашата база данни и трябва да замените DBUSER, DBPASSWORD и OSUSER съответно за идентификационните данни на вашата база данни и потребителя на операционната система.

Одит и регистриране

Можете да активирате регистрирането на одит от командния ред, като използвате следната команда:

$ s9s cluster --setup-audit-logging --cluster-id=ID

Където ID е идентификационният номер на клъстера:тогава можете да проверите регистрационните файлове с информацията за регистриране на одита.

Надстройки

Можете да създавате отчети, за да видите дали трябва да надстроите своите бази данни или пакети от операционни системи.

$ s9s report --cluster-id=ID --type=upgrade --create

Където ID е идентификационният номер на клъстера:въз основа на този отчет можете да планирате прозорци за поддръжка, за да стартирате надстройките, като това може да стане и от ClusterControl.

Монитор на заявки

Можете да проверите процеса, който се изпълнява на вашите възли, и да ги филтрирате по заявка, източник и други.

$ s9s process \
--top-queries \
--cluster-id=ID \
--update-freq=1 \
'INSERT*'


$ s9s process \
--list-queries \
--cluster-id=ID \
--client='IP_ADDRESS:*' \
'INSERT*'

Наблюдение

Имате различни опции за наблюдение на системите си оттук. Можете да проверите състоянието на всички клъстери, да проверите един от тях или дори да проверите алармите в реално време.

$  s9s cluster --list --long



ID STATE   TYPE              OWNER  GROUP  NAME         COMMENT
 1 STARTED postgresql_single system admins PostgreSQL Cluster All nodes are operational.
 2 FAILURE galera            system admins PXC57        Cluster failure.
 3 STARTED replication       system admins MariaDB104   All nodes are operational.
 4 STARTED mongodb           system admins MongoDB42    All nodes are operational.
Total: 4


$ s9s alarm --cluster-name="PostgreSQL Cluster" --list

ID  CID SEVERITY COMPONENT TYPE              HOSTNAME        TITLE
263   1 CRITICAL Network   HostSshFailed     haproxy1    SSH failed
264   1 CRITICAL Network   HostSshFailed     haproxy2    SSH failed
265   1 CRITICAL Network   HostSshFailed     postgresql2 SSH failed
266   1 CRITICAL Network   HostSshFailed     postgresql3 SSH failed
...

Оперативни отчети

Можете да създавате оперативни отчети и да ги проверявате от командния ред. Същият отчет е наличен в потребителския интерфейс на ClusterControl.

$ s9s report --cluster-id=ID --type=default --create

Това бяха само някои основни примери, за да видите какви неща можете да изпълнявате с помощта на ClusterControl CLI. За повече информация относно инструмента можете да се обърнете към официалната документация.

Заключение

Винаги има риск от хакване, но можете да затворите празнината в уязвимостта на вашия PostgreSQL клъстер, като проверите гореспоменатите точки. За да направите тази задача много по-лесна, можете да използвате потребителския интерфейс на ClusterControl или дори да автоматизирате проверките с ClusterControl CLI. Може също да се интегрира с външни инструменти като Ansible, Puppet и др.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как Asin() работи в PostgreSQL

  2. Изгледи на списъци на PostgreSQL

  3. Как да инсталирате тихо Postgresql в Ubuntu чрез. Dockerfile?

  4. Как да наблюдавате PostgreSQL, работещ вътре в Docker контейнер:Част втора

  5. Работниците на Rails Resque се провалят с PGError:сървърът неочаквано затвори връзката