es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

EJECUTAR COMO USUARIO en DB2

Estamos intentando depurar una aplicación web muy antigua que utiliza DB2.

Me gustaría ejecutar un seguimiento para ver qué sucede cuando hago clic en un botón, pero tan pronto como lo intento, recibo este error:

“`create event monitor …….. for statement where AUTH_ID=’…….’ write to table
"USER" does not have privilege to perform operation "CREATE EVENT MONITOR".. SQLCODE=-552, SQLSTATE=42502,

<pre><code><br />Es evidente para mí que nuestro usuario no tiene suficientes privilegios para ejecutar un seguimiento.

En T-SQL hay una forma de suplantar a otro usuario:

“`USE AdventureWorks2019
GO
EXECUTE AS USER = ‘Test’;
SELECT * FROM Customer;
REVERT;

Me gustaría saber si hay un comando similar en DB2.

El objetivo es intentar ejecutar algo parecido a SQL Server Profiler para DB2 y capturar las consultas.

Sí, ya intenté ejecutar GRANT DBADM ON DATABASE TO USER E.....O y, por supuesto, el sistema respondió:

"E.....O" does not have the privilege to perform operation "GRANT".. SQLCODE=-552, SQLSTATE=42502, DRIVER=3.69.56

Estamos atrapados y no podemos avanzar porque no podemos saber cómo funcionan las consultas. Pedir más privilegios a nuestro usuario no es una opción, ya que estamos migrando a un cliente de un competidor a nuestro lado.

Lo que estoy intentando hacer es una especie de “elevación de privilegios” sin cometer ningún delito.

También pensé en conectarme a la base de datos de DB2 desde SQL Server y utilizar PolyBase, pero hasta donde sé, esta función solo me permite hacer consultas y no puedo capturar los parámetros.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no hay un comando equivalente directo a EXECUTE AS USER en DB2. Sin embargo, hay algunas soluciones alternativas que puedes intentar para lograr el mismo resultado.

    Una opción es crear un procedimiento almacenado con los privilegios necesarios y ejecutar la traza desde dentro del procedimiento almacenado. De esta manera, el usuario que invoca el procedimiento almacenado no necesita tener privilegios directos sobre los objetos de TRAZA.

    Otra opción es utilizar el comando SET SESSION AUTHORIZATION para hacerse pasar por otro usuario. Este comando cambia la identificación de autorización de la sesión actual al usuario especificado, lo cual se puede utilizar para ejecutar la traza. Sin embargo, esto requiere que el usuario suplantado tenga los privilegios necesarios para ejecutar la traza.

    Si ninguna de estas opciones funciona para ti, es posible que debas considerar enfoques alternativos para depurar la aplicación. Por ejemplo, podrías intentar registrar las instrucciones SQL de la aplicación en un archivo o tabla, o utilizar una herramienta como db2trc para capturar una traza a nivel de sistema.

    En cualquier caso, es importante asegurarse de no violar ninguna política de seguridad o cumplimiento al intentar depurar la aplicación. Si no estás seguro acerca del enfoque correcto, siempre es una buena idea consultar con los expertos en seguridad y cumplimiento de tu organización.

Comments are closed.