Поделиться через


Настройка безопасности для сервера PostgreSQL с поддержкой Azure Arc

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

  • Шифрование при хранении
  • Управление ролями и пользователями postgres
    • Общие перспективы
    • Изменение пароля администратора postgres
  • Audit

Примечание.

В отношении технологии (как предварительной версии функции), описанной в этой статье, действуют дополнительные условия использования предварительных версий Microsoft Azure.

Последние обновления доступны в заметках о выпуске.

Шифрование при хранении

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

Оборудование: шифрование тома узла Linux

Реализуйте шифрование системных данных, чтобы защитить любые данные, которые находятся на дисках, используемых программой установки служб данных в службе Azure Arc. Дополнительные сведения об этом можно найти здесь:

Программное обеспечение: используйте расширение PostgreSQL pgcrypto в группе серверов

Помимо шифрования дисков, используемых для размещения установки Azure Arc, можно настроить сервер PostgreSQL с поддержкой Azure Arc для предоставления механизмов, которые приложения могут использовать для шифрования данных в базе данных. Расширение pgcrypto является частью contrib расширений Postgres и доступно на сервере PostgreSQL с поддержкой Azure Arc. Сведения о расширении pgcrypto можно найти здесь. В целом, используя следующие команды, вы можете включить расширение, создать его и начать использовать.

Создание расширения pgcrypto

Подключитесь к группе серверов с помощью выбранного клиентского инструмента и выполните стандартный запрос PostgreSQL:

CREATE EXTENSION pgcrypto;

Дополнительные сведения о том, как подключиться.

Проверьте список расширений, готовых к использованию в группе серверов

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

select * from pg_extension;

pgcrypto можно увидеть, если вы включили и создали его с помощью команд, указанных выше.

Использование расширения pgcrypto

Теперь можно настроить код приложений таким образом, чтобы они использовали любую из функций, предлагаемых pgcrypto:

  • общие хэш-функции;
  • функции хэширования паролей;
  • функции шифрования PGP;
  • функции шифрования необработанных данных;
  • функции случайного набора данных.

Например, для создания хэш-значений. Выполните команду:

select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));

Возвращает следующий хэш:

              crypt
------------------------------------
 $1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/   

Или, например:

select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');

Возвращает следующий хэш:

                                hmac
--------------------------------------------------------------------
 \xd4e4790b69d2cc8dbce3385ee63272bc7760f1603640bb211a7b864e695570c5

Или, например, для хранения зашифрованных данных, таких как пароль:

  • Приложение хранит секреты в следующей таблице:

    create table mysecrets(USERid int, USERname char(255), USERpassword char(512));
    
  • Зашифруйте пароль при создании пользователя:

    insert into mysecrets values (1, 'Me', crypt('MySecretPasswrod', gen_salt('md5')));
    
  • Обратите внимание, что пароль зашифрован:

    select * from mysecrets;
    

Выходные данные:

- USERid: 1
- USERname: Me
- USERpassword: $1$Uc7jzZOp$NTfcGo7F10zGOkXOwjHy31

При подключении к приложению и передаче пароля он ищет в mysecrets таблице и возвращает имя пользователя, если есть совпадение между паролем, предоставленным приложению, и паролями, хранящимися в таблице. Например:

  • Передайте неправильный пароль:

    select USERname from mysecrets where (USERpassword = crypt('WrongPassword', USERpassword));
    

    Выходные данные

      USERname
    ---------
    (0 rows)
    
  • Передайте правильный пароль:

    select USERname from mysecrets where (USERpassword = crypt('MySecretPasswrod', USERpassword));
    

    Выходные данные:

      USERname
    ---------
    Me
    (1 row)
    

В этом небольшом примере показано, что вы можете шифровать неактивных данных (хранить зашифрованные данные) на сервере PostgreSQL с поддержкой Azure Arc с помощью расширения Postgres pgcrypto , а приложения могут использовать функции, предлагаемые pgcrypto для управления данными, зашифрованными.

Управление ролями и пользователями postgres

Общие перспективы

Чтобы настроить роли и пользователей на сервере PostgreSQL с поддержкой Azure Arc, используйте стандартный способ управления ролями и пользователями. Дополнительные сведения см . здесь.

Audit

Для сценариев аудита настройте группу серверов для использования расширений Postgres pgaudit. Дополнительные сведения о pgaudit см. в разделе pgAudit проекта GitHub. Чтобы узнать о включении расширения pgaudit в группе серверов, см. раздел Использование расширений PostgreSQL.

Использование SSL-подключения

Протокол SSL необходим для клиентских подключений. В строка подключения параметр режима SSL не должен быть отключен. Формы строка подключения.