diff --git a/src/.vitepress/config.mts b/src/.vitepress/config.mts index 3535242..8d10e25 100644 --- a/src/.vitepress/config.mts +++ b/src/.vitepress/config.mts @@ -168,9 +168,9 @@ export default defineConfig({ collapsed: true, items: [ {text: 'Обзор сервиса', link: '/PaaS/PostgreSQL/about.md'}, - {text: 'Описание раздела', link: '/PaaS/PostgreSQL/cluster_parameter.md'}, + {text: 'Описание раздела', link: '/PaaS/PostgreSQL/cluster-parameter.md'}, {text: 'Общая схема подключения', link: '/PaaS/PostgreSQL/connection.md'}, - {text: 'Создание сервиса', link: '/PaaS/postgPostgreSQLresql/user_capabilities.md'}, + {text: 'Возможности пользователя', link: '/PaaS/PostgreSQL/user-capabilities.md'}, {text: 'Веб-интерфейс pgAdmin', link: '/PaaS/PostgreSQL/pgadmin.md'}, {text: 'Веб-интерфейс Grafana', link: '/PaaS/PostgreSQL/grafana.md'}, ], diff --git a/src/PaaS/IPSEC.md b/src/PaaS/IPSEC.md index 9fd1646..cfa441c 100644 --- a/src/PaaS/IPSEC.md +++ b/src/PaaS/IPSEC.md @@ -1,49 +1,58 @@ -## О разделе +# Параметры конфигурации IPsec-соединения -В данном разделе приведены параметры конфигурации IPsec-соединения, используемого для организации защищенного канала связи между инфраструктурой заказчика и кластерами. Материал описывает настройки этапов установки соединения и передачи данных, включая методы аутентификации, алгоритмы шифрования и хэширования, группы Диффи-Хеллмана, а также параметры времени жизни ключей. Часть параметров определяется клиентом при заказе услуги, часть является фиксированной и не подлежит изменению. - -## Параметры конфигурации IPSEC +В данном разделе приведены параметры конфигурации IPsec-соединения, используемого для организации защищенного канала связи между инфраструктурой заказчика и кластерами. Материал описывает настройки этапов установки соединения и передачи данных, включая методы аутентификации, алгоритмы шифрования и хэширования, группы Диффи-Хеллмана, а также параметры времени жизни ключей. Ниже приведены основные параметры, задаваемые при развертывании кластера Kafka. Часть параметров определяется клиентом на этапе заказа услуги, часть - фиксирована и не подлежит изменению. -### Данные о конфигурации IPSEC +## Данные о конфигурации IPSEC Параметры подключения (имя туннеля, устройство, публичный IP-адрес) заполняются вручную на основании информации, предоставленной заказчиком. -### Версия IKE (Internet Key Exchange) +#### Версия IKE (Internet Key Exchange) -Версия IKE выбирается из выпадающего списка, который содержит в себе два параметра - **v1** и **v2**. Разница заключается в том, что **IKE v1** - более ранняя версия протокола. -**IKE v2** - более современная версия, обеспечивающая лучшую устойчивость соединения и более гибкую обработку ошибок. Рекомендуется использовать IKE v2, если оборудование заказчика это поддерживает. +Версия IKE выбирается из выпадающего списка, который содержит в себе два параметра - **v1** и **v2**. -### Метод аутентификации +- **IKE v1** - более ранняя версия протокола; +- **IKE v2** - более современная версия (обеспечивает более устойчивое соединение и гибкую обработку ошибок). -Метод аутентификации выбирается вручную из выпадающего списка, который содержит два варианта: _PSK_ (Pre-Shared Key) и _Certificate_ (Сертификат). -- **PSK (Pre-Shared Key)** - метод аутентификации, при котором используется заранее согласованный общий ключ; -- **Certificate** - аутентификация с использованием цифровых сертификатов. +Рекомендуется использовать **IKE v2**, если оборудование заказчика это поддерживает. + +## Метод аутентификации + +Метод аутентификации выбирается вручную из выпадающего списка, который содержит два варианта: + +- **PSK (Pre-Shared Key)** - метод аутентификации, при котором используется заранее согласованный общий ключ; +- **Certificate** - аутентификация с использованием цифровых сертификатов. ## Этап 1 - установка защищенного соединения -### Hash +#### 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 12** / **AES GCM 192** / **AES GCM 256** - данные алгоритмы совмещают шифрование и контроль целостности, обладают более современным режимом работы, считаются более эффективными по производительности, а также рекомендуются в современных конфигурациях. Разница между этими тремя алгоритмами лишь в длине ключа. -### DH Group - группа Деффи Хеллмана +#### DH Group - группа Деффи Хеллмана -Механизм Diffie-Hellman используется для безопасной генерации общего секретного ключа между сторонами туннеля без передачи этого ключа по сети. +Механизм Diffie-Hellman используется **для безопасной генерации общего секретного ключа** между сторонами туннеля без передачи этого ключа по сети. Чем выше номер группы и длина ключа - тем выше криптографическая стойкость соединения. -Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: +Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: - **group 2**; - **group 5**; - **group 14**; @@ -53,54 +62,65 @@ - **group 20**; - **group 21**. -### IKE Mode (только для IKEv1) +#### IKE Mode (только для IKEv1) -Параметр IKE Mode определяет способ установления соединения на этапе 1 при использовании протокола IKEv1. +Параметр IKE Mode **определяет способ установления соединения** на этапе 1 при использовании протокола IKEv1. Доступны два режима: **Main** и **Aggressive**. Они отличаются количеством сообщений при установке соединения и уровнем защиты идентификационных данных. - Main Mode - является стандартным и более безопасным режимом работы IKEv1. - Aggressive Mode - упрощённый и ускоренный режим установления соединения. (более низкий уровень защиты данных) -### Время жизни +#### Время жизни + +Определяет, как долго действуют согласованные ключи в рамках первой фазы. -Определяет, как долго действуют согласованные ключи в рамках первой фазы. - Рекомендуемое значение: 86400 секунд (24 часа); -- После истечения времени выполняется повторная генерация ключей. +- После истечения времени выполняется повторная генерация ключей. + ## Этап 2 - передача данных Этап 2 IPsec-соединения отвечает за шифрование и защиту пользовательского трафика после того, как защищённый канал был установлен на этапе 1. Этот этап регулирует передачу данных между сторонами через безопасный туннель, который обеспечивает конфиденциальность и целостность данных. -## Hash +#### Hash + +Аналогично этапу 1, параметр Hash используется **для защиты целостности передаваемых данных**. Он обеспечивает проверку, что данные не были изменены при передаче. + +Содержит элементы для выбора: -Аналогично этапу 1, параметр Hash используется для защиты целостности передаваемых данных. Он обеспечивает проверку, что данные не были изменены при передаче. Содержит такой же перечень элементов для выбора: - **SHA 1**; - **SHA 2 - 256**; - **SHA 2 - 384**; - **SHA 2 - 512**. -## Шифрование +#### Шифрование + +Этап 2 отвечает за **шифрование пользовательского трафика**. Это важнейший параметр, который защищает данные при их передаче по сети. + +Доступны следующие алгоритмы: -Этап 2 отвечает за шифрование пользовательского трафика. Это важнейший параметр, который защищает данные при их передаче по сети. Доступны следующие алгоритмы: - **AES 128**; - **AES 256**; - **AES GCM 128**; - **AES GCM 192**; - **AES GCM 256**. -### PFS +#### PFS + +**Enable perfect forward secrecy (PFS)** - параметр, активирующий генерацию нового ключа на этапе 2. При включенном PFS группа DH будет такая же как и на 1-й фазе. Данный параметр представлен в виде чекбокса. + +При его включении: -**Enable perfect forward secrecy (PFS)** - параметр, активирующий генерацию нового ключа на этапе 2. При включенном PFS группа DH будет такая же как и на 1-й фазе. -Данный параметр представлен в виде чекбокса. При его включении: - На этапе 2 выполняется дополнительный обмен ключами Diffie-Hellman; - Для каждой новой IPsec-сессии формируется новый независимый криптографический секрет; - Ключи шифрования пользовательского трафика не зависят от ключей этапа 1. -### DH Group - группа Деффи Хеллмана +#### DH Group - группа Деффи Хеллмана -Группа DH определяет параметры обмена ключами между сторонами. Чем выше номер группы, тем выше криптографическая стойкость и безопасность обмена. +Группа DH **определяет параметры обмена ключами** между сторонами. Чем выше номер группы, тем выше криптографическая стойкость и безопасность обмена. + +Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: -Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: - **group 2**; - **group 5**; - **group 14**; @@ -110,12 +130,15 @@ - **group 20**; - **group 21**. -### Время жизни (в секундах) +#### Время жизни (в секундах) + +Определяет, как долго действуют согласованные ключи в рамках второй фазы. -Определяет, как долго действуют согласованные ключи в рамках второй фазы. - Рекомендуемое значение: 3600 секунд (1 час). - После истечения времени выполняется повторная генерация ключей. -### Префиксы локальной сети заказчика +#### Префиксы локальной сети заказчика -Этот параметр определяет, какие сети на стороне заказчика будут маршрутизироваться через IPsec-туннель. Префиксы задаются в формате `192.168.1.0/24`, который позволяет указать диапазон IP-адресов. +Этот параметр определяет, какие сети на стороне заказчика будут маршрутизироваться через IPsec-туннель. + +Префиксы задаются в формате `192.168.1.0/24`, который позволяет указать диапазон IP-адресов. diff --git a/src/PaaS/PostgreSQL/PostgreSQL-index.md b/src/PaaS/PostgreSQL/PostgreSQL-index.md index 5587c8c..69a738f 100644 --- a/src/PaaS/PostgreSQL/PostgreSQL-index.md +++ b/src/PaaS/PostgreSQL/PostgreSQL-index.md @@ -4,14 +4,14 @@ section_links: link: /PaaS/PostgreSQL/about.md description: Конфигурации и возможности сервиса - title: Параметры кластера PostgreSQL - link: /PaaS/PostgreSQL/cluster_parameter.md + link: /PaaS/PostgreSQL/cluster-parameter.md description: Технические параметры кластера PostgreSQL - title: Схема подключения link: /PaaS/PostgreSQL/connection.md description: Общая схема подключения к Cloud PostgreSQL - title: Создание сервиса - link: /PaaS/PostgreSQL/user_capabilities.md - description: Создание сервиса Cloud PostgreSQL + link: /PaaS/PostgreSQL/user-capabilities.md + description: Возможности пользователя - title: Веб-интерфейс Grafana link: /PaaS/PostgreSQL/grafana.md description: Инструкция по работе с Grafana diff --git a/src/PaaS/PostgreSQL/cluster_parameter.md b/src/PaaS/PostgreSQL/cluster-parameter.md similarity index 93% rename from src/PaaS/PostgreSQL/cluster_parameter.md rename to src/PaaS/PostgreSQL/cluster-parameter.md index caa3e40..8786d0a 100644 --- a/src/PaaS/PostgreSQL/cluster_parameter.md +++ b/src/PaaS/PostgreSQL/cluster-parameter.md @@ -1,6 +1,6 @@ -# О разделе +# Описание раздела -Данный раздел содержит описание технических параметров кластера PostgreSQL и порядок их первичной конфигурации. +Данный раздел содержит технические параметры кластера PostgreSQL и порядок их первичной конфигурации. Настройка указанных параметров выполняется администратором облачного провайдера на этапе развёртывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке. @@ -31,13 +31,13 @@ В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер PostgreSQL. -### Количество нод в кластере +#### Количество нод в кластере Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надёжность и производительность операций чтения. Количество нод выбирается в диапазоне **от 1 до 5**. -### Процессор (CPU) +#### Процессор (CPU) Процессор — это вычислительная мощность, выделяемая каждой ноде кластера. Количество vCPU определяет, насколько быстро база данных сможет: @@ -47,13 +47,13 @@ Доступный диапазон: **от 2 до 24 vCPU** на ноду. -### Оперативная память (RAM) +#### Оперативная память (RAM) Оперативная память — один из ключевых ресурсов для производительности базы данных. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. Доступный диапазон: **от 4 до 768 ГБ RAM** на ноду. -### Доступ в интернет +#### Доступ в интернет При заказе сервиса можно выбрать пропускную способность канала связи, через который будет осуществляться доступ к кластеру PostgreSQL из сети интернет. diff --git a/src/PaaS/PostgreSQL/connection.md b/src/PaaS/PostgreSQL/connection.md index d561775..862ca9a 100644 --- a/src/PaaS/PostgreSQL/connection.md +++ b/src/PaaS/PostgreSQL/connection.md @@ -1,14 +1,16 @@ # Общая схема подключения -Доступ к кластеру PostgreSQL осуществляется через прокси. Клиентские подключения принимаются прокси, который маршрутизирует трафик к соответствующим узлам кластера (master или replica) в зависимости от выбранного порта. Прямое подключение к узлам базы данных не используется. +Подключение к кластеру **Cloud PostgreSQL** осуществляется через прокси-сервер. Клиентские подключения принимаются прокси, который маршрутизирует трафик к соответствующим узлам кластера (master или replica) в зависимости от выбранного порта. -Подключение к кластеру **Cloud PostgreSQL** осуществляется через прокси-сервер. Прокси является единой точкой входа для всех клиентских подключений и принимает входящие соединения от приложений, административных инструментов и пользователей. +Прокси является единой точкой входа для всех клиентских подключений и принимает входящие соединения от приложений, административных инструментов и пользователей. В зависимости от выбранного порта прокси автоматически направляет трафик: -- на активный primary-узел - для операций чтения и записи -- на реплики - для операций только чтения +- **на активный primary-узел** - для операций чтения и записи +- **на реплики** - для операций только чтения -Прямое подключение к отдельным узлам базы данных не используется и не предоставляется. Взаимодействие с кластером всегда выполняется через прокси-сервер. +::: warning Примечание +Прямое подключение к отдельным узлам базы данных **не используется и не предоставляется**. Взаимодействие с кластером всегда выполняется **через прокси-сервер**. +::: ## Подключение к базе данных @@ -29,13 +31,13 @@ |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)**; @@ -43,7 +45,7 @@ ## Доступ к pgAdmin -Для администрирования базы данных используется web-интерфейс pgAdmin. +Для администрирования базы данных используется [web-интерфейс pgAdmin](./pgadmin.md). Доступ осуществляется по DNS-имени, которое нужно прописать локально в инфраструктуре откуда будет происходить доступ к web-интерфейсу сервиса: `10.X.X.4 .cloud-pg.dfcloud.ru` @@ -52,7 +54,7 @@ Авторизация выполняется с использованием учётных данных, предоставленных вместе с доступом к сервису. -::: warning Важно +::: warning Примечание - подключение к базе данных возможно только через указанный прокси-IP; - в интерфейсе pgAdmin уже добавлен сервер базы данных, созданный для данной инсталляции. Для подключения требуется ввести пароль от учётной записи базы данных; @@ -68,7 +70,7 @@ Подключение через PgBouncer: `psql -h 10.X.X.4 -p 6432 -U -d ` -### Подключение через DBeaver / DataGrip +#### Подключение через DBeaver / DataGrip При создании подключения укажите: - Host: 10.X.X.4; @@ -77,7 +79,7 @@ - User / Password: согласно выданным доступам; - Тип подключения: PostgreSQL. -### Пример строки подключения +#### Пример строки подключения Primary: `postgresql://:@10.X.X.4:5432/` diff --git a/src/PaaS/PostgreSQL/grafana.md b/src/PaaS/PostgreSQL/grafana.md index d265790..83a769a 100644 --- a/src/PaaS/PostgreSQL/grafana.md +++ b/src/PaaS/PostgreSQL/grafana.md @@ -2,11 +2,9 @@ ## Инструкция по работе с метриками -Доступ к метрикам кластера предоставляется после запроса соответствующих прав. После получения доступа можно перейти в систему мониторинга по ссылке: +Доступ к метрикам кластера предоставляется после запроса соответствующих прав. После получения доступа можно перейти в систему мониторинга по ссылке: https://metrics.dfcloud.ru. После перехода по ссылке будет представлена главная страница Grafana. -https://metrics.dfcloud.ru. - -Открывается главная страница Grafana. Для просмотра метрик кластера PostgreSQL выполните следующие шаги: +Для просмотра метрик кластера PostgreSQL выполните следующие шаги: 1. В левом боковом меню нажмите **Dashboard**; 2. В списке доступных дашбордов выберите **папку Cloud PostgreSQL**; diff --git a/src/PaaS/PostgreSQL/pgadmin.md b/src/PaaS/PostgreSQL/pgadmin.md index 4705c3c..b4cdeba 100644 --- a/src/PaaS/PostgreSQL/pgadmin.md +++ b/src/PaaS/PostgreSQL/pgadmin.md @@ -17,12 +17,8 @@ ## Реплики и параметры конфигураций -pgAdmin позволяет осуществлять мониторинг реплик, входящих в состав кластера. +pgAdmin позволяет осуществлять мониторинг реплик, входящих в состав кластера. Чтобы просмотреть список реплик необходимо открыть раздел **Replica nodes** в панели навигации. -### Просмотр списка реплик - -Чтобы просмотреть список реплик: -- Откройте раздел **Replica nodes** в панели навигации. ### Просмотр состояния репликаций diff --git a/src/PaaS/PostgreSQL/user-capabilities.md b/src/PaaS/PostgreSQL/user-capabilities.md new file mode 100644 index 0000000..5445233 --- /dev/null +++ b/src/PaaS/PostgreSQL/user-capabilities.md @@ -0,0 +1,119 @@ +# Возможности пользователя + +Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса **Cloud PostgreSQL**, а также перечень административных операций, доступных ему для самостоятельного выполнения. + +При развертывании сервиса автоматически создаётся пользователь базы данных с преднастроенными атрибутами и привилегиями. Эти права позволяют заказчику самостоятельно управлять своими базами данных, ролями и пользователями в рамках созданного экземпляра PostgreSQL. + + +## Общая информация о пользователе + +При инициализации сервиса автоматически создаётся пользователь: + +```nginx +client +``` + +Данный пользователь является основной учётной записью для административной работы в рамках предоставленного экземпляра PostgreSQL. + +Он предназначен для самостоятельного управления в пределах выданных привилегий: +- базами данных; +- ролями; +- правами доступа. + + +## Выданные права и ограничения + +Пользователю `client` назначается набор атрибутов и привилегий, позволяющих выполнять административные операции в рамках своего экземпляра базы данных. + +#### Атрибуты роли + +Пользователь создаётся со следующими атрибутами: +- `CREATEDB` — разрешено создание и удаление баз данных; +- `CREATEROLE` — разрешено создание ролей и пользователей, а также управление их. + +Атрибут `SUPERUSER` пользователю не предоставляется. Соответственно, доступ к системным операциям уровня кластера и настройкам сервера отсутствует. + +#### Права на системную базу postgres: + +К стандартной базе данных `postgres` пользователю предоставлено только право подключения — `CONNECT` + +**Иные привилегии (создание объектов, изменение схем и т.д.) на данную базу не выдаются.** + + +## Мониторинг и системные представления + +Для выполнения базовых задач мониторинга пользователю дополнительно предоставлены: +- членство в роли `pg_monitor`; +- право `SELECT` на системное представление: +```sql +pg_catalog.pg_stat_replication +``` + +Доступ к системной информации предоставляется исключительно **в режиме чтения**. Изменение системных представлений и параметров сервера недоступно. + + +## Изменение пароля + +После первого подключения к базе данных пользователь `client` обязан выполнить изменения пароля. + +Изменить пароля можно: +- в открытом виде (с передачей нового значения пароля); +- с указанием заранее сгенерированного хэша. + +На сервере используется алгоритм шифрования паролей: + +``` +scram-sha-256 +``` + +При использовании **SCRAM** применяется следующий формат хэша: + +``` +$:$: +``` + +| Операция | Описание | Команда SQL | +|----------|----------|-------------| +|Смена пароля в открытом виде | Для смены пароля в открытом виде | ```ALTER USER client WITH PASSWORD 'new_strong_password';``` | +|Смена пароля с указанием хэша | Рекомендуется использовать сложный уникальный пароль, соответствующий требованиям информационной безопасности, и хранить его в защищённом хранилище | ```ALTER USER client WITH ENCRYPTED PASSWORD '$4096:...';``` | +|Создание новой баззы данных | Для создания базы данных | ```CREATE DATABASE app_db;``` | +|Создание базы данных с указанием владельца | Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает | ```CREATE DATABASE app_db OWNER client;``` | + + +## Создание пользователей и ролей + +Пользователь `client` имеет право создавать новые роли и пользователей для приложений, а также управлять их правами доступа. + +| Операция | Описание | Команда SQL | +|----------|----------|-------------| +|Создание роли без логина | Для входа в базу данных (например, для организации прав доступа) | ```CREATE ROLE app_role; ```| +|Создание пользователя с паролем | Для создания пользователя с паролем. После выполнения этой команды новый пользователь `app_user` будет иметь возможность входа в базу данных, используя указанный пароль. | ```CREATE USER app_user WITH PASSWORD 'app_password';``` | +|Назначение роли пользователю | Для назначения роли пользователю. Данная команда позволяет управлять правами пользователя в рамках определённой роли. После выполнения этой команды пользователь `app_user` станет членом роли `app_role`, и будет наследовать все права, связанные с этой ролью. | ```GRANT app_role TO app_user; ``` | + + +## Управление правами доступа + +После создания пользователей и ролей необходимо назначить им соответствующие права доступа. + +| Операция | Описание | Команда SQL | +|----------|----------|-------------| +|Передача владельца базы данных | Для передачи прав владения базой данных другому пользователю. После выполнения этой команды база данных `app_db` будет принадлежать пользователю `app_user`, и он будет иметь полный контроль над ней.| ```ALTER DATABASE app_db OWNER TO app_user;``` | +|Выдача прав на подключение к базе данных | Для предоставления прав к подключению к базе данных. После выполнения этой команды пользователь может `app_user` подключаться к базе данных `app_db`. | ```GRANT CONNECT ON DATABASE app_db TO app_user;```| +|Предоставление прав на схему public | Для предоставления прав на использование схемы `public`. После выполнения этой команды пользователь `app_user` может использовать объекты в схеме `public`, а также создавать новые объекты внутри неё. | ```GRANT USAGE, CREATE ON SCHEMA public TO app_user;```| +|Предоставление прав на существующие таблицы | Для предоставления доступа пользователю к существующим таблицам в схеме `public`. После выполнения этой команды пользователь `app_user` может выполнять операции чтения, вставки, обновления и удаления данных в существующих таблицах схемы `public`.| ```GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;``` | +|Предоставление прав на будущие таблицы | Если необходимо автоматически предоставить пользователю права на новые таблицы, создаваемые в схеме `public`. После выполнения этой команды все будущие таблицы, создаваемые в схеме `public`, будут автоматически иметь права для пользователя `app_user` на чтение, вставку, обновление и удаление данных. | ```ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;```| + + +## Мониторинг репликации + +Пользователь `client` имеет доступ к системным представлениям для мониторинга состояния репликации в кластере PostgreSQL. + +| Операция | Описание | Команда SQL | +|----------|----------|-------------| +|Просмотр состояния репликации | Для просмотра текущего статуса репликации. Этот запрос возвращает информацию о всех репликах, подключённых к основному (primary) серверу. |```SELECT * FROM pg_stat_replication;```| + +::: warning Ограничения доступа реплкации + +Пользователь `client` имеет доступ к данным в представлении `pg_stat_replication` только в режиме **read-only**. Это означает, что он может просматривать состояние репликации, но не может изменять или вмешиваться в процесс репликации. + +::: \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/user_capabilities.md b/src/PaaS/PostgreSQL/user_capabilities.md deleted file mode 100644 index dbe1ea2..0000000 --- a/src/PaaS/PostgreSQL/user_capabilities.md +++ /dev/null @@ -1,203 +0,0 @@ -# Создание сервиса Cloud PostgreSQL - -Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса **Cloud PostgreSQ**L**, а также перечень административных операций, доступных ему для самостоятельного выполнения. - -При развертывании сервиса автоматически создаётся пользователь базы данных с преднастроенными атрибутами и привилегиями. Эти права позволяют заказчику самостоятельно управлять своими базами данных, ролями и пользователями в рамках созданного экземпляра PostgreSQL. - -## Общая информация о пользователе - -При инициализации сервиса автоматически создаётся пользователь: - -```nginx -client -``` - -Данный пользователь является основной учётной записью для административной работы в рамках предоставленного экземпляра PostgreSQL. Он предназначен для самостоятельного управления базами данных, ролями и правами доступа в пределах выданных привилегий. - -## Выданные права и ограничения - -Пользователю `client` назначается набор атрибутов и привилегий, позволяющих выполнять административные операции в рамках своего экземпляра базы данных. - -### Атрибуты роли - -Пользователь создаётся со следующими атрибутами: -- `CREATEDB` — разрешено создание и удаление баз данных; -- `CREATEROLE` — разрешено создание ролей и пользователей, а также управление их. - -Атрибут `SUPERUSER` пользователю не предоставляется. Соответственно, доступ к системным операциям уровня кластера и настройкам сервера отсутствует. - -### Права на системную базу postgres: - -К стандартной базе данных `postgres` пользователю предоставлено только право подключения: -- `CONNECT` -Иные привилегии (создание объектов, изменение схем и т.д.) на данную базу не выдаются. - -### Мониторинг и системные представления: - -Для выполнения базовых задач мониторинга пользователю дополнительно предоставлены: -- членство в роли `pg_monitor`; -- право `SELECT` на системное представление: -```sql -pg_catalog.pg_stat_replication -``` - -Доступ к системной информации предоставляется исключительно в режиме чтения. Изменение системных представлений и параметров сервера недоступно. - -## Обязательная смена пароля - -После первого подключения к базе данных пользователь `client` обязан выполнить смену пароля. -Смена пароля может быть выполнена: -- в открытом виде (с передачей нового значения пароля); -- с указанием заранее сгенерированного хэша. - -На сервере используется алгоритм шифрования паролей: - -``` -scram-sha-256 -``` - -При использовании SCRAM применяется следующий формат хэша: - -``` -$:$: -``` - -### Пример смены пароля в открытом виде - -```sql -ALTER USER client WITH PASSWORD 'new_strong_password'; -``` - -### Пример смены пароля с указанием хэша - -```sql -ALTER USER client WITH ENCRYPTED PASSWORD '$4096:...'; -``` - -Рекомендуется использовать сложный уникальный пароль, соответствующий требованиям информационной безопасности, и хранить его в защищённом хранилище. - -## Создание новой базы данных - -Пользователь `client` имеет право создавать новые базы данных в рамках своего экземпляра PostgreSQL. - -### Пример создания базы данных - -Для создания базы данных используется стандартная команда: - -```sql -CREATE DATABASE app_db; -``` - -Если необходимо назначить владельца базы данных, можно указать соответствующего пользователя. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает. - -### Пример создания базы данных с указанием владельца - -```sql -CREATE DATABASE app_db OWNER client; -``` - -В этом примере база данных `app_db` будет принадлежать пользователю `client`. Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. - -## Создание пользователей и ролей - -Пользователь `client` имеет право создавать новые роли и пользователей для приложений, а также управлять их правами доступа. - -### Создание роли без логина - -Если требуется создать роль, которая не будет иметь возможности входа в базу данных (например, для организации прав доступа), можно использовать команду: - -```sql -CREATE ROLE app_role; -``` - -### Создание пользователя с паролем - -Для создания пользователя с паролем используется команда: - -```sql -CREATE USER app_user WITH PASSWORD 'app_password'; -``` - -После этого новый пользователь `app_user` будет иметь возможность входа в базу данных, используя указанный пароль. - -### Назначение роли пользователю - -Для назначения роли пользователю используется команда `GRANT`. Это позволяет управлять правами пользователя в рамках определённой роли: - -```sql -GRANT app_role TO app_user; -``` - -После выполнения этой команды пользователь `app_user` станет членом роли `app_role`, и будет наследовать все права, связанные с этой ролью. - -### Передача владельца базы данных - -Если необходимо передать право владения базой данных другому пользователю, это можно сделать с помощью следующей команды: - -```sql -ALTER DATABASE app_db OWNER TO app_user; -``` - -Теперь база данных `app_db` будет принадлежать пользователю `app_user`, и он будет иметь полный контроль над ней. - -### Управление правами доступа - -После создания пользователей и ролей необходимо назначить им соответствующие права доступа. - -### Выдача прав на подключение к базе данных - -Для того чтобы пользователь мог подключаться к базе данных, нужно предоставить ему соответствующие права: - -```sql -GRANT CONNECT ON DATABASE app_db TO app_user; -``` - -Эта команда разрешает пользователю `app_user` подключаться к базе данных `app_db`. - -### Права на схему public - -Для предоставления пользователю прав на использование схемы `public` можно выполнить следующую команду: - -```sql -GRANT USAGE, CREATE ON SCHEMA public TO app_user; -``` - -Эти права позволяют пользователю `app_user` использовать объекты в схеме `public`, а также создавать новые объекты внутри неё. - -### Права на существующие таблицы - -Чтобы предоставить пользователю доступ к существующим таблицам в схеме `public`, можно использовать команду: - -```sql -GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user; -``` - -Эта команда позволяет пользователю `app_user` выполнять операции чтения, вставки, обновления и удаления данных в существующих таблицах схемы `public`. - -### Права на будущие таблицы - -Если необходимо автоматически предоставить пользователю права на новые таблицы, создаваемые в схеме `public`, используйте команду: - -```sql -ALTER DEFAULT PRIVILEGES IN SCHEMA public -GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user; -``` - -Эта команда обеспечит, что все будущие таблицы, создаваемые в схеме `public`, будут автоматически иметь права для пользователя `app_user` на чтение, вставку, обновление и удаление данных. - -## Мониторинг репликации - -Пользователь `client` имеет доступ к системным представлениям для мониторинга состояния репликации в кластере PostgreSQL. - -### Просмотр состояния репликации - -Для того чтобы просмотреть текущий статус репликации, пользователь может выполнить запрос к системному представлению: - -``` SQL -SELECT * FROM pg_stat_replication; -``` -Этот запрос возвращает информацию о всех репликах, подключённых к основному (primary) серверу. - -### Ограничения доступа - -Пользователь `client` имеет доступ к данным в представлении `pg_stat_replication` только в режиме **read-only**. Это означает, что он может просматривать состояние репликации, но не может изменять или вмешиваться в процесс репликации. \ No newline at end of file