Hinzufügen von Anmelderollen für PostgreSQL

AllSource 1.4    |

Mit der Standard- oder Advanced-Lizenz verfügbar.

PostgreSQL verwendet Rollen für die Anmeldung am Datenbank-Cluster und an den Datenbanken. Einzelne Benutzer werden als Anmelderollen bezeichnet. Zudem müssen Sie für alle Anmelderollen, die Eigentümer von Objekten in der Geodatabase sind, ein Schema in dieser Datenbank erstellen. Um PostgreSQL mit ArcGIS zu verwenden, muss das Schema den gleichen Namen wie die Anmelderolle haben und sich in deren Besitz befinden.

Mit dem Werkzeug Datenbankbenutzer erstellen können Sie eine Anmelderolle hinzufügen, die Tabellen und Feature-Classes erstellen kann. Das Werkzeug erstellt eine Anmelderolle mit Datenbankauthentifizierung im PostgreSQL-Datenbank-Cluster und ein passendes Schema für den Benutzer in der angegebenen Datenbank und gewährt der Öffentlichkeit usage-Berechtigungen für das neue Schema.

Um eine Anmelderolle zu erstellen, die kein Schema besitzt und deshalb keine Objekte in der Geodatabase erstellen kann, oder um eine Anmelderolle zu erstellen, die einer SSPI-Anmeldung (Security Support Provider Interface) oder einer LDAP-Anmeldung (Lightweight Directory Access Protocol) zugeordnet ist, verwenden Sie eine PostgreSQL-Client-Anwendung, wie zum Beispiel pgAdmin, oder PL/pgSQL zum Erstellen einer Rolle im PostgreSQL-Datenbank-Cluster.

Sie können alternativ auch Gruppenrollen erstellen, denen die Anmelderollen hinzugefügt werden. Auf diese Weise können Sie Berechtigungen für die Gruppe festlegen, die für alle zugehörigen Anmelderollen gelten. Mit dem Werkzeug oder Skript Rolle erstellen können Sie Gruppenrollen erstellen. Alternativ können Sie dazu SQL verwenden.

Hinweis:

Sie müssen jedoch weiterhin ein passendes Schema für jede Anmelderolle in der Gruppe erstellen, die Eigentümer von Objekten in der Geodatabase ist. Sie können kein Schema für die Gruppenrolle erstellen.

Hinzufügen eines Benutzers, der Datenbankobjekte erstellen kann

Sie können das Werkzeug Datenbankbenutzer erstellen in ArcGIS AllSource ausführen oder die ArcPy-Funktion management.CreateDatabaseUser in einem Python-Skript aufrufen, um einen Datenbankbenutzer zu erstellen, der Tabellen, Feature-Classes und Sichten erstellen kann.

Sie müssen mit einer Rolle mit Superuser-Status mit der Datenbank verbunden sein, um das Werkzeug Datenbankbenutzer erstellen oder die ArcPy-Funktion management.CreateDatabaseUser ausführen zu können.

Verwenden des Werkzeugs Datenbankbenutzer erstellen

Führen Sie die folgenden Schritte aus, um mit dem Werkzeug Datenbankbenutzer erstellen einen Datenbankbenutzer in PostgreSQL zu erstellen:

  1. Starten Sie ArcGIS AllSource.
  2. Stellen Sie mit einer Rolle mit PostgreSQL-Superuser-Berechtigung eine Verbindung mit der Datenbank oder Geodatabase her.
  3. Öffnen Sie das Werkzeug Datenbankbenutzer erstellen.

    Das Werkzeug befindet sich in der Toolbox "Data Management" im Toolset "Geodatabase-Verwaltung".

  4. Geben Sie die Datenbankverbindung für die Eingabe-Datenbankverbindung an.
  5. Geben Sie einen Namen für die Anmelderolle und das Schema an, die von dem Werkzeug erstellt werden.
  6. Geben Sie ein Kennwort für den Datenbankbenutzer an.
  7. Wenn Sie bereits über eine Gruppenrolle verfügen, der dieser Benutzer als Mitglied angehören soll, geben Sie die Gruppenrolle an.
  8. Klicken Sie auf Ausführen.

Ausführen eines Python-Skripts

Führen Sie die folgenden Schritte aus, um ein Skript für die Benutzererstellung zu erzeugen:

  1. Erstellen Sie eine Textdatei auf einem ArcGIS-Client-Computer, und kopieren Sie einen der folgenden Codeblöcke in die Datei.

    Code ändern, sodass Ihre standortspezifischen Informationen berücksichtigt werden

    In den Beispielen wird davon ausgegangen, dass Sie über eine vorhandene Datenbankverbindungsdatei verfügen, mit der eine Verbindung als Superuser im PostgreSQL-Datenbank-Cluster hergestellt wird. Falls dies nicht der Fall ist, erstellen Sie eine Verbindungsdatei, bevor Sie das Skript ausführen.

    # 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. Speichern Sie die Datei mit der Erweiterung .py.
  3. Führen Sie das Skript auf einem Computer aus, auf dem ArcGIS AllSource ( Standard oder Advanced) oder ArcGIS Server installiert ist.

    Weitere Informationen zum Ausführen von Python auf einem ArcGIS Server-Computer finden Sie unter ArcGIS Server und ArcPy.

