Otorgar y revocar privilegios sobre datasets

Disponible con una licencia Standard o Advanced.

Si desea permitir que otros usuarios de la base de datos vean o modifiquen el contenido de cualquier dato en una base de datos, debe otorgarles el privilegio para hacerlo.

Puede utilizar el cuadro de diálogo Privilegios, la herramienta de geoprocesamiento Cambiar privilegios o la función ChangePrivileges_management en un script de Python para especificar los privilegios que tiene un usuario o un grupo sobre un dataset concreto.

Puede otorgar privilegios de selección, es decir, que el usuario pueda leer y seleccionar el contenido de un dataset, pero no modificarlo. También puede otorgar privilegios de actualización, inserción y eliminación, lo que permite al usuario modificar el contenido de un dataset.

Las siguientes reglas se aplican a la concesión y revocación de privilegios sobre los datos de una base de datos o una geodatabase en ArcGIS:

  • Solo el propietario de la tabla puede modificar los privilegios.
  • Solo el propietario de la tabla puede eliminar o modificar su definición de esquema; por lo tanto, aun cuando se han concedido a otro usuario privilegios de insertar, actualizar y eliminar en un dataset, ese usuario no puede modificar el esquema.
  • Si va a otorgarle privilegios a un usuario para insertar, actualizar o eliminar, también debe otorgarle el privilegio para seleccionar; los usuarios deben poder leer el dataset antes de que puedan editarlo.
  • Los roles dbo y db_owner no aparecen en la lista de Usuario/Rol del cuadro de diálogo Privilegios para las bases de datos de SQL Server. A estos usuarios se les conceden automáticamente privilegios en todos los datos de la base de datos. Los privilegios varían por rol y no se pueden revocar.
  • Los grupos o roles de inicio de sesión de PostgreSQL a los que se les ha otorgado el estatus de superusuarios en la base de datos no aparecen en la lista Usuario/Rol del cuadro de diálogo Privilegios. Estos usuarios automáticamente tienen privilegios completos sobre todos los datos y no puede revocar estos privilegios.
  • Solo puede modificar los privilegios del usuario en un dataset en cualquier momento por medio del cuadro de diálogo Privilegios. Para modificar los privilegios sobre varios datasets al mismo tiempo, utilice la herramienta de geoprocesamiento Cambiar privilegios o la función de Python.
  • Para revocar privilegios se requiere un bloqueo exclusivo en el dataset. Si hay alguien conectado al dataset, no podrá revocar privilegios.

Estas normas afectan a la concesión y revocación de privilegios sobre datasets de una geodatabase solamente:

  • Todas las clases de entidad de un dataset de entidades deben tener aplicados los mismos privilegios.
  • Cuando se otorgan privilegios a una tabla o clase de entidad que participa en una clase de relación, los privilegios deben otorgarse tanto a las clases de destino como a las de origen. Si las clases de entidad de destino y origen se encuentran dentro del mismo dataset de entidades, tienen el mismo conjunto de privilegios, ya que los privilegios se otorgan en el nivel de dataset de entidad. Sin embargo, cuando la clase de origen o destino no está en el mismo dataset de entidad, debe asegurarse de otorgarle los privilegios apropiados tanto a las clases de origen como de destino. Si la clase de relación tiene atributos o tiene cardinalidad muchos a muchos, los privilegios se propagan automáticamente a la tabla intermedia cuando usted asigna privilegios a la clase de origen.
  • Si el dataset no está registrado como versionado, puede otorgar y revocar individualmente los privilegios de actualización, inserción y eliminación mediante el cuadro de diálogo Privilegios. Por ejemplo, puede otorgar a un usuario privilegios para seleccionar y actualizar, lo que permite a este conectarse al dataset y modificar las entidades existentes, pero no le permite agregar nuevas entidades o eliminar entidades existentes.
  • Si el dataset se registra como versionado, los privilegios que le permiten a un usuario modificar un dataset (actualizar, insertar y eliminar) deben otorgarse y revocarse como grupo.
  • Si el dataset se registra como versionado, el administrador de la geodatabase debe tener todos los privilegios sobre el mismo. Por lo tanto, no puede revocarle los privilegios desde el administrador de la geodatabase en datasets versionados.

