Добавление ролей учетных записей в PostgreSQL

Доступно с лицензией Standard или Advanced.

В PostgreSQL роли пользователей используются для авторизации в кластере баз данных и в базах данных. Отдельные пользователи называются ролями учетных записей. Для всех ролей пользователей, которые будут владеть объектами в базе геоданных, администратор базы данных также должен создать схему в базе данных, в которой хранится база геоданных. Чтобы использовать PostgreSQL с ArcGIS, схема должна иметь то же имя, что и роль учетной записи.

Администратор базы данных может использовать инструмент Создать пользователя базы данных для добавления роли учетной записи, которая может создавать таблицы и классы объектов. Инструмент создает роль пользователя с аутентификацией базы данных в кластере базы данных PostgreSQL, создает соответствующую схему для пользователя в указанной базе данных и предоставляет права доступа usage для новой схемы для роли общего доступа.

В качестве альтернативы администратор базы данных может использовать клиентское приложение PostgreSQL, такое как pgAdmin или PL/pgSQL, для создания ролей учетных записей пользователей. Необходимо использовать данное приложение для того, чтобы создать роль учетной записи, которая не владеет схемой и, следовательно, не может создавать объекты в базе геоданных, или создать роль учетной записи, сопоставленную с Интерфейсом поставщика поддержки безопасности (SSPI) или Протоколом упрощенного доступа к каталогам (LDAP).

Администратор базы данных также может создавать групповые роли, к которым можно добавлять роли учетных записей, и указывать разрешения для группы, которые будут применяться ко всем связанным ролям учетных записей пользователей. Используйте инструмент Создать роль или скрипт для создания групповых ролей, или используйте SQL.

Примечание:

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

Использование геообработки для добавления пользователя, который может создавать объекты базы данных

Запустите инструмент Создать пользователя базы данных из ArcGIS Pro или вызовите функцию management.CreateDatabaseUser ArcPy в скрипте Python для создания роли пользователя, который может создавать таблицы, классы объектов и представления.

Чтобы запустить инструмент Создать пользователя базы данных или функцию management.CreateDatabaseUser ArcPy, необходимо подключиться к базе данных с помощью роли со статусом superuser.

Использование инструмента Создать пользователя базы данных

Следуйте этим инструкциям, чтобы создать роль учетной записи пользователя в PostgreSQL, используя инструмент Создать пользователя базы данных:

  1. Запустите ArcGIS Pro.
  2. Подключитесь к базе данных или базе геоданных с помощью роли PostgreSQL со статусом superuser.
  3. Откройте инструмент Создать пользователя базы данных.

    Инструмент находится в группе инструментов Администрирование базы геоданных набора Управление данными.

  4. Укажите подключение к базе данных для параметра Входное подключение к базе данных.
  5. Введите имя роли учетной записи пользователя и схемы, которые будут созданы инструментом.
  6. Укажите пароль для пользователя базы данных.
  7. Если у вас уже есть роль группы, к которой должен принадлежать пользователь, укажите ее.
  8. Щелкните Запустить.

Теперь база данных содержит пользователя, который может создавать таблицы, классы пространственных объектов и представления.

Новый пользователь может подключиться к базе данных для создания наборов данных. Затем он может предоставить права доступа другим пользователям. Инструкции см. в Предоставление и отзыв прав доступа к наборам данных в базах данных и многопользовательских базах геоданных.

Запустите скрипт Python

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

  1. Создайте текстовый файл на клиентском компьютере ArcGIS и скопируйте следующие блоки кода в файл.

    Измените код, чтобы использовать информацию о вашем сайте.

    В примерах предполагается, что у вас есть существующий файл подключения к базе данных, который подключается от имени пользователя с правами superuser в кластере базы данных PostgreSQL. Если у вас нет файла подключения, создайте его перед запуском скрипта.

    # Name: createdatabaseuser_exampleW.py
    # Description: Uses existing database connection file
    # on a Windows computer to create a database user in PostgreSQL.
    
    # Import arcpy module
    import arcpy
     
    # Provide a database connection file for the PostgreSQL administrator user.
    connection = "C:\\ArcGIS\connection_files\<Connection file>.sde"
    
    # Process: Create database user that can create data.
    arcpy.CreateDatabaseUser_management(connection, "DATABASE_USER", "dbuser", "t3mpor@rypL@ceholder1")
    # Name: createdatabaseuser_exampleL.py
    # Description: Uses existing database connection file
    # on a Linux computer to create a database user in PostgreSQL.
    
    # Import arcpy module
    import arcpy
     
    # Provide a database connection file for the PostgreSQL administrator user.
    connection = "<user>/connections/<Connection_file>.sde"
    
    # Process: Create database user that can create data.
    arcpy.CreateDatabaseUser_management(connection, "DATABASE_USER", "dbuser", "t3mpor@rypL@ceholder1")

  2. Сохраните файл с расширением .py.
  3. Запустите скрипт на компьютере с установленным ArcGIS Pro (Standard или Advanced) или ArcGIS Server.

    Для получения дополнительной информации о запуске Python на компьютере ArcGIS Server см. ArcGIS Server и ArcPy.

