Agregar roles de inicio de sesión a PostgreSQL

Disponible con una licencia Standard o Advanced.

PostgreSQL utiliza roles para iniciar sesión en el clúster de base de datos y las bases de datos. Los usuarios individuales se denominan roles de inicio de sesión. Para todos los roles de usuario de inicio de sesión que serán propietarios de objetos en la geodatabase, el administrador de base de datos también debe crear un esquema en la base de datos en la que se almacena la geodatabase. Para usar PostgreSQL con ArcGIS, el esquema debe tener el mismo nombre que el rol de inicio de sesión y ser propiedad de este.

El administrador de base de datos puede usar la herramienta Crear usuario de base de datos para agregar un rol de inicio de sesión que pueda crear tablas y clases de entidad. La herramienta crea un rol de usuario de inicio de sesión autenticación de base de datos en el clúster de base de datos de PostgreSQL, crea un esquema de geocodificación para el usuario en la base de datos que especifique y otorga privilegios usage sobre el nuevo esquema al rol público.

Como alternativa, el administrador de base de datos puede usar una aplicación cliente de PostgreSQL como pgAdmin o PL/pgSQL para crear roles de usuario de inicio de sesión. Debe utilizar estas aplicaciones para crear un rol de inicio de sesión que no posea un esquema y que, por lo tanto, no pueda crear objetos en la geodatabase, o para crear un rol de inicio de sesión asignado a una interfaz de proveedor de soporte técnico de seguridad (SSPI) o un inicio de sesión de Protocolo de acceso ligero al directorio (LDAP).

El administrador de base de datos también puede crear grupos de roles a los que se pueden agregar roles de inicio de sesión y especificar permisos en el grupo que se aplicarán a todos los roles de usuario de inicio de sesión asociados. Utilice la herramienta Crear rol o una secuencia de comandos para crear roles de grupo o bien utilizar SQL.

Nota:

Cada rol de usuario de inicio de sesión del grupo que será propietario de objetos en la geodatabase debe tener su propio esquema coincidente. No se puede crear un esquema para el rol del grupo.

Utilizar el geoprocesamiento para agregar un usuario que puede crear objetos de base de datos

Ejecute la herramienta Crear usuario de base de datos desde ArcGIS Pro o invoque la función ArcPy de management.CreateDatabaseUser en una secuencia de comandos de Python para crear un rol de usuario de inicio de sesión que puede crear tablas, clases de entidad y vistas.

Debe conectarse a la base de datos mediante un rol con estado de superusuario para ejecutar la herramienta Crear usuario de base de datos o la función ArcPy de management.CreateDatabaseUser.

Utilice la herramienta Crear usuario de base de datos

Siga estos pasos para crear un rol de usuario de inicio de sesión en PostgreSQL utilizando la herramienta Crear usuario de base de datos:

  1. Inicie ArcGIS Pro.
  2. Conéctese a la base de datos o geodatabase mediante un rol con autoridad de superusuario de PostgreSQL.
  3. Abra la herramienta Crear usuario de base de datos.

    La herramienta está en el conjunto de herramientas Administración de geodatabase de la caja de herramientas Administración de datos.

  4. Especifique la conexión de base de datos del parámetro Conexión de la base de datos de entrada.
  5. Proporcione un nombre para el rol de usuario de inicio de sesión y el esquema que la herramienta creará.
  6. Proporcione una contraseña para el usuario de la base de datos.
  7. Si ya tiene un rol de grupo del que desea que este usuario sea miembro, especifique ese rol de grupo.
  8. Haga clic en Ejecutar.

La base de datos dispone ahora de un usuario que puede crear tablas, clases de entidad y vistas.

El nuevo usuario puede conectarse a la base de datos para crear datasets. Pueden otorgar privilegios sobre ellos a otros usuarios. Consulte Otorgar y revocar privilegios sobre datasets en bases de datos y geodatabases corporativas para obtener instrucciones.

Ejecutar un script de Python

Para automatizar mediante secuencias de comandos la creación del rol de usuario de inicio de sesión, siga estos pasos:

  1. Cree un archivo de texto en un equipo cliente de ArcGIS y copie uno de los siguientes bloques de código en el archivo.

    Modifique el código para utilizar información específica de su sitio

    En los ejemplos se presupone que usted dispone de un archivo de conexión a la base de datos que se conecta como un usuario que tiene autoridad de superusuario en el clúster de base de datos de PostgreSQL. Si no dispone de ningún archivo de conexión, cree uno antes de ejecutar el script.

    # 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. Guarde el archivo con una extensión .py.
  3. Ejecute el script desde un equipo que tenga instalado ArcGIS Pro (Standard o Advanced) o ArcGIS Server.

    Para obtener más información sobre cómo ejecutar Python desde un equipo ArcGIS Server, consulte ArcGIS Server y ArcPy.

La base de datos dispone ahora de un rol de usuario de inicio de sesión que puede crear tablas, clases de entidad y vistas.

