# Занятие 00: PostgreSQL 16 / Основы безопасности

> Исходная страница в нативном Markdown: PostgreSQL 16 / Основы безопасности

---

Индекс LLMS: [llms.txt](/ru/llms.txt)

---

<!-- Generated by scripts/generate_skeleton.py. -->

> [!NOTE]
> Эта страница извлечена из официального PDF в нативный Markdown. Текст слайдов, код и комментарии сохранены в порядке чтения; исходные PDF и HTML остаются эталоном макета.
> **HTML source:** [dbs_00_introduction.html](https://edu.postgrespro.ru/16/dbs-16/dbs_00_introduction.html)
> **Archive:** [DBS-handouts-16.zip](https://edu.postgrespro.ru/16/DBS-handouts-16.zip)
> **Страниц PDF:** 9

## Page 1: PostgreSQL 16 / Основы безопасности {#source-page-001}

### Авторские права

© Postgres Professional, 2017–2026 Авторы: Егор Рогов, Павел Лузанов, Илья Баштанов, Алексей Береснев Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)
### Использование материалов курса

Некоммерческое использование материалов курса (презентации, демонстрации) разрешается без ограничений. Коммерческое использование возможно только с письменного разрешения компании Postgres Professional. Запрещается внесение изменений в материалы курса.
### Обратная связь

Отзывы, замечания и предложения направляйте по адресу: edu@postgrespro.ru
### Отказ от ответственности

Компания Postgres Professional не несет никакой ответственности за любые повреждения и убытки, включая потерю дохода, нанесенные прямым или непрямым, специальным или случайным использованием материалов курса. Компания Postgres Professional не предоставляет каких-либо гарантий на материалы курса. Материалы курса предоставляются на основе принципа «как есть» и компания Postgres Professional не обязана предоставлять сопровождение, поддержку, обновления, расширения и изменения.

## Page 2: Администраторам {#source-page-002}

![Source slide page 2: Администраторам](images/page-002.png){#source-figure-002 caption="Source slide page 2: Администраторам"}

  - DBA2, 4 дня

### Комментарии преподавателя

Для прохождения всех курсов необходимы предварительные знания основ языка SQL. Специального курса по языку SQL в нашей линейке курсов нет, но существует множество книг и других образовательных ресурсов, с помощью которых можно освоить SQL. Мы рекомендуем книгу Евгения Моргунова «PostgreSQL. Основы языка SQL»:

<https://postgrespro.ru/education/books/sqlprimer>

Для администраторов мы предлагаем следующие курсы.

Курс DBA1 является базовым, он содержит сведения об архитектуре PostgreSQL, процессе установки, настройке и управлению сервером. Рассматриваются основные задачи администрирования, приводится обзор разграничения доступа, резервного копирования и репликации.

В курсе DBA2 обсуждается настройка конфигурационных параметров исходя из понимания внутренней организации сервера; говорится о мониторинге сервера с использованием обратной связи для итеративной настройки параметров.

Курс DBA3 посвящен рассмотрению резервного копирования, а также настройкам физической и логической репликации и сценариям ее использования. Также дается общее представление о способах и сложностях построения высокодоступных, масштабируемых кластеров.

В курсе QPT детально разбираются механизмы планирования и выполнения запросов, рассматривается настройка параметров экземпляра, связанных с производительностью, и изучаются возможности для поиска проблемных запросов и их оптимизации.

В курсе PGPRO рассматриваются дополнительные возможности, которые предоставляет СУБД Postgres Pro Enterprise.

## Page 3: Разработчикам {#source-page-003}

![Source slide page 3: Разработчикам](images/page-003.png){#source-figure-003 caption="Source slide page 3: Разработчикам"}

  - DEV2, 4 дня

### Комментарии преподавателя

Для разработчиков серверной части приложений мы предлагаем следующие курсы.

Базовым курсом для разработчиков является курс DEV1, в котором даются общие сведения об архитектуре PostgreSQL и использовании основных объектов базы данных; изучается программирование на стороне сервера на языках SQL и PL/pgSQL с использованием основных типов данных (включая составной тип и массивы), а также рассматривается взаимодействие с клиентской частью.

В курсе DEV2 рассматриваются особенности внутреннего устройства сервера, влияющие на разработку прикладного кода, и всесторонне изучается расширяемость: возможность дополнить серверные механизмы собственным кодом, что позволяет использовать PostgreSQL для решения самых разнообразных задач.

Курсы DBS, QPT и PGPRO являются общими для разработчиков и администраторов.

Разработчикам могут быть интересны и курсы по администрированию, если есть необходимость детальнее изучить внутреннее устройство PostgreSQL, а также в случае, когда на проекте нет выделенной роли администратора.

<https://postgrespro.ru/education/courses>

## Page 4: О курсе DBS {#source-page-004}

**Продолжительность: 2 дня**
- Предварительные знания
  - знание SQL
  - знакомство с Unix
  - PostgreSQL в объеме курса DBA1 или DEV1
- Какие навыки будут получены
  - управление доступом к объектам на основе ролевой модели
  - разграничение доступа на уровне строк
  - настройка подключения и аутентификации

### Комментарии преподавателя

Курс «Основы безопасности PostgreSQL» рассказывает про конфигурирование подключений клиентов к СУБД и про управление доступом внутри самой СУБД. Этот курс предназначен в первую очередь для администраторов, поскольку рассматривает вопросы настройки экземпляра. Но может быть интересен и разработчикам, позволяя взглянуть с другой стороны — в контексте безопасности — на использование ролей и распределение данных по схемам и таблицам.

## Page 5: Используемые материалы {#source-page-005}

**Подготовленная виртуальная машина**
  - ОС Xubuntu 24.04
  - PostgreSQL 16
  - документация на русском языке
- Учебные материалы
  - презентации, демонстрации, практические задания и их решение
  - (в форматах html и pdf)
  - справочный материал — команды создания сертификатов OpenSSL,
  - используемых в курсе

### Комментарии преподавателя

Если вы проходите курс самостоятельно, обязательно начните со знакомства с Руководством слушателя. В числе прочего в нем написано, где скачать и как использовать виртуальную машину курса и прочие материалы. Все материалы курса, включая Руководство слушателя, доступны по адресу: <https://postgrespro.ru/education/courses/DBS>

Выполнение практических заданий очень важно для получения навыков работы с PostgreSQL. Обязательно старайтесь сначала самостоятельно выполнить задания, а затем просмотрите предлагаемые нами решения, даже если задание не вызвало вопросов. В решениях могут содержаться дополнительные сведения, которые не упоминаются в презентациях и демонстрациях.

Учебные материалы (презентации, демонстрации, практические задания и их решения) доступны в двух форматах. Формат html удобен для онлайн-работы, он позволяет копировать фрагменты текста и кода. Формат pdf разбит на страницы и удобен для печати на бумаге.

Справочный материал может быть полезен для самостоятельной настройки дополнительных SSL-соединений.

## Page 6: Виртуальная машина {#source-page-006}

Имя хоста виртуальной машины:
```sh
student$ host $(hostname)
```
```text
course.local has address 127.0.1.1
```
Адрес 127.0.1.1 привязан к доменному имени хоста и используется в демонстрациях и практических заданиях курса. Адреса 127.0.0.1 (localhost) и 127.0.1.1 (course.local) связаны с закольцовывающим интерфейсом, но соответствуют разным именам хостов.
В виртуальной машине курса инициализирован стандартный кластер main:
```sh
student$ pg_lsclusters
```
```text
Ver Cluster Port Status Owner    Data directory              Log file
16  main    5432 online postgres /var/lib/postgresql/16/main
/var/log/postgresql/postgresql-16-main.log
```
В конфигурационные файлы pg\_hba.conf и pg\_ident.conf добавлены директивы include\_dir, чтобы можно было менять настройки, добавляя и удаляя дополнительные конфигурационные файлы в подкаталогах pg\_hba.conf.d и pg\_ident.conf.d соответственно.
```sh
postgres$ grep ^include_dir /etc/postgresql/16/main/pg_hba.conf
```
```text
include_dir /etc/postgresql/16/main/pg_hba.conf.d
```
```sh
postgres$ grep ^include_dir /etc/postgresql/16/main/pg_ident.conf
```
```text
include_dir /etc/postgresql/16/main/pg_ident.conf.d
```
Для темы «Внешняя аутентификация» в виртуальной машине настроены службы OpenLDAP и Kerberos:
```sh
student$ systemctl list-units --no-legend krb* slapd*
```
```text
  krb5-admin-server.service loaded active running Kerberos 5 Admin Server
  krb5-kdc.service          loaded active running Kerberos 5 Key Distribution Center
  slapd.service             loaded active running LSB: OpenLDAP standalone server
(Lightweight Directory Access Protocol)
```

## Page 7: Организационные вопросы {#source-page-007}

**День: ~8 академических часов + обед (1час)**
- Каждая тема, как правило, состоит из
  - презентации и демонстрации: ~40–60 мин
  - практических заданий: ~30 мин, включая перерыв

## Page 8: День 1 {#source-page-008}

**Управление доступом**
  - 01. Роли и привилегии
  - 02. Членство в ролях
  - 03. Доступ на уровне строк
  - 04. Подходы к настройке

## Page 9: День 2 {#source-page-009}

**Методы аутентификации**
  - 05. Подключение и аутентификация
  - 06. Использование SSL
  - 07. Внешняя аутентификация