Теперь база данных содержит роль учетной записи пользователя, который может создавать таблицы, классы объектов и представления.

Новый пользователь может подключиться к базе данных для создания наборов данных. Затем он может предоставить права доступа другим пользователям. Инструкции см. в Предоставление и отзыв прав доступа к наборам данных в базах данных и многопользовательских базах геоданных.

Создание учетных записей с помощью SQL

Вы можете использовать SQL для создания ролей. Если вы делаете это для базы геоданных в PostgreSQL, убедитесь, что общедоступная группа либо конкретный пользователь имеет права на создание временных таблиц. Это необходимо для всех пользователей, даже тех, кто не будет создавать другие объекты базы данных.

Требуемые права доступа для каждого типа пользователя см. в разделе Права доступа к базам геоданных в PostgreSQL.

Создание ролей

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

  1. Войдите в psql в качестве пользователя с правами создания других ролей в кластере базы данных.

    Это может быть учетная запись со статусом superuser или запись с правами createrole.

  2. Используйте команду create role для создания групп учетных записей.

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

    CREATE ROLE owners 
    NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT;
    
    CREATE ROLE editors 
    NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT;
    
    CREATE ROLE viewers
    NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT;

  3. Предоставьте необходимые права доступа каждой из групповых ролей в зависимости от того, какие действия необходимо выполнить участникам группы.

    См. раздел Права доступа к базам геоданных в PostgreSQL при предоставлении прав доступа ролям в базе геоданных или Права доступа для использования ArcGIS с базой данных PostgreSQL, если база данных не содержит базу геоданных.

  4. Создайте роль учетной записи с сопоставимой схемой для владения объектами базы данных и поместите эту роль учетной записи в роль группы владельцев.

    CREATE ROLE geodataowner1 LOGIN 
    ENCRYPTED PASSWORD '' 
    NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE owners;
    
    CREATE SCHEMA geodataowner1
      AUTHORIZATION geodataowner1;

    Измените имя роли учетной записи и сопоставимой схемы, а затем снова выполните выражения для каждой учетной записи, которые создадут объекты базы данных.

  5. Создайте роли, которые будут участниками группы редакторов.

    В данном примере роль учетной записи (editor1) создается с шифрованным паролем. Роль не имеет статуса superuser, не может создавать базы данных и не может создавать роли в кластере базы данных. Однако она является участником групповой роли издателей и наследует права этой групповой роли.

    CREATE ROLE editor1 LOGIN 
    ENCRYPTED PASSWORD '' 
    NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE editors;
    Измените имя роли учетной записи и снова запустите выражение, чтобы создать дополнительные роли, которые смогут редактировать данные в базе геоданных.

  6. Создайте роли, которые будут участниками группы читателей.

    В данном примере роль учетной записи (reader1) создается с шифрованным паролем. Роль не имеет статуса superuser, не может создавать базы данных и не может создавать роли в кластере базы данных. Однако она является участником групповой роли читателей и наследует все права этой роли.

    CREATE ROLE reader1 LOGIN 
    ENCRYPTED PASSWORD '' 
    NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE viewers;
    Измените имя роли учетной записи и снова запустите выражение, чтобы создать дополнительные роли, которые могут только просматривать данные в базе геоданных.

  7. Предоставьте доступ usage к схемам, созданным на шаге 4, группам учетных записей читателей и редакторов.

    Право доступа usage позволяет участникам групповых ролей получать доступ к данным в схемах. Без этого владельцы данных не смогли бы предоставлять участникам групповых ролей права доступа для отдельных наборов данных.

    GRANT USAGE ON SCHEMA geodataowner1 TO viewers;
    GRANT USAGE ON SCHEMA geodataowner1 TO editors;
  8. Если вы создаете эти учетные записи для базы геоданных и изменили права доступа к схеме sde так, чтобы публичная группа не имеет прав usage на нее, предоставьте права usage к схеме sde для групп владельцев, редакторов и читателей.
    GRANT USAGE ON SCHEMA sde TO owners;
    GRANT USAGE ON SCHEMA sde TO editors;
    GRANT USAGE ON SCHEMA sde TO viewers;

Теперь база данных содержит одного или нескольких пользователей, которые могут создавать данные, одного или нескольких пользователей, которые могут редактировать данные, и одного или нескольких пользователей, которые могут их только просматривать.

Каждый пользователь должен создать подключение к базе данных.

Если владельцы данных создали наборы данных в базе данных или базе геоданных, они могут использовать инструменты ArcGIS для предоставления права select на наборы данных группе читателей и права select, insert, update и delete для наборов данных группе редакторов. Инструкции см. в Предоставление и отзыв прав доступа к наборам данных в базах данных и многопользовательских базах геоданных.