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

AllSource 1.4    |

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

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

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

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

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

Примечание:

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

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

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

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

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

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

  1. Запустите ArcGIS AllSource.
  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 AllSource (Standard или Advanced) или ArcGIS Server.

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

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

Так как таблицы и классы пространственных объектов существуют, их владелец может предоставлять права доступа к данным другим пользователям. Инструкции см. в Предоставление и отзыв прав доступа к наборам данных в базах данных и многопользовательских базах геоданных.

Создание учетных записей для просмотра и редактирования данных

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

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

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

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

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

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

  2. Используйте команду create role для создания двух групп учетных записей: одну для пользователей, которые могут редактировать наборы данных (редакторы), а другую - для пользователей, которые могут только просматривать данные (читатели).

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

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

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

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

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

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

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

  5. Каждой группе учетных записей предоставьте права usage для схемы geodata.

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

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

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

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