El nuevo usuario puede conectarse a la base de datos para crear datasets. Pueden otorgar privilegios sobre ellos a otros usuarios. Consulte Otorgar y revocar privilegios sobre datasets en bases de datos y geodatabases corporativas para obtener instrucciones.

Crear inicios de sesión con SQL

Puede usar SQL para crear roles. No obstante, si lo va a hacer para una geodatabase en PostgreSQL, asegúrese de que el grupo público o roles específicos tengan privilegios para crear tablas temporales. Esto es necesario para todos los usuarios, incluso los que no crearán otros objetos de base de datos.

Consulte los privilegios necesarios por tipo de usuario en Privilegios para geodatabases en PostgreSQL.

Crear roles

En los siguientes pasos se describe cómo usar psql para crear roles de grupo con el fin de simplificar la administración de privilegios y crear roles de inicio de sesión que pertenezcan a los roles de grupo.

  1. Inicie sesión en psql como usuario con permisos para crear otros roles en el clúster de base de datos.

    Puede ser un nombre de usuario con estado de superusuario o uno con el privilegio createrole.

  2. Utilice el comando create role para crear dos grupos de inicio de sesión.

    En este ejemplo, los roles de grupo se crean para otorgar privilegios para creadores de datos, editores de datos y visualizadores de datos.

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

  3. Otorgue los privilegios necesarios a cada uno de los roles de grupo en función de las acciones que tienen que realizar los miembros del grupo.

    Consulte Privilegios para geodatabases en PostgreSQL al otorgar privilegios a los roles en una geodatabase o Privilegios para utilizar ArcGIS con una base de datos PostgreSQL si la base de datos no contiene una geodatabase.

  4. Cree un rol de inicio de sesión con un esquema coincidente para tener objetos de base de datos en propiedad y sitúe ese rol de inicio de sesión en el rol de grupo de propietarios.

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

    Cambie el rol de inicio de sesión y el nombre de esquema coincidente y ejecute las declaraciones otra vez para cada nombre de usuario que creará objetos de base de datos.

  5. Cree roles de inicio de sesión que sean miembros del grupo de editores.

    En este ejemplo se ha creado un rol de inicio de sesión (editor1) con una contraseña cifrada. El rol no tiene estado de superusuario y no puede crear bases de datos ni tampoco roles en el clúster de base de datos. Sin embargo, se ha convertido en miembro de los editores de roles de grupo y heredará privilegios de ese rol de grupo.

    CREATE ROLE editor1 LOGIN 
    ENCRYPTED PASSWORD '' 
    NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE editors;
    Cambie el nombre del rol de inicio de sesión y ejecute la declaración de nuevo para crear roles de inicio de sesión adicionales que podrán editar datos en la geodatabase.

  6. Cree roles de inicio de sesión que sean miembros del grupo de visores.

    En este ejemplo, se ha creado un rol de inicio de sesión (reader1) con una contraseña cifrada. El rol no tiene estado de superusuario y no puede crear bases de datos ni tampoco roles en el clúster de base de datos. Sin embargo, se ha convertido en miembro de los visores de roles de grupo y heredará privilegios de ese rol de grupo.

    CREATE ROLE reader1 LOGIN 
    ENCRYPTED PASSWORD '' 
    NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT IN ROLE viewers;
    Cambie el nombre del rol de inicio de sesión y ejecute la declaración de nuevo para crear roles de inicio de sesión adicionales que solo pueden ver datos en la geodatabase.

  7. Otorgue usage en los esquemas que ha creado en el paso 4 a los grupos de inicio de sesión de visores y editores.

    El privilegio usage permite a los miembros de los roles de grupo acceder a los datos de los esquemas. Sin este, los propietarios de los datos no podrían otorgar privilegios sobre datasets individuales a los miembros de los roles de grupo.

    GRANT USAGE ON SCHEMA geodataowner1 TO viewers;
    GRANT USAGE ON SCHEMA geodataowner1 TO editors;
  8. Si crea estos inicios de sesión para una geodatabase y modificó los privilegios del esquema sde de manera que el grupo público no tenga usage sobre ella, otorgue privilegio usage sobre el esquema sde a los grupos de creadores, editores y visores.
    GRANT USAGE ON SCHEMA sde TO owners;
    GRANT USAGE ON SCHEMA sde TO editors;
    GRANT USAGE ON SCHEMA sde TO viewers;

Ahora, la base de datos tiene uno o más usuarios que crearán datos, uno o varios usuarios que editarán datos y uno o más usuarios que verán datos.

Cada usuario debe crear una conexión a la base de datos.

Una vez que los propietarios de los datos crean datasets en la base de datos o la geodatabase, pueden utilizar herramientas de ArcGIS para otorgar el privilegio select sobre los datasets al grupo de visores y privilegios select, insert, update y delete sobre los datasets al grupo de editores. Consulte Otorgar y revocar privilegios sobre datasets en bases de datos y geodatabases corporativas para obtener instrucciones.