Настройка безопасности для сервера PostgreSQL с поддержкой Azure Arc
В этом документе описаны различные аспекты, связанные с безопасностью группы серверов.
- Шифрование при хранении
- Управление ролями и пользователями postgres
- Общие перспективы
- Изменение пароля администратора postgres
- Audit
Примечание.
В отношении технологии (как предварительной версии функции), описанной в этой статье, действуют дополнительные условия использования предварительных версий Microsoft Azure.
Последние обновления доступны в заметках о выпуске.
Шифрование при хранении
Вы можете реализовать шифрование неактивных данных, зашифровать диски, на которых хранятся базы данных, или с помощью функций базы данных зашифровать вставляемые или обновляемые данные.
Оборудование: шифрование тома узла Linux
Реализуйте шифрование системных данных, чтобы защитить любые данные, которые находятся на дисках, используемых программой установки служб данных в службе Azure Arc. Дополнительные сведения об этом можно найти здесь:
- Общие сведения о шифровании данных на хранении в среде Linux
- Шифрование дисков с помощью команды LUKS
cryptsetup
(Linux)(https://www.cyberciti.biz/security/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/) в частности. Так как службы данных с поддержкой 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 не должен быть отключен. Формы строка подключения.