Предоставление разрешений в Базе данных Azure SQL для PostgreSQL

Завершено

Чтобы разрешить пользователям доступ к базам данных, размещенным на сервере Базы данных Azure для PostgreSQL, необходимо создать роли (пользователей) и предоставить или отозвать разрешения к объектам базы данных.

Создание пользователей базы данных в службе "База данных Azure для PostgreSQL"

  1. В Azure Data Studio (или предпочитаемом клиентском средстве) подключитесь к серверу Базы данных Azure для PostgreSQL с учетными данными для входа администратора.

  2. Используя соответствующую базу данных в качестве текущей базы данных, используйте CREATE ROLE соответствующие параметры для создания новой роли (пользователя).

  3. В качестве примера рассмотрите следующий запрос:

    1. Этот код создает базу данных testdb.
    2. Создает нового пользователя с надежным паролем.
    3. Предоставляет разрешения на подключение к базе данных testdb.
    CREATE DATABASE testdb;
    CREATE ROLE <db_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>';
    GRANT CONNECT ON DATABASE testdb TO <db_user>;
    

    Чтобы попробовать запрос, можно заменить заполнители своими сведениями о пользователе.

  4. Затем можно предоставить дополнительные привилегии объектам в базе данных. Например:

    GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
    

Синтаксис инструкции CREATE ROLE:

CREATE ROLE name [ [ WITH ] option [ ... ] ]

ГДЕ опция может быть:

SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]

Ниже перечислены необязательные параметры.

  • SUPERUSER | NOSUPERUSER — нельзя назначать привилегии SUPERUSER в Базе данных Azure для PostgreSQL. Если значение не указано, значение по умолчанию — NOSUPERUSER.
  • CREATEDB | NOCREATEDB — может ли роль создавать базы данных. Значение по умолчанию — NOCREATEDB.
  • CREATEROLE | NOCREATEROLE — может ли роль создавать новые роли, то есть выполнять CREATE ROLE. Если разрешение CREATEROLE предоставлено, роль также может изменять и удалять другие роли. Значение по умолчанию — NOCREATEROLE.
  • НАСЛЕДОВАНИЕ | NOINHERIT — наследует ли роль привилегии ролей, членом которых она является напрямую или косвенно. По умолчанию используется значение INHERIT.
  • LOGIN | NOLOGIN — разрешено ли роли входить в систему. Роль с атрибутом LOGIN — это пользователь базы данных. Роли без атрибута LOGIN можно использовать для управления привилегиями базы данных. NOLOGIN — это значение по умолчанию.
  • РЕПЛИКАЦИЯ | NOREPLICATION — является ли роль ролью репликации. Роль должна иметь этот атрибут для подключения к серверу в режиме репликации и создания или удаления слотов репликации. Атрибут REPLICATION — это привилегированная роль, которая должна использоваться только для репликации. Значение по умолчанию — NOREPLICATION. Чтобы создать эту роль, необходимо быть членом azure_pg_admin.
  • ОБХОД RLS | NOBYPASSRLS — обходит ли роль каждую политику безопасности на уровне строк (RLS).
  • CONNECTION LIMIT connlimit — указывает, сколько одновременных подключений может выполнять роль, имеющая право входа. Значение по умолчанию равно "-1", Этот параметр не помещет ограничение на одновременные подключения.
  • [ ENCRYPTED ] PASSWORD 'password'| PASSWORD NULL — задает пароль роли. Пароль используется только ролями с атрибутом LOGIN. Если пароль не указан, пароль имеет значение NULL, а проверка подлинности паролей завершается ошибкой. Кроме того, можно явно задать PASSWORD NULL.
  • ДЕЙСТВУЕТ ДО метка времени — дата и время, после которых пароль роли становится недействительным. Если опущено, срок действия пароля отсутствует.
  • В РОЛИ role_name — одна или несколько ролей, в которые добавляется новая роль в качестве нового члена. Нет возможности добавить новую роль в качестве администратора; используйте команду GRANT.
  • IN GROUP role_name является устаревшей альтернативой для IN ROLE.
  • РОЛЬ role_name — одна или несколько ролей добавляются в качестве членов новой роли. (Это изменение в действительности делает новую роль группой.)
  • АДМИН role_name — конструкция ADMIN аналогична ROLE, но указанные роли добавляются в новую роль с параметром WITH ADMIN OPTION, разрешая им право предоставлять членство в этой роли другим пользователям.

Примечание.

Вы можете изменить атрибуты роли, используя ALTER ROLE и удалить роль, используя DROP ROLE.