Die Datenbank enthält nun einen Benutzer, der Tabellen und Feature-Classes erstellen kann.

Sobald die Tabellen und Feature-Classes erstellt wurden, kann der Datenbesitzer anderen Benutzern Berechtigungen für die Datasets gewähren. Anweisungen dazu finden Sie unter Gewähren und Widerrufen von Dataset-Berechtigungen in Datenbanken und Enterprise-Geodatabases.

Erstellen von Anmeldenamen zum Anzeigen und Bearbeiten von Daten

Sie können mit SQL Anmelderollen für Benutzer erstellen, die keine Daten erstellen. Wenn Sie dies für Ihre Geodatabase in PostgreSQL durchführen, müssen Sie sicherstellen, dass die öffentliche Gruppe oder der spezifische Benutzer über Berechtigungen zum Erstellen temporärer Tabellen verfügt.

Sie können auch Anmeldegruppen erstellen, damit Berechtigungen für einzelne Datasets leichter für diese Benutzer gewährt werden können.

Erstellen von Rollen

In den folgenden Schritten wird beschrieben, wie mit psql Gruppenrollen erstellt werden, um die Verwaltung von Datenberechtigungen zu vereinfachen und Anmelderollen zu erstellen, die den Gruppenrollen angehören.

  1. Melden Sie sich bei psql als Benutzer mit der Berechtigung zum Erstellen anderer Rollen im Datenbank-Cluster an.

    Dabei kann es sich um eine Anmeldung mit Superuser-Status oder der createrole-Berechtigung handeln.

  2. Erstellen Sie mit dem Befehl create role zwei Anmeldegruppen: eine für Benutzer, die Datasets bearbeiten können ("editors"), und eine für Benutzer, die Daten nur anzeigen können ("viewers").

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

  3. Erstellen Sie als Nächstes Anmelderollen, die Mitglieder der Gruppe "editors" sind.

    In diesem Beispiel wird eine Anmelderolle (editor1) mit einem verschlüsselten Kennwort erstellt. Die Rolle verfügt nicht über den Superuser-Status und kann weder Datenbanken noch Rollen im Datenbank-Cluster erstellen. Sie wurde jedoch zum Mitglied der Gruppenrolle "editors" gemacht und übernimmt die Berechtigungen dieser Gruppenrolle.

    CREATE ROLE editor1 LOGIN 
    ENCRYPTED PASSWORD 'sooper.secret' 
    NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE editors;
    Ändern Sie den Anmelderollennamen, und führen Sie die Anweisung erneut aus, um weitere Anmelderollen zu erstellen, die Daten in der Geodatabase bearbeiten können.

  4. Erstellen Sie nun Anmelderollen, die Mitglieder der Gruppe "viewers" sind.

    In diesem Beispiel wird eine Anmelderolle (reader1) mit einem verschlüsselten Kennwort erstellt. Die Rolle verfügt nicht über den Superuser-Status und kann weder Datenbanken noch Rollen im Datenbank-Cluster erstellen. Sie wurde jedoch zum Mitglied der Gruppenrolle "viewers" gemacht und übernimmt die Berechtigungen dieser Gruppenrolle.

    CREATE ROLE reader1 LOGIN 
    ENCRYPTED PASSWORD 'almostas.secret' 
    NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE viewers;
    Ändern Sie den Anmelderollennamen, und führen Sie die Anweisung erneut aus, um weitere Anmelderollen zu erstellen, die nur Daten in der Geodatabase anzeigen können.

  5. Gewähren Sie den beiden Anmeldegruppen die Berechtigung usage für das Schema "geodata".

    Die Berechtigung usage ermöglicht den Mitgliedern der Gruppen "editors" und "viewers", auf Daten im Schema "geodata" zuzugreifen. Ohne dies kann "geodata" den Mitgliedern der Gruppenrollen "viewers" und "editors" keine Berechtigungen für einzelne Datasets gewähren.

    GRANT USAGE ON SCHEMA geodata TO editors;
    GRANT USAGE ON SCHEMA geodata TO viewers;
  6. Wenn Sie diese Anmeldungen für eine Geodatabase erstellen und die Berechtigungen für das Schema "sde" geändert haben, sodass die öffentliche Gruppe keine usage-Berechtigungen dafür hat, gewähren Sie den Gruppen "editors" und "viewers" die Berechtigung usage für das Schema "sde".
    GRANT USAGE ON SCHEMA sde TO editors;
    GRANT USAGE ON SCHEMA sde TO viewers;

Die Datenbank verfügt nun über einen oder mehrere Benutzer, die Daten bearbeiten, und einen oder mehrere Benutzer, die Daten anzeigen.

Sobald die Datenbank oder Geodatabase Datasets enthält, kann der Besitzer ArcGIS-Werkzeuge verwenden, um der Gruppe "viewers" die Berechtigung select für die Datasets und der Gruppe "editors" die Berechtigungen select, insert, update und delete für die Datasets zu gewähren. Anweisungen dazu finden Sie unter Gewähren und Widerrufen von Dataset-Berechtigungen in Datenbanken und Enterprise-Geodatabases.