Informix, otorga selección en todas las tablas
-
22-07-2019 - |
Pregunta
Con Informix puedo otorgar selección
en una tabla como;
grant select on 'dba'.mytable to someuser as dba;
¿Cómo puedo realizar esto en todas las tablas de la base de datos?
Solución
No existe una manera simple de hacerlo (ya sea en el estándar SQL o en Informix), pero generalmente no es necesario ya que ese privilegio específico normalmente se otorga por defecto. Sin embargo, me imagino que, de hecho, también desea realizar operaciones más generales y saber qué opciones hay.
Dependiendo de lo que pretenda hacer y de cómo haya configurado su sistema, puede lograr sus objetivos de varias maneras.
Fuerza bruta: respuesta directa a la pregunta
SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
' TO someuser AS dba;'
FROM "informix".systables
WHERE tabid >= 100;
Tome el resultado de esto y aliméntelo a un programa. Utilizo SQLCMD para el trabajo, sobre todo porque no genera resultados no deseados:
sqlcmd -d dbname -e "
SELECT 'GRANT SELECT ON \"' || TRIM(owner) || '\".' || TRIM(tabname) ||
' TO someuser AS dba;'
FROM "informix".systables
WHERE tabid >= 100;" |
sqlcmd -d dbname -f -
Las barras invertidas adicionales son necesarias para evitar el shell. Las opciones ' -f -
' no son estrictamente necesarias, pero hacen explícito que el segundo SQLCMD leerá de la entrada estándar. Si usa DB-Access, debe preocuparse por la verborrea que genera, que es la razón por la que escribí SQLCMD en primer lugar.
Claramente, esta solución se puede programar y generalizar con bastante facilidad; solo debe tener cuidado con el uso de las comillas.
Uso de roles
Otra opción es crear un rol que tenga todos los permisos que desee y luego otorgar ese rol a los usuarios según sea necesario. La desventaja de esto es que su software necesita establecer el rol para que las personas que se conectan tengan ese privilegio. Una posibilidad es establecer la función de solo selección como la función predeterminada para cada usuario.
Uso de Server Studio Java Edition
SSJE tiene herramientas de administración de privilegios para simplificar esta tarea.
Uso de Open Admin Too también
OAT tiene herramientas para ayudar con la gestión de privilegios.