Предоставление разрешений в Базе данных 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 [ ... ] ]

Параметр WHERE может быть:

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 — это значение по умолчанию.
  • REPLICATION | NOREPLICATION — является ли роль ролью репликации. Роль должна иметь этот атрибут для подключения к серверу в режиме репликации и создания или удаления слотов репликации. Атрибут REPLICATION — это привилегированная роль, которая должна использоваться только для репликации. Значение по умолчанию — NOREPLICATION. Чтобы создать эту роль, необходимо быть членом azure_pg_admin.
  • BYPASSRLS | NOBYPASSRLS — обходит ли роль каждую политику безопасности на уровне строк (RLS).
  • CONNECTION LIMIT connlimit — указывает, сколько одновременных подключений может выполнять роль, которая может выполнять вход. Значение по умолчанию равно "-1", Этот параметр не помещет ограничение на одновременные подключения.
  • [ ENCRYPTED ] PASSWORD 'password'| PASSWORD NULL — задает пароль роли. Пароль используется только ролями с атрибутом LOGIN. Если пароль не указан, пароль имеет значение NULL, а проверка подлинности паролей завершается ошибкой. Кроме того, можно явно задать PASSWORD NULL.
  • VALID UNTIL 'timestamp' — дата и время, после которого пароль роли больше не действителен. Если опущено, срок действия пароля отсутствует.
  • IN ROLE role_name — одна или несколько ролей, в которые добавляется новая роль в качестве нового члена. Нет возможности добавить новую роль в качестве администратора; используйте команду GRANT.
  • IN GROUP role_name является устаревшей альтернативой IN ROLE.
  • ROLE role_name — одна или несколько ролей добавляются в качестве членов новой роли. (Это изменение в действительности делает новую роль группой.)
  • ADMIN role_name — предложение ADMIN похоже на ROLE, но именованные роли добавляются в новую роль WITH ADMIN OPTION, что дает им право предоставлять членство в этой роли другим пользователям.

Примечание.

Изменить атрибуты роли можно с помощью ALTER ROLE, а удалить роль — с помощью DROP ROLE.