Втомилися налаштовувати Nginx, Gunicorn і PostgreSQL кожного разу, коли розгортаєте Django? Існує новий тип VPS, створений спеціально для цього - все вже встано...
Блог компанії 3v-Hosting
6 хв.
PostgreSQL - це потужна реляційна система управління базами даних (РСУБД) з відкритим вихідним кодом, що володіє широкими можливостями для зберігання, пошуку та управління даними. У будь-якому багатокористувацькому середовищі необхідно ефективно додавати користувачів і керувати ними, щоб підтримувати безпеку, надавати відповідні привілеї та забезпечувати безперебійну роботу бази даних. У цій статті представлено докладний покроковий посібник із додавання нового користувача в PostgreSQL, розглядаються різні перспективи та практичні сценарії.
У PostgreSQL використовується система управління доступом на основі ролей. Ролі в PostgreSQL можуть діяти як користувачі або групи, залежно від того, як вони налаштовані. Кожна операція з базою даних, що виконується користувачем, виконується в рамках призначеної йому ролі. Перед створенням нового користувача необхідно розібратися з ролями, оскільки користувач - це, по суті, роль з атрибутом LOGIN.
Ролі можуть мати різні дозволи, наприклад:
- Можливість створювати бази даних (CREATEDB).
- Привілей на створення інших ролей (CREATEROLE).
- Можливість доступу до сервера баз даних (LOGIN).
Під час додавання нового користувача важливо враховувати необхідні дозволи та обмеження ролі, щоб забезпечити безпечний та ефективний доступ до бази даних.
Перед додаванням нового користувача переконайтеся, що у вас є доступ до сервера PostgreSQL з адміністративними привілеями. Адміністративні ролі, як-от postgres (суперкористувач за замовчуванням), мають необхідні повноваження для управління ролями та привілеями.
Щоб увійти в систему під користувачем postgres, виконайте таку команду:
sudo -i -u postgres
Після входу в систему отримайте доступ до інтерфейсу командного рядка PostgreSQL (psql), виконавши команду:
psql
Тепер ви готові до додавання нового користувача.
Щоб створити нового користувача, PostgreSQL надає команду CREATE ROLE, яка може використовуватися в поєднанні з певними атрибутами. Новий користувач повинен мати атрибут LOGIN, щоб отримати доступ до бази даних.
Ось базовий приклад додавання нового користувача:
CREATE ROLE new_user WITH LOGIN PASSWORD 'secure_password';
new_user: Замініть це на ім'я користувача, яке ви хочете створити.
PASSWORD: Завжди вибирайте надійний пароль для забезпечення безпеки.
Як альтернативу можна використовувати скорочену команду:
CREATE USER new_user WITH PASSWORD 'secure_password';
Команда CREATE USER - це спрощена версія CREATE ROLE, яка автоматично включає атрибут LOGIN.
За замовчуванням новий користувач не має прав на жодну базу даних. Щоб дозволити користувачеві взаємодіяти з певною базою даних, необхідно явно призначити привілеї.
Надати доступ до бази даних: Призначте новому користувачеві доступ до бази даних:
GRANT CONNECT ON DATABASE example_db TO new_user;
Надайте доступ до схеми: Якщо база даних має кілька схем, надайте доступ до певної схеми:
GRANT USAGE ON SCHEMA public TO new_user;
Надати привілеї на рівні таблиць: Дозвольте користувачеві взаємодіяти з таблицями:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO new_user;
Надання майбутніх привілеїв: Щоб забезпечити користувачеві привілеї для таблиць, створених у майбутньому:
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO new_user;
Призначення мінімально необхідних привілеїв - найважливіша практика забезпечення безпеки баз даних, що дає змогу знизити потенційні ризики.
Використовуйте групові ролі: Замість того щоб керувати привілеями окремих користувачів, створіть групові ролі із заздалегідь визначеними правами і призначте користувачів у ці групи. Наприклад:
CREATE ROLE dev_team WITH LOGIN PASSWORD 'team_password';
GRANT CONNECT, TEMPORARY ON DATABASE example_db TO dev_team;
Додайте окремих користувачів до групи:
GRANT dev_team TO new_user;
Регулярно змінюйте паролі: Забезпечте регулярне оновлення паролів, щоб мінімізувати вразливості безпеки.
ALTER USER new_user WITH PASSWORD 'new_secure_password';
Проводьте аудит дій користувачів: Використовуйте функції протоколювання PostgreSQL для моніторингу активності користувачів і забезпечення відповідності політикам доступу.
Скасуйте непотрібні привілеї: Періодично переглядайте і скасовуйте непотрібні привілеї, щоб запобігти «повзучому зростанню» привілеїв:
REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM new_user;
У середовищах, де створення користувачів відбувається часто, автоматизація може заощадити час і забезпечити послідовність дій. Нижче наведено приклад простого сценарію для додавання нового користувача:
#!/bin/bash
USER_NAME=$1
PASSWORD=$2
DATABASE=$3
psql -U postgres -c «CREATE USER $USER_NAME WITH PASSWORD “$PASSWORD”;»
psql -U postgres -c «GRANT CONNECT ON DATABASE $DATABASE TO $USER_NAME;»
Збережіть цей скрипт під ім'ям create_user.sh і запустіть його з необхідними аргументами:
bash create_user.sh new_user secure_password example_db
Цей підхід особливо корисний для конвеєрів DevOps і робочих процесів CI/CD.
Помилка: role «new_user» does not exist: Переконайтеся, що користувач був створений і йому присвоєно атрибут LOGIN.
Помилка: permission denied for database: Переконайтеся, що користувач має відповідний привілей CONNECT для бази даних.
Помилка: could not connect to server: Переконайтеся, що PostgreSQL запущено та приймає з'єднання на зазначеному порту.
Додавання нового користувача в PostgreSQL - це фундаментальне завдання, яке вимагає ретельного розгляду управління ролями, призначення привілеїв і найкращих практик безпеки. Розуміючи рольову архітектуру PostgreSQL і дотримуючись структурованих процесів, адміністратори можуть ефективно керувати користувачами, забезпечуючи цілісність і безпеку бази даних. Освоєння управління користувачами необхідне для ефективного адміністрування баз даних, незалежно від того, чи працюєте ви в невеликому середовищі розробки або у великій корпоративній системі.
Детально про те, як працюють IP-адреси, що таке IPv4 і IPv6, публічні та приватні IP, DNS, маршрутизація, безпека та використання в серверній інфраструктурі.
Прискорення WordPress на рівні Nginx: правильні налаштування PHP-FPM, try_files, статика, кешування, Brotli, захист wp-login і безпечні заголовки для стабільної...
Ефективні стратегії резервного копіювання Docker-додатків: як захищати томи, дані та конфігурації, уникаючи при цьому типових помилок, а також швидко відновлюва...