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.

Oracle 12c Cómo auditar el procedimiento almacenado especificado para el usuario especificado

Me gustaría auditar un procedimiento específico para un usuario específico.
Por ejemplo, tengo un procedimiento almacenado prcusererror y tengo un usuario cuyo nombre es Ktd.
Cuando el usuario Ktd ejecute el procedimiento prcusererror, se debe auditar.

No puedo usar un desencadenador (trigger). Además, no puedo usar la auditoría de granularidad fina para la ejecución.
¿Puedes ayudarme, por favor?

Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en Oracle con especialización en Oracle12c, hay varias opciones que puedes considerar para auditar el procedimiento específico de un usuario sin usar un disparador y sin usar la auditoría de granularidad fina.

    Una opción es utilizar la función de auditoría incorporada de Oracle. Esto te permite rastrear actividades específicas en la base de datos, incluyendo operaciones en objetos específicos como procedimientos. Para habilitar la auditoría para el procedimiento, puedes utilizar el paquete AUDIT o DBMS_FGA. Por ejemplo, para auditar cuando el usuario Ktd ejecuta el procedimiento prc_user_error, puedes utilizar el siguiente comando:

    AUDIT EXECUTE ON prc_user_error BY Ktd;
    

    Esto generará registros de auditoría cada vez que el usuario especificado ejecute el procedimiento.

    Otra opción es crear un procedimiento envolvente para el procedimiento prc_user_error que realice la auditoría. El procedimiento envolvente puede llamar al procedimiento original e insertar registros de auditoría en una tabla de auditoría separada. Por ejemplo, puedes crear un procedimiento llamado prc_user_error_audit que se vea así:

    CREATE OR REPLACE PROCEDURE prc_user_error_audit
    IS
    BEGIN
      -- insertar registro de auditoría aquí
      INSERT INTO tabla_de_auditoría (nombre_de_usuario, nombre_del_procedimiento, fecha_de_ejecución)
      VALUES ('Ktd', 'prc_user_error', SYSDATE);
    
      -- llamar al procedimiento original
      prc_user_error;
    END;
    

    Luego, puedes conceder privilegios de ejecución en el procedimiento envolvente al usuario Ktd en lugar del procedimiento original. Esto asegurará que cada vez que el usuario Ktd ejecute el procedimiento, tanto el procedimiento original como la inserción del registro de auditoría se ejecuten.

    Estas son algunas soluciones posibles para auditar procedimientos específicos para usuarios específicos sin usar un disparador y sin usar la auditoría de granularidad fina. Elige la opción que mejor se adapte a tus necesidades e impleméntala en consecuencia.

Comments are closed.