Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12


Тестовый пример

При написании статьи использовалась Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) с установленной СУБД PostgreSQL 11. Установка СУБД выполнялась при установке 1С в соответствии с инструкцией Установка и настройка сервера 1С v8.3.17 на ОС Astra Linux. В качестве базы данных (БД) использовалась предоставляемая разработчиками стандартная тестовая БД dvdrental, описанная в статье PostgreSQL Sample Database.

Для создания тестовой БД в PostgreSQL:

  1. Загрузить архив с тестовой БД командой:

    Command
    wget https://www.postgresqltutorial.com/wp-content/uploads/2019/05/dvdrental.zip


  2. Распаковать архив:

    Command

    unzip dvdrental.zip

    В результате распаковки будет создан файл dvdrental.tar;

  3. Опционально, для удобства работы, чтобы не вводить каждый раз пароль, настроить права доступа. Работу с БД без ввода пароля можно обеспечить следующими способами:
    1. Создать файл .pgpass, содержащий сроки, задающие пароли доступа. Каждая стока имеет вид:

      Блок кода
      <имя_или_IP-адрес_хоста>:<IP-порт>:<имя_БД>:<имя_пользователя>:<пароль_пользователя>

      Например:

      Блок кода
      localhost:5432:dvdrental:postgres:пароль

      Файл должен иметь маску прав доступа 600, иначе он будет игнорироваться. Создать файл можно с помощью любого текстового редактора, или, например, командами:

      Command

      touch .pgpass
      chmod 600 ~/.pgpass
      echo "localhost:5432:*:postgres:q2w2e2r2" > .pgpass

      Допускается использование метасимвола "*" для обозначения любого значения;

    2. Использовать команду sudo (sudo -u postgresql) чтобы команды работы с БД выполнялись от имени пользователя postgresqlpostgres. Например:

      Command

      sudo -u postgres psql -c 'CREATE DATABASE dvdrental;'

      При этом для загрузки архива БД в БД PostrgeSQL PostgreSQL пользователю postgres должен быть предоставлен доступ на чтение  информации из архива БД.  Для предоставления такого доступа можно использовать следующие команды (предполагается, что все файлы находятся в домашнем каталоге):

      Command
      setfacl -m u:postgres:rx $HOME
      setfacl -m u:postgres:r dvdrental.tar

      Подробнее про использование команды setfacl см. Списки управления доступом к файловым объектам (ACL) в Astra Linux.

    3. Использовать явное указание имени пользователя и пароля при указании БД (небезопасно), например:

      Command
      pg_dump --dbname=postgresql://postgres<имя_пользователя>:пароль@localhost<пароль>@localhost:5432/dvdrental


  4. Создать пустую БД в PostgreSQL командой:

    Command
    postgres psql -c 'CREATE DATABASE dvdrental;'


  5. Загрузить архив тестовой БД в БД PostgreSQL. Команда:

    Command
    pg_restore -U postgres -d dvdrental dvdrental.tar


    Информация

    Указанная команда фактически является командой восстановления БД из архива.


Создание резервной копии базы данных

Для сохранения резервных копий БД в основном используются две команды:

  • pg_dump - выгрузка указанной БД;
  • pg_dumpall - выгрузка всех БД и метаданных.

Сохранение может выполняться в текстовом формате или в формате архива.

Примеры использования:

  1. Сохранение всех БД в текстовом формате:

    Command

    pg_dumpall -h localhost -U postgres -f postgresql_dump


    Информация

    При работе с защищенной версией СУБД PostgreSQL (используется в Astra Linux Special Edition) при сохранении могут выдаваться сообщения вида:

    Блок кода
    pg_dump: obtained maximum maclabel {0,0} of data in table "actor"

    Эти сообщения не являются сообщениями об ошибках, и являются информацией о найденной максимальной классификационной метке сохраняемых таблиц.


  2. Сохранения тестовой БД dvdrental в формате архива:

    Command
    pg_dump -h localhost -U postgres -f dvdrental_dump.tar -F tar


Загрузка резервной копии базы данных

Перед загрузкой резервной копии содержимое БД должно быть очищено. Сделать это можно удалив и заново создав БД:

Command
psql -c 'DROP DATABASE dvdrental;'
psql -c 'CREATE DATABASE dvdrental;'

Загрузка БД, сохраненной в текстовом формате:

Command
psql -U postgres dvdrental < dvdrental_dump

Загрузка БД, сохраненной в формате архива:

Command
pg_restore -U postgres -d dvdrental dvdrental_dump

Подробная справка по всем командам доступна в справочной системе MAN.

Особенности работы с данными, имеющими ненулевые классификационные метки

Защищенная СУБД PostgreSQL, применяемая в Astra Linux Special Edition, поддерживает управление доступом к записям БД с учетом классификационных меток записей (см. соответствующую документацию на изделия, например, Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7). Эксплуатационная и дополнительная документация).
При выгрузке резервной копии данных, хранящихся в защищенной БД, выполняется процедура аккумулирования классификационной метки. При этом классификационная метка для файла резервной копии определяется как максимальная классификационная метка всех выгружаемых объектов данных, и по завершении выгрузки, выполняется попытка установки полученной классификационной метки на файл с резервной копией. Для назначения метки у пользователя, выполняющего команду pg_dump, должно иметься PARSEC-привилегия PARSEC_CAP_CHMAC, позволяющая изменять классификационные метки файловых объектов (см. Привилегии PARSEC), а также каталог, в котором сохраняется копия должен иметь возможность содержать файлы с такой классификационной меткой.

В соответствии с общими правилями МРД (см. Метка безопасности: структура и состав) каталог для хранения резервных копий должен иметь классификационную метку не меньшую, чем  максимальная классификационная метка выгружаемых данных, а если в каталоге предполагается хранить резервные копии с разными классификационными метками - то в метке безопасности каталога дожен использоваться флаг ccnr. Как пример, создать каталог с нужной меткой безопасности можно следующими командами:

  1. Создать сам каталог, например:

    Command
    sudo mkdir /var/backups-psql


  2. Присвоить созданному каталогу нужную метку безопасности, например:

    Command
    sudo pdpl-file 3:63:-1:ccnr  /var/backups-psql


При этом для того, чтобы обеспечить достаточные права для назначения классификационной метки файлу с резервной копией команды выгрузки можно выполнять от sudo, или назначить PARSEC-привилегию PARSEC_CAP_CHMAC пользователю-администратору СУБД. Например:

Command
sudo usercaps -m 0x8 postgres

Назначение привилегии пользователю начнет действовать после следующего входа этого пользователя в пользовательскую сессию.