From 2c30db48073c3ee80175eb5beff2b2922c83b4cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=B2=D1=87=D0=B5=D0=BD=D0=BA=D0=BE=20=D0=9B?= =?UTF-8?q?=D1=8E=D0=B4=D0=BC=D0=B8=D0=BB=D0=B0=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B5=D0=B2=D0=BD=D0=B0?= Date: Wed, 11 Mar 2026 16:17:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B2=D0=B8=D1=81=20PostgreS?= =?UTF-8?q?QL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PaaS/PostgreSQL/about.md | 87 ++++++++ src/PaaS/PostgreSQL/cluster_parameter.md | 205 ++++++++++++++++++ ...ие к сервису Cloud PostgreSQL.md => connection.md} | 67 +++--- ...сти_пользователя_PostgreSQL.md => user_capabilities.md} | 25 ++- ...ехнических_параметров_кластера_Cloud_PostgreSQL.md | 173 --------------- .../Техническое описание PostgreSQL.md | 68 ------ 6 files changed, 345 insertions(+), 280 deletions(-) create mode 100644 src/PaaS/PostgreSQL/about.md create mode 100644 src/PaaS/PostgreSQL/cluster_parameter.md rename src/PaaS/PostgreSQL/{Подключение к сервису Cloud PostgreSQL.md => connection.md} (68%) rename src/PaaS/PostgreSQL/{Права_и_возможности_пользователя_PostgreSQL.md => user_capabilities.md} (97%) delete mode 100644 src/PaaS/PostgreSQL/Описание_технических_параметров_кластера_Cloud_PostgreSQL.md delete mode 100644 src/PaaS/PostgreSQL/Техническое описание PostgreSQL.md diff --git a/src/PaaS/PostgreSQL/about.md b/src/PaaS/PostgreSQL/about.md new file mode 100644 index 0000000..b286657 --- /dev/null +++ b/src/PaaS/PostgreSQL/about.md @@ -0,0 +1,87 @@ +# Cloud PostgreSQL + +## Назначение сервиса + +**Cloud PostgreSQL** - это управляемый облачный сервис реляционной базы данных PostgreSQL. Он позволяет развернуть и использовать отказоустойчивый кластер базы данных без необходимости самостоятельно настраивать серверы, репликацию и механизмы отказоустойчивости. + +PostgreSQL - это современная система управления базами данных, которая поддерживает стандарт SQL и используется для хранения и обработки данных приложений. + +В **Cloud PostgreSQL** все основные операции по управлению кластером выполняются автоматически. + +Сервис самостоятельно: +- управляет ролями серверов базы данных (основной сервер и реплики); +- отслеживает состояние узлов; +- автоматически переключает основной сервер при сбоях. + +Для обеспечения стабильной работы сервиса используется несколько инфраструктурных компонентов: +- **Patroni** - управляет кластером PostgreSQL и автоматическим переключением при отказах; +- **etcd** - хранит состояние кластера и обеспечивает согласованность работы узлов; +- **HAProxy** - обеспечивает единую точку подключения и распределяет клиентские подключения между узлами. + +Подключение к базе данных выполняется через прокси-узлы сервиса. Пользователю не требуется подключаться к отдельным серверам кластера — все операции производятся через единую точку доступа. + +Для управления базами данных и пользователями доступен web-интерфейс **pgAdmin**, позволяющий выполнять администрирование непосредственно через браузер. + +## Конфигурации кластера + +Сервис Cloud PostgreSQL поддерживает версии СУБД с 13 по 17 включительно. + +Кластер предоставляется в архитектуре Primary–Standby, которая обеспечивает: + +- синхронную репликацию данных; +- повышенную отказоустойчивость. + +В рамках данной конфигурации создаётся кластер из виртуальных серверов, включающий: + +- **Primary** (основной сервер) — обязательный узел, на котором выполняются операции записи данных; +- **Replica** (реплики) — дополнительные узлы (от 0 до 4), создаваемые по желанию пользователя. + +Реплики являются полноценными участниками кластера PostgreSQL и могут использоваться для выполнения запросов, не изменяющих данные (например, SELECT). + +В многоузловой конфигурации серверы кластера размещаются на разных физических хостах гипервизора, что повышает устойчивость сервиса к отказам оборудования. + +## Режимы репликации + +По умолчанию фиксация изменений выполняется в **синхронном режиме**. Это означает, что операция записи считается завершённой только после того, как данные будут зафиксированы как на основном сервере, так и на одной из реплик. + +Если в кластере настроено несколько реплик, синхронный режим применяется только к одной из них. Остальные реплики работают в асинхронном режиме — изменения передаются на них без ожидания подтверждения. + +При необходимости режим репликации может быть изменён на полностью **асинхронный**. В этом случае изменения сначала фиксируются на основном сервере, а затем передаются на реплики с задержкой. + +## Доступ к серверам и оптимизация соединений + +Прямой доступ к серверам кластера (например, по протоколу SSH) не предоставляется. Пользователь взаимодействует с базой данных исключительно через точки подключения, предоставленные сервисом. + +На каждом узле кластера установлен пулер соединений **PgBouncer**, который может использоваться для ускорения работы приложений за счёт оптимизации подключений к базе данных. + +::: warning Примечание + +Использование PgBouncer не является обязательным - подключение возможно как напрямую к PostgreSQL, так и через пулер, а также одновременно обоими способами. + +::: + +## Возможности сервиса + +**Cloud PostgreSQL** предоставляет набор возможностей, позволяющих использовать PostgreSQL в облаке без необходимости самостоятельного администрирования инфраструктуры. + +Сервис обеспечивает: + +- автоматическое управление кластером PostgreSQL; +- высокую доступность за счёт репликации и автоматического переключения primary-узла; +- единую точку подключения к базе данных через прокси; +- автоматическое переключение при отказе узлов кластера без вмешательства пользователя; +- web-доступ к управлению базами данных и пользователями через pgAdmin; +- совместимость со стандартными клиентскими инструментами PostgreSQL; +- возможность установки расширений PostgreSQL в базу данных. + +## Сценарии использования сервиса + +**Cloud PostgreSQL** подходит для использования в системах, где требуется надёжное хранение данных и упрощённое управление инфраструктурой базы данных. + +Сервис может применяться в следующих сценариях: + +- размещение production-баз данных с высокими требованиями к доступности; +- использование PostgreSQL в микросервисной архитектуре с единой точкой подключения к базе данных; +- хранение критичных данных с минимальным временем простоя при отказах инфраструктуры; +- быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover; +- администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера. diff --git a/src/PaaS/PostgreSQL/cluster_parameter.md b/src/PaaS/PostgreSQL/cluster_parameter.md new file mode 100644 index 0000000..bf27193 --- /dev/null +++ b/src/PaaS/PostgreSQL/cluster_parameter.md @@ -0,0 +1,205 @@ +# О разделе + +Данный раздел содержит описание технических параметров кластера PostgreSQL и порядок их первичной конфигурации. + +Настройка указанных параметров выполняется администратором облачного провайдера на этапе развёртывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке. + +Перед созданием кластера клиент предоставляет перечень требуемых параметров менеджеру. Администратор облачного провайдера выполняет конфигурацию в соответствии с согласованными требованиями. + +## Выбор типа и размера дискового хранилища + +Производительность базы данных напрямую зависит от скорости, с которой она может читать и записывать данные на диск. При заказе кластера необходимо выбрать тип дискового хранилища, который определит максимальную скорость работы (IOPS) и время отклика. + +**IOPS (Input/Output Operations Per Second)** — количество операций чтения или записи, которые диск может выполнить за секунду. Чем выше этот показатель, тем быстрее база данных обрабатывает запросы. + +## Доступные типы хранилищ: + +| Название | Лимит IOPS | Время отклика | +| ---------------| ------------------ | ------------- | +| **Fast SAS** | до 2 IOPS на 1 ГБ | до 10 мс | +| **SSD** | до 5 IOPS на 1 ГБ | до 7 мс | +| **Fast SSD** | до 10 IOPS на 1 ГБ | до 5 мс | +| **Ultra NVMe** | до 25 IOPS на 1 ГБ | до 3 мс | + +::: warning Примечание + +После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера PostgreSQL. Минимальный объем - 50 ГБ. + +::: + +## Конфигурация вычислительных ресурсов + +В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер PostgreSQL. + +### Количество нод в кластере + +Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надёжность и производительность операций чтения. + +Количество нод выбирается в диапазоне **от 1 до 5**. + +### Процессор (CPU) + +Процессор — это вычислительная мощность, выделяемая каждой ноде кластера. Количество vCPU определяет, насколько быстро база данных сможет: + +- обрабатывать запросы; +- выполнять сложные операции (сортировки, объединения таблиц); +- обслуживать одновременные подключения. + +Доступный диапазон: **от 2 до 24 vCPU** на ноду. + +### Оперативная память (RAM) + +Оперативная память — один из ключевых ресурсов для производительности базы данных. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. + +Доступный диапазон: **от 4 до 768 ГБ RAM** на ноду. + +### Доступ в интернет + +При заказе сервиса можно выбрать пропускную способность канала связи, через который будет осуществляться доступ к кластеру PostgreSQL из сети интернет. + +**Доступные варианты скорости:** +- 50 Мбит/с; +- 100 Мбит/с; +- 200 Мбит/с; +- 300 Мбит/с; +- 400 Мбит/с; +- 500 Мбит/с; +- 1000 Мбит/с (1 Гбит/с). + +::: warning Примечание + +Для выбранного канала предоставляется статический белый IP-адрес. + +::: + +## Параметры конфигурации IPSEC + +Ниже приведены основные параметры, задаваемые при развёртывании кластера PostgreSQL. Часть параметров определяется клиентом на этапе заказа услуги, часть — фиксирована и не подлежит изменению. + +### Данные о конфигурации IPSEC + +Параметры подключения (имя туннеля, устройство, публичный IP-адрес) заполняются вручную на основании информации, предоставленной заказчиком. + +### Версия IKE (Internet Key Exchange) + +Версия IKE выбирается из выпадающего списка, который содержит два значения: + +- **IKE v1** — более ранняя версия протокола; +- **IKE v2** — более современная версия, обеспечивающая лучшую устойчивость соединения и более гибкую обработку ошибок. + +Рекомендуется использовать IKE v2, если оборудование заказчика это поддерживает. + +### Метод аутентификации + +Метод аутентификации выбирается из выпадающего списка, который содержит два варианта: + +- **PSK** (Pre-Shared Key) — аутентификация с использованием заранее согласованного общего ключа; +- **Certificate** (сертификат) — аутентификация с использованием цифровых сертификатов. + +## Этап 1 - установка защищенного соединения + +На данном этапе задаются параметры шифрования и аутентификации для защищённого канала связи. Все параметры выбираются вручную из выпадающих списков. + +### Алгоритм хэширования + +Определяет алгоритм хэширования для защиты управляющего канала. Параметр заполняется вручную из выпадающего списка: + +- **SHA1** — формирует хэш длиной 160 бит, имеет коллизии (уязвимости), в современных системах считается устаревшим, используется только для совместимости со старым оборудованием. +- **SHA2-256** — формирует хэш длиной 256 бит, существенно более устойчив к атакам, оптимальный баланс между безопасностью и производительностью. +- **SHA2-384** — длина хэша составляет 384 бита, имеет повышенную криптостойкость, требует больше вычислительных ресурсов, чем SHA-1 и SHA2-256. Используется в средах с повышенными требованиями к безопасности. +- **SHA2-512** — длина хэша составляет 512 бит, обеспечивает самый высокий уровень стойкости из перечисленных, создает наибольшую нагрузку на процессор. Обычно применяется в системах с повышенными требованиями к криптографии. + +### Шифрование (Hash) + +Определяет алгоритм симметричного шифрования. Параметр заполняется вручную из выпадающего списка: + +AES 128 — использует 128-битный ключ, обеспечивает быстрое шифрование, имеет достаточный уровень безопасности для большинства задач. +AES 256 — использует 256-битный ключ, обеспечивает более высокую криптостойкость, оказывает немного большую нагрузку на CPU. +AES GCM 128 / AES GCM 192 / AES GCM 256 — данные алгоритмы совмещают шифрование и контроль целостности, обладают более современным режимом работы, считаются более эффективными по производительности, рекомендуются в современных конфигурациях. Разница между алгоритмами — в длине ключа. + +### DH Group (группа Диффи — Хеллмана) + +Механизм Diffie-Hellman используется для безопасной генерации общего секретного ключа между сторонами туннеля без передачи этого ключа по сети. Чем выше номер группы и длина ключа, тем выше криптографическая стойкость соединения. + +Параметр заполняется вручную из выпадающего списка: + +group 2; +group 5; +group 14; +group 15; +group 16; +group 19; +group 20; +group 21. + +### IKE Mode (только для IKEv1) + +Параметр **IKE Mode** определяет способ установления соединения на этапе 1 при использовании протокола IKEv1. + +Доступны два режима: Main и Aggressive. Они отличаются количеством сообщений при установке соединения и уровнем защиты идентификационных данных. + +- **Main Mode** — стандартный и более безопасный режим работы IKEv1; +- **Aggressive Mode** — упрощённый и ускоренный режим установления соединения с более низким уровнем защиты данных. + +### Время жизни (Lifetime) + +Параметр определяет, как долго действуют согласованные ключи в рамках первой фазы. После истечения времени выполняется повторная генерация ключей. + +## Этап 2 - передача данных + +Этап 2 IPsec-соединения отвечает за шифрование и защиту пользовательского трафика после того, как защищённый канал был установлен на этапе 1. Этот этап регулирует передачу данных между сторонами через безопасный туннель, который обеспечивает конфиденциальность и целостность данных. + +### Алгоритм хэширование (Hash) + +Аналогично этапу 1, параметр Hash используется для защиты целостности передаваемых данных. Он обеспечивает проверку того, что данные не были изменены при передаче. Доступны следующие алгоритмы: + +- SHA1; +- SHA2-256; +- SHA2-384; +- SHA2-512. + +## Шифрование + +Этап 2 отвечает за шифрование пользовательского трафика. Это важнейший параметр, который защищает данные при их передаче по сети. Доступны следующие алгоритмы: + +- AES 128; +- AES 256; +- AES GCM 128; +- AES GCM 192; +- AES GCM 256. + +### PFS + +**Enable perfect forward secrecy (PFS)** - параметр, активирующий генерацию нового ключа на этапе 2. При включенном PFS группа Diffie-Hellman (DH) будет такая же как и на 1-й фазе. + +Данный параметр представлен в виде чекбокса. При его включении: + +- на этапе 2 выполняется дополнительный обмен ключами DH; +- для каждой новой IPsec-сессии формируется новый независимый криптографический секрет; +- ключи шифрования пользовательского трафика не зависят от ключей этапа 1. + +### DH Group (группа Диффи — Хеллмана) + +Группа DH определяет параметры обмена ключами между сторонами. Чем выше номер группы, тем выше криптографическая стойкость и безопасность обмена. + +Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: + +- group 2; +- group 5; +- group 14; +- group 15; +- group 16; +- group 19; +- group 20; +- group 21. + +### Время жизни (Lifetime) + +Определяет, как долго действуют согласованные ключи в рамках второй фазы. + +- рекомендуемое значение: 3600 секунд (1 час); +- после истечения времени выполняется повторная генерация ключей. + +### Префиксы локальной сети заказчика + +Этот параметр определяет, какие сети на стороне заказчика будут маршрутизироваться через **IPsec-туннель**. Префиксы задаются в формате `192.168.1.0/24`, который позволяет указать диапазон IP-адресов. \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/Подключение к сервису Cloud PostgreSQL.md b/src/PaaS/PostgreSQL/connection.md similarity index 68% rename from src/PaaS/PostgreSQL/Подключение к сервису Cloud PostgreSQL.md rename to src/PaaS/PostgreSQL/connection.md index 66ea1aa..d561775 100644 --- a/src/PaaS/PostgreSQL/Подключение к сервису Cloud PostgreSQL.md +++ b/src/PaaS/PostgreSQL/connection.md @@ -1,15 +1,15 @@ -## Общая схема подключения +# Общая схема подключения Доступ к кластеру PostgreSQL осуществляется через прокси. Клиентские подключения принимаются прокси, который маршрутизирует трафик к соответствующим узлам кластера (master или replica) в зависимости от выбранного порта. Прямое подключение к узлам базы данных не используется. -Подключение к кластеру Cloud PostgreSQL осуществляется через прокси-сервер. -Прокси является единой точкой входа для всех клиентских подключений и принимает входящие соединения от приложений, административных инструментов и пользователей. В зависимости от выбранного порта прокси автоматически направляет трафик: +Подключение к кластеру **Cloud PostgreSQL** осуществляется через прокси-сервер. Прокси является единой точкой входа для всех клиентских подключений и принимает входящие соединения от приложений, административных инструментов и пользователей. + +В зависимости от выбранного порта прокси автоматически направляет трафик: - на активный primary-узел - для операций чтения и записи - на реплики - для операций только чтения Прямое подключение к отдельным узлам базы данных не используется и не предоставляется. Взаимодействие с кластером всегда выполняется через прокси-сервер. ------- ## Подключение к базе данных Для подключения к базе данных необходимо использовать IP-адрес прокси-сервера, который предоставляется после заказа услуги. @@ -18,66 +18,69 @@ Использование других IP-адресов или попытка прямого подключения к отдельным узлам кластера не предусмотрены. ------- ## Доступные порты Для разных типов нагрузки используются разные порты: -|Порт|Назначение| -|---|---| -|5432|Primary (чтение и запись)| -|15432|Replica (только чтение)| -|6432|Primary через PgBouncer (чтение и запись)| -|16432|Replica через PgBouncer (только чтение)| +|Порт |Назначение | +|------|-----------------------------------------| +|5432 |Primary (чтение и запись) | +|15432 |Replica (только чтение) | +|6432 |Primary через PgBouncer (чтение и запись)| +|16432 |Replica через PgBouncer (только чтение) | + ### Особенности работы портов -- Порты для чтения и записи (5432, 6432) всегда направляют трафик на активный primary-узел. При смене primary переключение происходит автоматически. -- Порты только для чтения (15432, 16432) направляют трафик на активные реплики. Если реплик несколько, нагрузка распределяется между ними по принципу round-robin. +- Порты для чтения и записи (5432, 6432) всегда направляют трафик на активный primary-узел. При смене primary переключение происходит автоматически; +- Порты только для чтения (15432, 16432) направляют трафик на активные реплики. Если реплик несколько, нагрузка распределяется между ними по принципу round-robin; - Если в кластере отсутствуют реплики, порты для чтения не используются - подключение по ним не устанавливается. + ### Рекомендации по выбору порта -- Для OLTP-нагрузки и большого количества соединений рекомендуется использовать порты PgBouncer (6432 или 16432). -- Для операций записи используйте master-порты (5432 или 6432). -- Для read-only запросов можно использовать replica-порты (15432 или 16432). +- Для OLTP-нагрузки и большого количества соединений рекомендуется использовать **порты PgBouncer (6432 или 16432)**; +- Для операций записи используйте **master-порты (5432 или 6432)**; +- Для read-only запросов можно использовать **replica-порты (15432 или 16432)**. ------- ## Доступ к pgAdmin Для администрирования базы данных используется web-интерфейс pgAdmin. Доступ осуществляется по DNS-имени, которое нужно прописать локально в инфраструктуре откуда будет происходить доступ к web-интерфейсу сервиса: - `10.X.X.4 .cloud-pg.dfcloud.ru` +`10.X.X.4 .cloud-pg.dfcloud.ru` После добавления записи pgAdmin будет доступен по адресу: - `https://.cloud-pg.dfcloud.ru` +`https://.cloud-pg.dfcloud.ru` Авторизация выполняется с использованием учётных данных, предоставленных вместе с доступом к сервису. -### Важно +::: warning Важно -- Подключение к базе данных возможно только через указанный прокси-IP. -- В интерфейсе pgAdmin уже добавлен сервер базы данных, созданный для данной инсталляции. Для подключения требуется ввести пароль от учётной записи базы данных. +- подключение к базе данных возможно только через указанный прокси-IP; +- в интерфейсе pgAdmin уже добавлен сервер базы данных, созданный для данной инсталляции. Для подключения требуется ввести пароль от учётной записи базы данных; - pgAdmin предназначен для администрирования и не рекомендуется для выполнения тяжёлых или длительных запросов в production-среде. ------- +::: + ## Примеры подключения к PostgreSQL Подключение к primary: - `psql -h 10.X.X.4 -p 5432 -U -d ` +`psql -h 10.X.X.4 -p 5432 -U -d ` Подключение через PgBouncer: - `psql -h 10.X.X.4 -p 6432 -U -d ` +`psql -h 10.X.X.4 -p 6432 -U -d ` + ### Подключение через DBeaver / DataGrip При создании подключения укажите: -- Host: 10.X.X.4 -- Port: 5432 или 6432 -- Database: `` -- User / Password: согласно выданным доступам -- Тип подключения: PostgreSQL +- Host: 10.X.X.4; +- Port: 5432 или 6432; +- Database: ``; +- User / Password: согласно выданным доступам; +- Тип подключения: PostgreSQL. + ### Пример строки подключения Primary: - `postgresql://:@10.X.X.4:5432/` +`postgresql://:@10.X.X.4:5432/` Через PgBouncer: - `postgresql://:@10.X.X.4:6432/` +`postgresql://:@10.X.X.4:6432/` diff --git a/src/PaaS/PostgreSQL/Права_и_возможности_пользователя_PostgreSQL.md b/src/PaaS/PostgreSQL/user_capabilities.md similarity index 97% rename from src/PaaS/PostgreSQL/Права_и_возможности_пользователя_PostgreSQL.md rename to src/PaaS/PostgreSQL/user_capabilities.md index 3903fcb..dbe1ea2 100644 --- a/src/PaaS/PostgreSQL/Права_и_возможности_пользователя_PostgreSQL.md +++ b/src/PaaS/PostgreSQL/user_capabilities.md @@ -1,8 +1,9 @@ -Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса Cloud PostgreSQL, а также перечень административных операций, доступных ему для самостоятельного выполнения. +# Создание сервиса Cloud PostgreSQL + +Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса **Cloud PostgreSQ**L**, а также перечень административных операций, доступных ему для самостоятельного выполнения. При развертывании сервиса автоматически создаётся пользователь базы данных с преднастроенными атрибутами и привилегиями. Эти права позволяют заказчику самостоятельно управлять своими базами данных, ролями и пользователями в рамках созданного экземпляра PostgreSQL. ------- ## Общая информация о пользователе При инициализации сервиса автоматически создаётся пользователь: @@ -13,10 +14,10 @@ client Данный пользователь является основной учётной записью для административной работы в рамках предоставленного экземпляра PostgreSQL. Он предназначен для самостоятельного управления базами данных, ролями и правами доступа в пределах выданных привилегий. ------- ## Выданные права и ограничения Пользователю `client` назначается набор атрибутов и привилегий, позволяющих выполнять административные операции в рамках своего экземпляра базы данных. + ### Атрибуты роли Пользователь создаётся со следующими атрибутами: @@ -24,11 +25,13 @@ client - `CREATEROLE` — разрешено создание ролей и пользователей, а также управление их. Атрибут `SUPERUSER` пользователю не предоставляется. Соответственно, доступ к системным операциям уровня кластера и настройкам сервера отсутствует. + ### Права на системную базу postgres: К стандартной базе данных `postgres` пользователю предоставлено только право подключения: - `CONNECT` Иные привилегии (создание объектов, изменение схем и т.д.) на данную базу не выдаются. + ### Мониторинг и системные представления: Для выполнения базовых задач мониторинга пользователю дополнительно предоставлены: @@ -40,7 +43,6 @@ pg_catalog.pg_stat_replication Доступ к системной информации предоставляется исключительно в режиме чтения. Изменение системных представлений и параметров сервера недоступно. ------- ## Обязательная смена пароля После первого подключения к базе данных пользователь `client` обязан выполнить смену пароля. @@ -74,10 +76,10 @@ ALTER USER client WITH ENCRYPTED PASSWORD '$4096:...'; Рекомендуется использовать сложный уникальный пароль, соответствующий требованиям информационной безопасности, и хранить его в защищённом хранилище. ------- ## Создание новой базы данных Пользователь `client` имеет право создавать новые базы данных в рамках своего экземпляра PostgreSQL. + ### Пример создания базы данных Для создания базы данных используется стандартная команда: @@ -87,6 +89,7 @@ CREATE DATABASE app_db; ``` Если необходимо назначить владельца базы данных, можно указать соответствующего пользователя. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает. + ### Пример создания базы данных с указанием владельца ```sql @@ -95,10 +98,10 @@ CREATE DATABASE app_db OWNER client; В этом примере база данных `app_db` будет принадлежать пользователю `client`. Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. ------- ## Создание пользователей и ролей Пользователь `client` имеет право создавать новые роли и пользователей для приложений, а также управлять их правами доступа. + ### Создание роли без логина Если требуется создать роль, которая не будет иметь возможности входа в базу данных (например, для организации прав доступа), можно использовать команду: @@ -106,6 +109,7 @@ CREATE DATABASE app_db OWNER client; ```sql CREATE ROLE app_role; ``` + ### Создание пользователя с паролем Для создания пользователя с паролем используется команда: @@ -115,6 +119,7 @@ CREATE USER app_user WITH PASSWORD 'app_password'; ``` После этого новый пользователь `app_user` будет иметь возможность входа в базу данных, используя указанный пароль. + ### Назначение роли пользователю Для назначения роли пользователю используется команда `GRANT`. Это позволяет управлять правами пользователя в рамках определённой роли: @@ -124,6 +129,7 @@ GRANT app_role TO app_user; ``` После выполнения этой команды пользователь `app_user` станет членом роли `app_role`, и будет наследовать все права, связанные с этой ролью. + ### Передача владельца базы данных Если необходимо передать право владения базой данных другому пользователю, это можно сделать с помощью следующей команды: @@ -133,9 +139,11 @@ ALTER DATABASE app_db OWNER TO app_user; ``` Теперь база данных `app_db` будет принадлежать пользователю `app_user`, и он будет иметь полный контроль над ней. + ### Управление правами доступа После создания пользователей и ролей необходимо назначить им соответствующие права доступа. + ### Выдача прав на подключение к базе данных Для того чтобы пользователь мог подключаться к базе данных, нужно предоставить ему соответствующие права: @@ -155,6 +163,7 @@ GRANT USAGE, CREATE ON SCHEMA public TO app_user; ``` Эти права позволяют пользователю `app_user` использовать объекты в схеме `public`, а также создавать новые объекты внутри неё. + ### Права на существующие таблицы Чтобы предоставить пользователю доступ к существующим таблицам в схеме `public`, можно использовать команду: @@ -164,6 +173,7 @@ GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user; ``` Эта команда позволяет пользователю `app_user` выполнять операции чтения, вставки, обновления и удаления данных в существующих таблицах схемы `public`. + ### Права на будущие таблицы Если необходимо автоматически предоставить пользователю права на новые таблицы, создаваемые в схеме `public`, используйте команду: @@ -175,10 +185,10 @@ GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user; Эта команда обеспечит, что все будущие таблицы, создаваемые в схеме `public`, будут автоматически иметь права для пользователя `app_user` на чтение, вставку, обновление и удаление данных. ------- ## Мониторинг репликации Пользователь `client` имеет доступ к системным представлениям для мониторинга состояния репликации в кластере PostgreSQL. + ### Просмотр состояния репликации Для того чтобы просмотреть текущий статус репликации, пользователь может выполнить запрос к системному представлению: @@ -187,6 +197,7 @@ GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user; SELECT * FROM pg_stat_replication; ``` Этот запрос возвращает информацию о всех репликах, подключённых к основному (primary) серверу. + ### Ограничения доступа Пользователь `client` имеет доступ к данным в представлении `pg_stat_replication` только в режиме **read-only**. Это означает, что он может просматривать состояние репликации, но не может изменять или вмешиваться в процесс репликации. \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/Описание_технических_параметров_кластера_Cloud_PostgreSQL.md b/src/PaaS/PostgreSQL/Описание_технических_параметров_кластера_Cloud_PostgreSQL.md deleted file mode 100644 index 2137a23..0000000 --- a/src/PaaS/PostgreSQL/Описание_технических_параметров_кластера_Cloud_PostgreSQL.md +++ /dev/null @@ -1,173 +0,0 @@ -## О разделе - -Данный раздел описывает технические параметры кластера PostgreSQL и порядок их первичной конфигурации. - -Настройка указанных параметров выполняется администратором облачного провайдера на этапе развертывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке. - -Перед созданием кластера клиент предоставляет перечень требуемых параметров менеджеру. Администратор облачного провайдера выполняет конфигурацию в соответствии с согласованными требованиями. - ------ -## Выбор типа и размера дискового хранилища - -Производительность базы данных напрямую зависит от скорости, с которой она может читать и записывать данные на диск. При заказе кластера необходимо выбрать тип дискового хранилища, который определит максимальную скорость работы (IOPS) и время отклика. - -_IOPS_ - количество операций чтения или записи, которые диск может выполнить за секунду. Чем выше этот показатель, тем быстрее база данных обрабатывает запросы. -### Доступные типы хранилищ: - -| Название | Лимит IOPS | Время отклика | -| -------------- | ------------------ | ------------- | -| **Fast SAS** | до 2 IOPS на 1 ГБ | до 10 мс | -| **SSD** | до 5 IOPS на 1 ГБ | до 7 мс | -| **Fast SSD** | до 10 IOPS на 1 ГБ | до 5 мс | -| **Ultra NVMe** | до 25 IOPS на 1 ГБ | до 3 мс | - -**После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера PostgreSQL. Минимальный объем - 50 ГБ.** - -## Конфигурация вычислительных ресурсов - -В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер PostgreSQL. - -### Количество нод в кластере - -Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надежность и производительность чтения. Количество нод выбирается в диапазоне от 1 до 5. - -### Процессор (CPU) - -Процессор - это вычислительная мощность, которая выделяется каждой ноде кластера. Количество vCPU определяет, насколько быстро база данных сможет обрабатывать запросы, выполнять сложные операции (сортировки, объединения таблиц) и обслуживать одновременные подключения. Доступный диапазон выбора процессора: от 2 шт до 24 шт. - -### Оперативная память (RAM) - -Оперативная память - один из ключевых ресурсов для производительности. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. Доступный диапазон выбора оперативной памяти: от 4 ГБ до 768 ГБ. - -## Интернет - -При заказе сервиса можно выбрать пропускную способность канала связи, через который будет осуществляться доступ к кластеру PostgreSQL из сети интернет. - -**Доступные варианты скорости:** -- 50 Мбит/с -- 100 Мбит/с -- 200 Мбит/с -- 300 Мбит/с -- 400 Мбит/с -- 500 Мбит/с -- 1000 Мбит/с (1 Гбит/с) - -*Для выбранного канала предоставляется статический белый IP-адрес.* - ------ -## Параметры конфигурации IPSEC - -Ниже приведены основные параметры, задаваемые при развертывании кластера PostgreSQL. Часть параметров определяется клиентом на этапе заказа услуги, часть - фиксирована и не подлежит изменению. - -### Данные о конфигурации IPSEC - -Параметры подключения (имя туннеля, устройство, публичный IP-адрес) заполняются вручную на основании информации, предоставленной заказчиком. -### Версия IKE (Internet Key Exchange) - -Версия IKE выбирается из выпадающего списка, который содержит в себе два параметра - _v1_ и _v2_. Разница заключается в том, что _IKE v1_ - более ранняя версия протокола. -_IKE v2_ - более современная версия, обеспечивающая лучшую устойчивость соединения и более гибкую обработку ошибок. Рекомендуется использовать IKE v2, если оборудование заказчика это поддерживает. - -### Метод аутентификации - -Метод аутентификации выбирается вручную из выпадающего списка, который содержит два варианта: _PSK_ (Pre-Shared Key) и _Certificate_ (Сертификат). -- _PSK (Pre-Shared Key)_ - метод аутентификации, при котором используется заранее согласованный общий ключ. -- _Certificate_ - аутентификация с использованием цифровых сертификатов. - ------- -## Этап 1 - установка защищенного соединения - -### Hash - -Определяет алгоритм хэширования для защиты управляющего канала. Данный параметр заполняется вручную из выпадающего списка следующего содержания: -- _SHA 1_ - Формирует хэш длиной 160 бит, имеет коллизии (уязвимости), в современных системах считается устаревшим, используется только для совместимости со старым оборудованием. -- _SHA 2 - 256_ - Формирует хэш длиной 256 бит, существенно более устойчив к атакам, оптимальный баланс между безопасностью и производительностью, а также, на сегодняшний день, является стандартом по умолчанию в большинстве систем. -- _SHA 2 - 384_ - Длина хэша составляет 384 бита, имеет повышенную криптостойкость, требует больше вычислительных ресурсов, чем SHA-1 и SHA 2-256. Используется в средах с повышенными требованиями к безопасности. -- _SHA 2 - 512_ - Длина хэша составляет 512 бит, осуществляет самый высокий уровень стойкости из перечисленных, а также создает большую нагрузку на процессор. Обычно применяется в системах с повышенными требованиями к криптографии. - -### Шифрование - -Определяет алгоритм симметричного шифрования. Данный параметр заполняется вручную из выпадающего списка следующего содержания: -- _AES 128_ - имеет 128-битный ключ, обеспечивает быстрое шифрование, имеет достаточный уровень безопасности для большинства задач. -- _AES 256_ - имеет 256-битный ключ, обеспечивает более высокую криптостойкость, оказывает немного большую нагрузку на CPU. -- _AES GCM 128_ / _AES GCM 192_ / _AES GCM 256_ - данные алгоритмы совмещают шифрование и контроль целостности, обладают более современным режимом работы, считаются более эффективными по производительности, а также рекомендуются в современных конфигурациях. Разница между этими тремя алгоритмами лишь в длине ключа. - -### DH Group - группа Деффи Хеллмана - -Механизм Diffie-Hellman используется для безопасной генерации общего секретного ключа между сторонами туннеля без передачи этого ключа по сети. -Чем выше номер группы и длина ключа - тем выше криптографическая стойкость соединения. - -Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: -- _group 2_ -- _group 5_ -- _group 14_ -- _group 15_ -- _group 16_ -- _group 19_ -- _group 20_ -- _group 21_ -### IKE Mode (только для IKEv1) - -Параметр IKE Mode определяет способ установления соединения на этапе 1 при использовании протокола IKEv1. - -Доступны два режима: _Main_ и _Aggressive_. Они отличаются количеством сообщений при установке соединения и уровнем защиты идентификационных данных. -- Main Mode - является стандартным и более безопасным режимом работы IKEv1. -- Aggressive Mode - упрощённый и ускоренный режим установления соединения. (более низкий уровень защиты данных) - -### Время жизни - -Определяет, как долго действуют согласованные ключи в рамках первой фазы. -- Рекомендуемое значение: 86400 секунд (24 часа). -- После истечения времени выполняется повторная генерация ключей. - ------- -## Этап 2 - передача данных - -Этап 2 IPsec-соединения отвечает за шифрование и защиту пользовательского трафика после того, как защищённый канал был установлен на этапе 1. Этот этап регулирует передачу данных между сторонами через безопасный туннель, который обеспечивает конфиденциальность и целостность данных. -## Hash - -Аналогично этапу 1, параметр Hash используется для защиты целостности передаваемых данных. Он обеспечивает проверку, что данные не были изменены при передаче. Содержит такой же перечень элементов для выбора: -- _SHA 1_ -- _SHA 2 - 256_ -- _SHA 2 - 384_ -- _SHA 2 - 512_ - -## Шифрование - -Этап 2 отвечает за шифрование пользовательского трафика. Это важнейший параметр, который защищает данные при их передаче по сети. Доступны следующие алгоритмы: -- _AES 128_ -- _AES 256_ -- _AES GCM 128_ -- _AES GCM 192_ -- _AES GCM 256_ -### PFS - -_Enable perfect forward secrecy (PFS)_ - параметр, активирующий генерацию нового ключа на этапе 2. При включенном PFS группа DH будет такая же как и на 1-й фазе. -Данный параметр представлен в виде чекбокса. При его включении: - -- На этапе 2 выполняется дополнительный обмен ключами Diffie-Hellman. -- Для каждой новой IPsec-сессии формируется новый независимый криптографический секрет. -- Ключи шифрования пользовательского трафика не зависят от ключей этапа 1. - -### DH Group - группа Деффи Хеллмана - -Группа DH определяет параметры обмена ключами между сторонами. Чем выше номер группы, тем выше криптографическая стойкость и безопасность обмена. - -Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: -- _group 2_ -- _group 5_ -- _group 14_ -- _group 15_ -- _group 16_ -- _group 19_ -- _group 20_ -- _group 21_ - -### Время жизни (в секундах) - -Определяет, как долго действуют согласованные ключи в рамках второй фазы. - -- Рекомендуемое значение: 3600 секунд (1 час). -- После истечения времени выполняется повторная генерация ключей. -### Префиксы локальной сети заказчика - -Этот параметр определяет, какие сети на стороне заказчика будут маршрутизироваться через IPsec-туннель. Префиксы задаются в формате `192.168.1.0/24`, который позволяет указать диапазон IP-адресов. \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/Техническое описание PostgreSQL.md b/src/PaaS/PostgreSQL/Техническое описание PostgreSQL.md deleted file mode 100644 index 2e8cf67..0000000 --- a/src/PaaS/PostgreSQL/Техническое описание PostgreSQL.md +++ /dev/null @@ -1,68 +0,0 @@ -## Cloud PostgreSQL - -## О сервисе - -Cloud PostgreSQL - это управляемый облачный сервис реляционной базы данных PostgreSQL. Он позволяет развернуть и использовать отказоустойчивый кластер базы данных без необходимости самостоятельно настраивать серверы, репликацию и механизмы отказоустойчивости. - -PostgreSQL - это современная система управления базами данных, которая поддерживает стандарт SQL и используется для хранения и обработки данных приложений. - -В Cloud PostgreSQL все основные операции по управлению кластером выполняются автоматически. -Сервис самостоятельно: -- управляет ролями серверов базы данных (основной сервер и реплики) -- отслеживает состояние узлов -- автоматически переключает основной сервер при сбоях - -Для обеспечения стабильной работы сервиса используется несколько инфраструктурных компонентов: -- **Patroni** - управляет кластером PostgreSQL и автоматическим переключением при отказах -- **etcd** - хранит состояние кластера и обеспечивает согласованность работы узлов -- **HAProxy** - обеспечивает единую точку подключения и распределяет клиентские подключения между узлами - -Подключение к базе данных выполняется через прокси-узлы сервиса. Пользователю не требуется подключаться к отдельным серверам кластера. -Для управления базами данных и пользователями в сервисе доступен web-интерфейс **pgAdmin**, который позволяет выполнять администрирование через браузер. - ---- -## Конфигурации кластера - -Сервис Cloud PostgreSQL поддерживает версии PostgreSQL с 13 по 17. - -Сервис предоставляется в виде кластера базы данных в конфигурации Primary–Standby, которая обеспечивает репликацию данных и повышенную отказоустойчивость. -В рамках данной конфигурации создаётся кластер из виртуальных серверов, включающий: -- Primary (основной сервер) - обязательный узел, на котором выполняются операции записи данных -- Replica (реплики) - дополнительные узлы, которые создаются по желанию пользователя - -Количество реплик может составлять от 0 до 4. Реплики являются частью кластера PostgreSQL и могут использоваться для выполнения запросов, не изменяющих данные (например, SELECT). В многонодовой конфигурации серверы кластера размещаются на разных хостах гипервизора, что повышает устойчивость сервиса к отказам. - -По умолчанию фиксация изменений выполняется в синхронном режиме репликации. Это означает, что операция записи считается завершённой только после того, как данные будут зафиксированы как на основном сервере, так и на реплике. -При наличии нескольких реплик синхронный режим применяется только к одной из них, для остальных используется асинхронный режим. - -При необходимости режим репликации может быть изменён на асинхронный. В этом случае изменения сначала фиксируются на основном сервере, а затем передаются на реплики с задержкой, без ожидания подтверждения от них. - -Прямой доступ к серверам кластера (например, по протоколу SSH) не предоставляется. Пользователь взаимодействует с базой данных исключительно через предоставленные сервисом точки подключения. - -На каждом узле кластера установлен пулер соединений PgBouncer, который может использоваться для ускорения работы приложений за счёт оптимизации подключений к базе данных. Использование PgBouncer не является обязательным - подключение возможно как напрямую к PostgreSQL, так и через пулер, а также одновременно обоими способами. - ---- -## Возможности сервиса - -Cloud PostgreSQL предоставляет набор возможностей, позволяющих использовать PostgreSQL в облаке без необходимости самостоятельного администрирования инфраструктуры. - -Сервис обеспечивает: -- автоматическое управление кластером PostgreSQL -- высокую доступность за счёт репликации и автоматического переключения primary-узла -- единую точку подключения к базе данных через прокси -- автоматическое переключение при отказе узлов кластера без вмешательства пользователя -- web-доступ к управлению базами данных и пользователями через pgAdmin -- совместимость со стандартными клиентскими инструментами PostgreSQL -- возможность установки расширений PostgreSQL в базу данных - ---- -## Сценарии использования сервиса - -Cloud PostgreSQL подходит для использования в системах, где требуется надёжное хранение данных и упрощённое управление инфраструктурой базы данных. - -Сервис может применяться в следующих сценариях: -- размещение production-баз данных с высокими требованиями к доступности -- использование PostgreSQL в микросервисной архитектуре с единой точкой подключения к базе данных -- хранение критичных данных с минимальным временем простоя при отказах инфраструктуры -- быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover -- администрирование баз данных через web-интерфейс без прямого доступа к серверам кластера \ No newline at end of file