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 inicio de sesión que serán propietarios de objetos en la geodatabase, también debe crear un esquema en esa base de datos. 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.

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 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 público.

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), utilice una aplicación cliente PostgreSQL como pgAdmin o PL/pgSQL para crear un rol en el clúster de base de datos PostgreSQL.

También puede crear grupos de roles a los que se pueden agregar roles de inicio de sesión. A continuación, puede especificar permisos para el grupo que se aplicarán a todos los roles de inicio de sesión asociados. Puede usar la herramienta Crear rol o una secuencia de comandos para crear roles de grupo o bien utilizar SQL.

Nota:

Aún así, debe crear un esquema coincidente para cada rol de inicio de sesión que será propietario de objetos en la geodatabase. No se puede crear un esquema para el rol del grupo.

Agregar un usuario que puede crear objetos de base de datos

Puede ejecutar la herramienta Crear usuario de base de datos desde ArcGIS Pro o invocar la función management.CreateDatabaseUser de Python en un script de ArcPy para crear un usuario de la base de datos 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 management.CreateDatabaseUser de ArcPy.

Utilice la herramienta Crear usuario de base de datos

Siga estos pasos para crear un usuario de base de datos 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 de Conexión de la base de datos de entrada.
  5. Proporcione un nombre para el rol 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.

Ejecutar un script de Python

Para crear usuarios mediante una secuencia de comandos, 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.

Su base de datos dispone ahora de un usuario que puede crear tablas y clases de entidad.

Una vez que existen las tablas y las clases de entidades, el propietario de los datos puede conceder privilegios sobre los datasets a otros usuarios. Consulte Otorgar y revocar privilegios sobre datasets en bases de datos y geodatabases corporativas para obtener instrucciones.

Crear nombres de usuario para ver y editar datos

Puede usar SQL para crear roles de inicio de sesión para aquellos usuarios que no crearán datos. No obstante, si lo va a hacer para su geodatabase en PostgreSQL, asegúrese de que el grupo público o el usuario específico tenga privilegios para crear tablas temporales.

También puede crear grupos de inicio de sesión para facilitar la concesión de privilegios sobre datasets individuales a estos usuarios.

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 de datos 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: uno para usuarios que pueden editar datasets (editores) y uno para usuarios que solo pueden ver datos (visores).

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

  3. A continuación, 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 'sooper.secret' 
    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.

  4. Ahora, 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 'almostas.secret' 
    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.

  5. Otorgue el privilegio usage sobre el esquema de geodatos a cada uno de los grupos de inicio de sesión.

    El privilegio usage permite a los miembros de los grupos de editores y visores acceder a datos del esquema de los geodatos. Sin este, los geodatos no podrían otorgar privilegios sobre datasets individuales a los miembros de los roles de grupo de visores y editores.

    GRANT USAGE ON SCHEMA geodata TO editors;
    GRANT USAGE ON SCHEMA geodata TO viewers;
  6. 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 esquemas de a los grupos de editores y visores.
    GRANT USAGE ON SCHEMA sde TO editors;
    GRANT USAGE ON SCHEMA sde TO viewers;

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

Una vez que los datasets existen en la base de datos o la geodatabase, el propietario puede utilizar herramientas de ArcGIS para otorgar el privilegio privilegios 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.