Utilice uno de los métodos siguientes para otorgar y revocar privilegios sobre datasets de su propiedad:

  • Cuadro de diálogo Privilegios: el cuadro de diálogo Privilegios permite consultar los privilegios que tiene un usuario o un grupo sobre un dataset concreto. También puede conceder privilegios sobre el dataset a más de un usuario o grupo a la vez.
  • Herramienta Cambiar privilegios: la herramienta Cambiar privilegios permite otorgar privilegios sobre varios datasets a un usuario o grupo.
  • Secuencia de comandos Python: se pueden ejecutar secuencias de comandos Python desde equipos Linux donde esté instalado ArcGIS Server. Se pueden modificar los privilegios de varios datasets.

Utilizar el cuadro de diálogo Privilegios

  1. Conéctese a la base de datos o geodatabase que contiene los datos de su propiedad cuyos privilegios quiere otorgar o revocar.
  2. Haga clic con el botón derecho en el dataset, seleccione Administrar y haga clic en Privilegios.
  3. Si el usuario o rol cuyos privilegios desea cambiar ya está en la lista, active o desactive las casillas de los privilegios que desea conceder o revocar y haga clic en Aceptar para aplicar los cambios.
    Nota:

    Si desactivó todas las casillas de privilegios, se eliminará de la lista al usuario o rol.

  4. Si el usuario o rol ya no está en la lista, haga lo siguiente:
    1. Haga clic en Agregar usuario para abrir el cuadro de diálogo Usuario/Rol.
    2. Si tiene privilegios en la base de datos para ver la tabla del sistema que enumera todos los usuarios y roles de la base de datos, puede seleccionar los usuarios o roles de la base de datos que desee agregar desde la lista al marcar la casilla junto a sus nombres.
    3. Haga clic en Aceptar para cerrar el cuadro de diálogo Usuario/Rol.
    4. Marque los cuadros de privilegios que desea que cada nuevo usuario o rol tenga y a continuación, haga clic en Aceptar.

Utilizar la herramienta Cambiar privilegios

Puede utilizar la herramienta Cambiar privilegios para otorgar y revocar privilegios sobre datasets de su propiedad. La herramienta se puede encontrar en el conjunto de herramientas Administración de geodatabase de la caja de herramientas Administración de datos.

Puede cambiar los privilegios de un usuario o grupo sobre varios datasets al mismo tiempo con esta herramienta. Tenga en cuenta que la herramienta Cambiar privilegios no muestra los privilegios que tiene el usuario sobre los datasets. Los privilegios de inserción, actualización y eliminación se deben conceder en conjunto, no de forma individual.

  1. Conéctese a la geodatabase o la base de datos como propietario de los datasets cuyos privilegios quiera otorgar o revocar.
  2. Abra la herramienta Cambiar privilegios
  3. Desplácese hasta la conexión de base de datos y elija los datasets cuyos privilegios quiera cambiar.
  4. Escriba el nombre del usuario o grupo cuyos privilegios desea cambiar.
  5. Utilice las listas desplegables Ver y Editar para seleccionar los privilegios que quiera otorgar al usuario o grupo especificado.

    Para otorgar privilegios de edición, también deben otorgarse privilegios de vista.

  6. Haga clic en el botón Aceptar para ejecutar la herramienta.

Utilizar una secuencia de comandos de Python

Si desea utilizar una secuencia de comandos de Python para otorgar o revocar privilegios sobre un dataset de su propiedad, puede emplear la función ChangePrivileges_management.

  1. En primer lugar, utilice la función CreateDatabaseConnection_management para crear una conexión de base de datos. Debe conectarse como propietario de los datasets y guardar el nombre de usuario con el archivo.

    En este ejemplo, el archivo de conexión gdb.sde se crea en el directorio /usr/connections. La conexión se realiza a la base de datos de mercados del clúster de base de datos dserver como usuario eng1.

    import arcpy
    arcpy.CreateDatabaseConnection_management (r'/usr/connections', "gdb.sde", "POSTGRESQL", "dserver", "DATABASE_AUTH", "eng1", "T!i569", "SAVE_USERNAME", "markets")

  2. Ejecute la función ChangePrivileges_management.

    En este ejemplo se muestran los privilegios otorgados al grupo readers sobre tres datasets.

    arcpy.ChangePrivileges_management ("/usr/connections/gdb.sde/markets.eng1.properties,markets.eng1.routes,markets.eng1.demo", "readers", "GRANT", "AS_IS")