SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Instituto Profesional DuocUC
Escuela de Ingeniería




    Oracle Database Security




             Jaime Amigo P. © 2006, Santiago - Chile
Instituto Profesional DuocUC
      Escuela de Ingeniería


                         Objetivos


Después de completar esta lección, usted deberá
saber lo siguiente:
 • Aplicar El Principio del Menor Privilegio
 • Administrar cuentas por defecto
 • Implementar características de seguridad
   estandares
 • Auditar la actividad de una base de datos




                                                  2
Instituto Profesional DuocUC
                   Escuela de Ingeniería


                     Seguridad de Base de Datos

         Un sistema seguro, garantiza la confidencialidad de
         los datos que contiene. Hay varios aspectos de
         seguridad a considerar:
          • Acceso restringido a datos y servicios
          • Autentificación de usuarios
          • Monitoreo de actividades sospechosas




Seguridad de Base de Datos
 Oracle Database 10g provee el mejor framework de la industria para un sistema
 seguro, pero para que ese framework sea efectivo, el administrador de base de datos
 debe seguir buenas prácticas y estar continuamente monitoreando la actividad de la
 base de datos.
 Restringiendo acceso a los Datos y Servicios
 Todos los usuarios no pueden tener acceso a todos los datos. Dependiendo que está
 almacenado en la base de datos, restringuir el acceso a ellos debe ser una regla
 inquebrantable. Estas restricciones pueden ser por requerimientos del negocio, por
 restricciones legales o espectativas del cliente. Información de tarjetas de crédito,
 datos de salud, información de identidad, etc, deben ser protegidas para acceso no
 autorizado. Oracle provee una gran gama de controles para limitar el acceso a una
 base de datos. Restricción de acceso debe aplicar el “Principio del Menor Privilegio”.




                                                                                          3
Seguridad de Base de Datos (continuación)
 Autentificación de usuarios
 Para hacer cumplir los controles de acceso el sistema debe primero saber quién esta
 tratando de accesar los datos. Una autentificación comprometida puede hacer el
 resto de las otras precauciones de seguridad, inútiles. La manera mas simple de
 autentificar un usuario es a través del método de que este provee una password. Es
 preciso asegurarse que las password sigan cientras reglas simples para incrementar
 el nivel de seguridad de un sistema. Existen métodos de autentificación más robusta
 que solicitan al usuario algo, por ejemplo un certificado PKI (Public Key
 Infrastructure). Otro método de autentificación fuerte es utilizar un dispositivo
 biométrico como huella digital (fingerprint), lector de iris o diafragma (iris scan),
 patrones de la estructura del hueso (bone structure pattern), otros. Oracle soporta
 técnicas avanzadas de autentificación tales como token, biometría, certificados
 digitales y certificados basados a través de la opción Advanced Security del RDBMS.
 Las cuentas de usuario que no están en uso, deben ser bloqueadas pues
 comprometen la seguridad del sistema.
 Monitoreo para actividades sospechosas
 Usuario debidamente autentificados y autorizados algunas veces pueden
 comprometer la seguridad del sistema. Identificar actividades irregulares como un
 empleado que repentinamente comience a consultar grandes cantidades de
 información de tarjetas de créditos u otra información sensible en una empresa,
 puede ser el primer paso para detectar el hurto de información. Oracle provee un rico
 juego de herramientas de auditoria para seguir la pista a usuarios e identificar
 actividades sospechosas.




                                                                                         4
Instituto Profesional DuocUC
                    Escuela de Ingeniería


         Aplicando el Principio del Menor Privilegio

          •    Proteger el diccionario de datos
          •    Revocar privilegios PUBLIC innecesarios
          •    Restringir acceso a directorios a usuarios
          •    Limitar a los usuarios con privilegio de administrador
          •    Restringir autentificación de bases de datos remotas




Aplicando el Principio del Menor Privilegio
 Oracle Database 10g es líder en la industria en seguridad. Sin embargo, para maximizar las
 características de seguridad ofrecidas en cualquier ambiente de negocios, es imperativo que
 Oracle Database 10g a si mismo sea protegido y adecuadamente configurado.
 El uso adecuado de las características de seguridad internas y buenas prácticas de
 seguridad ayudaran a proteger la base de datos de ataques y proveer un ambiente seguro
 para operar.
 Practica del Principio del Menor Privilegio
 Este principio indica que un usuario solo debe tener los privilegios mínimos que sea
 requeridos para completar una tareas eficientemente. Esto permite reducir la posibilidad que
 usuarios accidentalmente o maliciosamente pueden modificar o ver datos para los cuales
 ellos no tienen los privilegios respectivos.
 La mayoria de la organizaciones de IT desean para sus ambientes de producción una
 política cerrada o basada en la Política del Menor Privilegio.




                                                                                                5
Instituto Profesional DuocUC
                        Escuela de Ingeniería


                     Proteger el Diccionario de Datos


            •     Proteger el diccionario de datos, para asegurarse este
                  parámetro debe estar inicializado en FALSE:

                       O7_DICTIONARY_ACCESSIBILITY = FALSE

            •     Esto previene que usuarios con privilegio de sistemas
                  ANY TABLE puedan accesar tablas del diccionario de
                  datos.
            •     Un seteo a FALSE previene que el usuario SYS se
                  logee de una manera difernte a SYSDBA
            •     El valor por defecto es FALSE. Si usted lo encuentra
                  seteado a TRUE, asegurese de tener una buena razón
                  de negocio para ello.




Proteger el Diccionario de Datos
  Usuarios que no son administradores no necesitan tener acceso al diccionario de datos, pero pueden
  accederlo si se le otorgan privilegios de sistema * ANY TABLE tal como, SELECT ANY TABLE o
  UPDATE ANY TABLE. EL diccionario de datos contiene información con la que un usuario malicioso
  podría alterar o dañar el sistema. Para excluir las tables del diccionario de datos del privilegio * ANY
  TABLE, el parámetro de inicialización O7_DICTIONARY_ACCESSIBILITY debe estar en FALSE.
  Si existe un usuario no administrador que requiera por alguna razón, acceder al diccionario de datos,
  se le puede otrogar acceso:
    • Usando el comando estándar GRANT para permitir el objetivo específico del diccionario de
         datos a accesar
    • Otorgando un privilegio de sistema SELECT ANY DICTIONARY para dar acceso al diccionario
         de datos completo
  En Oracle 10g y Oracle 9i, el valor del parámetro O7_DICTIONARY_ACCESSIBILITY es FALSE; sin
  embargo, en Oracle 8i e inferior, era TRUE; por lo tanto, si dispone de una versión más vieja es
  preciso setear a FALSE dicho parámetro para habilitar la protección del diccionario de datos.
  Precacución: Si este parámetro esta en TRUE, cualquier usuario con privilegio de sistema DROP
  ANY TABLE podría maliciosamente o accidentalmente borrar parte del diccionario de datos de una
  base de datos. Algunas instalaciones tienen por defecto todo habilitado y solo cierran accesos en
  casos que se requieran. Esto es sencillamente una muy mala práctica que pone en riesgo la
  seguridad de la información. Típicamente nos encontramos con este tipo de configuraciones en
  ambientes de aprendizaje o académicos.




                                                                                                             6
Instituto Profesional DuocUC
                    Escuela de Ingeniería

                    Revocar los Privilegios PUBLIC
                             innecesarios
          •     Revocar todos los privilegios y roles innecesarios de
                la base de datos del grupo PUBLIC.
          •     Muchos packages construidos tienen otorgrados
                EXECUTE TO PUBLIC.
          •     Execute sobre los siguientes package pueden ser
                revocados desde PUBLIC:
                –   UTL_SMTP
                –   UTL_TCP
                –   UTL_HTTP
                –   UTL_FILE
                –   DBMS_OBFUSCATION_TOOLKIT
          •     Ejemplo:

              SQL> REVOKE execute ON utl_file FROM PUBLIC;



Revocar los Privilegios PUBLIC innecesarios
 Revoque todos aquellos privilegios y roles innecesarios asociados a los usuarios que sean
 de acceso PUBLIC, ya que este tipo de grant son peligros.
 Privilegios como EXECUTE sobre package PL/SQL podrían habilitar a un usuario a ejecutar
 procedimientos que usted no desea realiza, por tanto, se deben otorgar los mínimos
 privilegios para la acción que ellos requieren sobre la base de datos. Muchos de los
 paquetes DBMS_* y UTL_* son instalados con el privilegio EXECUTE y grant PUBLIC.
 Siguiendo el principio del mínimo privilegio, debe revocar esos permisos para algunos
 paquetes mas sensitivos y otorgar permisos de ejecución individuales a usuarios que
 requieran de dichos paquetes. Restringir el acceso a privilegios públicos afecta a todos los
 usuarios..
 Los paquetes mas poderosos que pueden ser mal utilizados son:
  •   UTL_SMTP: Permite enviar mensajes vía mail usando la base de datos como Servidor
      de Correo SMTP (Simple Mail Transfer Protocol). Dejar este procedimiento con grant
      PUBLIC permitiría a un usuario no autorizado intercambiar mensajes de mail.
  •   UTL_TCP: Permite establecer conexiones de red entre el servidor de base de datos y
      cualquier otro servicio de red. Asi, datos arbitrariamente pueden ser enviados entre el
      servidor de base de datos y cualquier servicio de red de espera..




                                                                                                7
Revoke Unnecessary Privileges from PUBLIC (continued)
   •   UTL_HTTP: Permite que el servidor de base de datos solicite y recupere datos
       via HTTP (HyperText Transfer Protocol). Otorgando un gran PUBLIC a este
       paquete, permite enviar datos en formularios HTML (HyperText Markup
       Language) a sitios web maliciosos.
   •   UTL_FILE: Si esta configurado incorrectamente, permite acceso a nivel de texto
       a cualquier archivo del sistema operativo del servidor. A menudo, cuando esta
       correctamente configurado, este paquete no distingue entre llamadas de
       aplicaciones. Una aplicación con acceso a UTL_FILE puede escribir datos
       arbitrariamente dentro de la misma localización que es escrita por otra
       aplicación.
   •   DBMS_OBFUSCATION_TOOLKIT: Encripta datos. Generalmente, la mayoria
       de los usuarios no tiene privilegios para encriptar datos porque la encriptación
       de datos no es recuperable si los datos cifrados no son almacenados y
       administrados con seguridad.
 Este es un paquete muy útil para aplicaciones que lo utilizan, pero requiere una
 adecuada configuración para ser usado en forma segura. Por tanto, es
 absolutamente necesario revocar los grant PUBLIC y otorgarlo solo a aquellos
 usuarios o roles cuando lo requieran.
 Listando Objetos Ejecutables Públicos
 Use la siguiente consulta para listar los objetos propiedad del usuario SYS que tiene
 privilegio de EXECUTE con grant PUBLIC:
               SQL> SELECT table_name
                 2 FROM dba_tab_privs
                 3 WHERE owner='SYS'
                 4 AND privilege = 'EXECUTE'
                 5 AND grantee='PUBLIC'
                 6 /
               TABLE_NAME
               --------------------
               AGGXMLIMP
               AGGXMLINPUTTYPE
               ...
               XMLTYPEEXTRA
               XMLTYPEPI

             437 rows selected.

             SQL>




                                                                                          8
Instituto Profesional DuocUC
                     Escuela de Ingeniería


              Restringiendo Acceso a Directorios del
                 Sistema Operativos a Usuarios

         Parámetro de configuración UTL_FILE_DIR:
          •    Indica cuáles directorios del SO estan disponibles
               para PL/SQL
          •    Habilita a usuarios de bases de datos a leer y escribir
               desde diretorios sobre el servidor de bases de datos




Restringiendo Acceso a Directorios del Sistema Operativo a Usuarios
 El parámetro de configuración UTL_FILE_DIR indica en cual directorio del sistema operativo
 paquetes PL/SQL pueden leer o escribir. Por defecto, no hay directorios accesibles.
 Los privilegios del sistema operativo siguen aplicables. Los directorios que el usuario levanto
 en la base de datos solo pueden ser accesibles hasta que no se setee UTL_FILE_DIR.
 Para especificar múltiples directorios, el listado de directorios debe estar entre comillas y
 separado por comas (como se indica abajo). Este no es un parámetro dinámico y la instancia
 debe ser reiniciada para que los cambios tengan efecto. Recuerde no usar variables de
 ambiente en el path del directorio. La instancia no chequea que existan los directorios, por
 tanto, debe cambiar el parámetro o crear el directorio posteriormente.
 Todos los usuarios de PL/SQL pueden leer o escribir en los directorios especificados, todos
 los usuarios de PL/SQL deben confiar con la información en los directorios especificados por
 este parámtro.
 Los directorios listados deben también ser accesibles por la instancia Oracle.
 Precaución: Nunca setee UTL_FILE_DIR = *, porque esto habilita acceso a todos los
 directorios accesible por la instancia Oracle, incluyendo a los directorios de datos y redo log.




                                                                                                    9
Instituto Profesional DuocUC
                   Escuela de Ingeniería


                 Limitar Usuarios con Privilegios
                         Administrativos
      •    Restringir los siguientes tipos de privilegios:
            –   Grants de privilegios de sistema y objetos
            –   Conexiones privilegiadas, SYSDBA y SYSOPER
            –   Privilegios tipo DBA, tales como DROP ANY TABLE
            –   Permisos de tiempo de ejecución
      •    Ejemplo: Listar todos los usuarios con rol DBA:
          SQL> SELECT grantee FROM dba_role_privs
            2    WHERE granted_role = 'DBA';
          GRANTEE
          ------------------------------
          SYS
          SYSTEM


Limitar Usuarios con Privilegios Administrativos
 No otorge a usuarios de bases de datos mas privilegios que los necesarios. Al
 implementar el Principio del Mínimo Privilegio, restringir los siguientes tipos de
 privilegios:
   • Gran a privilegios de Sistemas y Objetos
   • Conexiones privilegiadas SYS, tales como SYSDBA y SYSOPER
   • Otros privilegios de tipo DBA, tales como DROP ANY TABLE
 Es importante determinar muy bien qué privilegios necesita cada usuario o grupo de
 estos, para otorgar sólo aquellos que son necesarios a su función dentro de la base
 de datos.
 Ver los usuarios que les han sido otorgados los privilegios de SYSDBA o SYSOPER,
 use la siguiente consulta:
             SQL> SELECT * FROM V$PWFILE_USERS;
             USERNAME                            SYSDBA SYSOPER
             ------------------------------ ------ -------
             SYS                          TRUE TRUE


 Hay muy pocas razones para que algún usuario que no sea SYS tenga privilegios de
 SYSDBA.


                                                                                       10
Instituto Profesional DuocUC
                    Escuela de Ingeniería


              Deshabilitar Autentificación Remota de
                        Sistema Operativo
          •    Autentificación remota debe ser solo usada cuando se
               confia en todos los clientes para autentificar a los
               usuarios
          •    Proceso de Autentificación Remota:
                – El usuario de base de datos es autentificado
                  externamente.
                – El sistema remoto autentifica al usuario.
                – El usuario ingresa a la base de datos sin
                  autentificaciones adicionales.
          •    Para deshabilitar, asegurese que el siguiente
               parámetro de inicialización esta seteado por defecto
               como sigue:

          REMOTE_OS_AUTHENT = FALSE



Deshabilitar Autentificación Remota de Sistema Operativo
 Esta característica esta deshabilitada por defecto. Cuando se habilita (TRUE), la
 autentificación externa de usuarios de base de datos, esta se delega al sistema
 remoto. Esto significa que la instancia confía implícitamente que los usuarios han
 sido autentificados adecuadamente en el cliente PC y no solicita una nueva
 credencial de autentificación. Los usuarios pueden conectarse a la base de datos sin
 proveer una password. El username del sistema operativo debe ser el mismo que el
 de la base de datos para poder ser autentificado externamente.




 La mayoría de los sistemas operativos remotos, especialmente las conexsiones de usuarios
 desde PC’s, no debería ejecutar autentificación confiando en ellos. Estos es una pobre practica
 de seguridad que debería modificarse.                                                             11
Instituto Profesional DuocUC
                    Escuela de Ingeniería


              Administrar Cuentas de Usuarios por
                            Defecto

          •   DBCA expira y
              bloquea todas las
              cuentes excepto:
                –   SYS
                –   SYSTEM
                –   SYSMAN
                –   DBSNMP
          •   Para una base de
              datos creada
              manualmente,
              bloquee y experire
              las cuentas no
              utilizadas.



Administrar Cuentas de Usuario por Defecto
 Oracle Database 10g se instala con un número de cuentas de usuarios por defecto. Estas
 cuentas estan pensadas para almacenar datos, PL/SQL propio, Código de Objetos Java con
 el propósito de no permitir conexiones a la base de datos. Cuando el DBCA es usado para
 crear una base de datos, automáticamente bloquea y expira todas las cuentas por defecto de
 usuarios de la base de datos, excepto las siguientes:
   •   SYS
   •   SYSTEM
   •   DBSNMP
   •   SYSMAN
 Oracle soporta la creación de base de datos a través de scripts. Muchas aplicaciones
 esperan que la base de datos este configurada de cierta manera y se automatiza la creación
 a través de un script. Las bases de datos creadas de este forma, no bloquean las cuentas
 por defecto. Valide que las cuentas no bloqueadas estan siendo usadas por conexiones a la
 base de datos y no simplemente para almacenar datos.




                                                                                              12
Instituto Profesional DuocUC
                       Escuela de Ingeniería


             Implementar Características Estandares
                   de Seguridad de Password



                                    Historial               Cuentas
                                       de                  Bloquedas
                                   Password


                   Usuario                                                    Seteo de
                                                                              Perfiles

                                Expiración y              Verificación
                              Envejecimiento de                de
                                 Password                  Password


Implementando Características Estandares de Seguridad de Password
  La administración de password Oracle esta implementada con perfiles de usuarios.
  Los perfiles proveen muchas características de seguridad incluyendo:
    • Account locking: Habilita el bloqueo automático de cuentas cuando el usuario falla un número
        especificado de intentos al momento de logearse al sistema.
    • Password aging and expiration: Habilita a la password de usuario a tener un tiempo de
        activación o duración, después de dicho periodo la password expira y debe ser cambiada.
    • Password history: Chequea la nuevas nueva password y verifica que no sean reusadas en un
        periodo de tiempo o un número específico de password a retener.
    • Password complexity verification: Hace un chequeo de la complejidad de la password y verifica
        que reuna ciertas características. El chequeo permite que las password sean lo suficientemente
        complejas para proveer protección de intrusos que puedan querer acceder al sistema.
  Recuerde que cuando se crea un nuevo usuario a ellos se les asigna el perfil DEFAULT a menos que
  otro perfil les sea asignado.




                                                                                                         13
Instituto Profesional DuocUC
                     Escuela de Ingeniería


                               Bloqueo de Cuentas

          Parámetro                            Descripción

          FAILED_LOGIN_ATTEMPTS                Número de intents fallidos de
                                               conexión antes de bloquearse la
                                               cuenta
          PASSWORD_LOCK_TIME                   Número de días que la cuenta esta
                                               bloqueda despues que el número
                                               de intentos fallidos se ha superado




Bloqueo de Cuentas
  Oracle bloquea automáticamente cuentas después que el usuario ha fallado su logeo en el valor
  señalado en FAILED_LOGIN_ATTEMPTS. La cuenta es automáticamente desbloqueada después de
  un instante de tiempo señalado en el valor PASSWORD_LOCK_TIME o bien, desbloqueda por el
  Administrador usando el comando ALTER USER.
  La cuenta de usuario puede ser explícitamente bloqueada con el comando ALTER USER o con
  Enterprise Manager. Cuando esto sucede, la cuenta no es automáticamente desbloqueda despues del
  tiempo indicado en PASSWORD_LOCK_TIME, pero tanto, debe ser manual desbloqueda por el DBA.
                SQL> ALTER USER hr ACCOUNT LOCK;
                User altered.
                SQL> CONNECT hr/hr
                ERROR: ORA-28000: the account is locked
                Warning: You are no longer connected to ORACLE.
                SQL> CONNECT / as sysdba
                Connected.
                SQL> ALTER USER hr ACCOUNT UNLOCK;
                User altered.




                                                                                                    14
Instituto Profesional DuocUC
                      Escuela de Ingeniería


          Expiración y Envejecimiento de Password


          Parámetero                               Descripción

          PASSWORD_LIFE_TIME                       Tiempo de validez de la password en
                                                   días después de ello, la password
                                                   expira
          PASSWORD_GRACE_TIME                      Periodo de gracia en días para
                                                   cambiar la password después del
                                                   primer intento de sesión y después
                                                   que la password ha expirado




Expiración y Envejecimiento de Password
 El administrador de la base de datos puede especificar un periodo de gracia
 PASSWORD_GRACE_TIME, el que comienza después del primer intento de sesión después que la
 password a expirado. Se despliega un mensaje de advertencia cada vez que el usuario intenta
 logearse hasta que el periodo de gracia vence. Si un usuario no cambia la password dentro del periodo
 de gracia, su cuenta queda bloqueada.
 Nota: Si la cuenta es una cuenta de aplicación (no accesible a traves de SQL*Plus), vefrificar que la
 aplicación esta habilitada para cambiar password antes de habilitar expiración de password. Muchos
 DBAs asignan perfiles separados a cuentas de usuarios de aplicaciones.
 Una cuenta de usuario puede ser expirada manualmente seteando la password a expirada.
                SQL> ALTER USER hr PASSWORD EXPIRE;
                User altered.
                SQL> CONNECT hr/hr
                ERROR: ORA-28001: the password has expired
                Changing password for hr
                New password: ********
                Retype new password: ********
                Password changed




                                                                                                         15
Instituto Profesional DuocUC
                   Escuela de Ingeniería


                          Historial de Password


         Parámetro                          Descripción

         PASSWORD_REUSE_TIME                Número de dias antes que la
                                            password pueda ser reusada
         PASSWORD_REUSE_MAX                 Número de password modificadas
                                            requeridas antes que la actual
                                            password pueda ser reusada




Historial de Password
 El Historial de Password se asegura que un usuario no pueda reusar una password
 después de un intervalo de tiempo. Estos chequeos pueden ser implementados
 usando uno de los siguientes valores:
   •  PASSWORD_REUSE_TIME: Especifica que el usuario no puede reusar una
      password hasta el número de días indicado.
   •  PASSWORD_REUSE_MAX: Específica el número de password modificadas
      antes que la password actual pueda ser reutilizada.
 Estos dos parámetros son mutuamente excluyentes, cuando un parámetro se setea a
 un valor el otro se setea a UNLIMITED (o DEFAULT si el perfil tiene seteado el valor
 UNLIMITED).




                                                                                        16
Instituto Profesional DuocUC
                  Escuela de Ingeniería


                      Verificación de Password


        Parámetro                          Descripción

        PASSWORD_VERIFY_                   Una función PL/SQL que asegura
        FUNCTION                           la complejidad de la password es
                                           chequeada antes de ser asignada
       La funcion de verificación de password debe:
        • Ser propiedad del usuario SYS
        • Retornar un valor Boolean (true o false)




Verificación de Password
 Antes de asignar una nueva password al usuario, una función PL/SQL puede ser
 invocada para verificar la validez de la password.
 Oracle provee una rutina de verificación por defecto que puede ser cargada
 ejecutando un script SQL localizado en $ORACLE_HOME/rdbms/admin/utlpwdmg.sql
 o el DBA puede escribir una función PL/SQL personalizada que reuna los
 requerimientos de seguridad necesarios.
 Además de las restricciones listadas en la diapositiva, funciones de verificación de
 password deben seguir las siguientes especificaciones para declarar variables de
 entrada:
            function_name(userid_parameter IN VARCHAR2,
                     password_parameter IN VARCHAR2,
                     old_password_parameter IN VARCHAR2)
            RETURN BOOLEAN
 Si la función de password levanta una excepción o llega a ser inválida, un mensaje
 de error es retornado cuando el comando ALTER USER o CREATE USER es
 finalizado.




                                                                                        17
Instituto Profesional DuocUC
                  Escuela de Ingeniería


             Función Provista para Verificación de
                Password: VERIFY_FUNCTION

        La función provista para la verificación de
        password, fuerza restricciones donde el:
         •    Minimo largo es 4 caracteres
         •    Password no puede ser igual al nombre del usuario
         •    Password debe tener al menos un alfabético, un
              número y un caracter especial
         •    Password debe diferir de las 3 passsword previas en
              al menos 3 letras




Función Provista para Verificación de Password: VERIFY_FUNCTION
 Oracle provee una función de verificación de complejidad de password llamada
 VERIFY_FUNCTION. Esta función es creada con el script
 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql. Esta función debe ser creado con el
 esquema SYS.
 Además de crear VERIFY_FUNCTION, con el script utlpwdmg también debe
 cambiar el perfil DEFAULT con el siguiente comando ALTER PROFILE:
             ALTER PROFILE default LIMIT
             PASSWORD_LIFE_TIME 60
             PASSWORD_GRACE_TIME 10
             PASSWORD_REUSE_TIME 1800
             PASSWORD_REUSE_MAX UNLIMITED
             FAILED_LOGIN_ATTEMPTS 3
             PASSWORD_LOCK_TIME 1/1440
             PASSWORD_VERIFY_FUNCTION verify_function;




                                                                                18
Instituto Profesional DuocUC
                  Escuela de Ingeniería


                 Creando un Perfil de Password




Creando un Perfil de Password
 Para crear un perfil de password, abra Enterprise Manager y navege hasta la página
 Administration. Seleccione Profile y haga click en el botón Create.
 Valores comúnes para cada configuración pueden seleccionarse desde un listado de
 valores (icono linterna) o bien se ingresa el valor deseado.
 Todos los períodos de tiempo están expresados en días, pero pueden ser
 expresados como fracciones. Hay 1440 minutos en un día, así 5/1440 son 5 minutos.
 Borrando Perfiles de Password
 Si desea eliminar un perfil, todos los usuarios asignados a ese perfil seran
 automáticamente asignados al perfil por defecto.




                                                                                      19
Instituto Profesional DuocUC
                   Escuela de Ingeniería


                Asignando Usuarios a un Perfil de
                          Password




Asignando Usuarios a un Perfil de Password
 Para asignar un usuario a un perfile de password:
   1. Abra Enterprise Manager y navege a la página Administration.
   2. Seleccione Users. Seleccione el usuario que dese asignar a un perfil y haga
      click en el botón Edit.
   3. Desde el listado drop-down en profile, seleccione el perfil que desea aplicar al
      usuario y haga click en el botón Apply.
 Recuerde que un usuario puede solo tener asignado un perfil a la vez. Si un usuario
 esta logeado cuando se realiza un cambio en su perfil, los cambios no tienen efecto
 en este usuario hasta la siguiente sesión.
 La cuenta de usuario puede también ser bloqueada o expirada desde la pagina Edit
 User.




                                                                                         20
Instituto Profesional DuocUC
                       Escuela de Ingeniería


             Monitoreando Actividades Sospechosas


          Monitorear o auditar debe ser parte integral de los
          procedimientos de seguridad.
          Oracle incluye las siguientes herramientas para
          auditar:
           • Auditoria estándar de base de datos
           • Auditoria basada en valor
           • Auditoria fina (Fine-grained auditing (FGA))




Monitoreo para actividades sospechosas
 Oracle Database 10g provee 3 tipos diferentes de auditoria. El administrador puede auditar todas las
 acciones que tienen lugar dentro de una base de datos. Es importante recordar que la captura y
 registro de información sobre que esta aconteciendo en el sistema puede aumentar la carga de trabajo
 sobre el servidor. La auditoria puede ser focalizada sólo en aquellos eventos que nos interesa capturar
 o monitorear. De modo que la auditoria tenga el mínimo impacto en la performance del sistema. De
 cualquier otro modo, el impacto sobre el rendimiento del sistema es muy significativo.
 La auditoria estándar captura varias piezas de información acerca de eventos auditables, cuándo
 ocurrio el evento, qué usuario lo causo y cuál en máquina cliente estaba el usuario cuando sucedio el
 evento.
 La auditoria basada en valor, audita los cambios sobre los datos (insert, delete, update). Es una
 extensión a la auditoria estándar de base de datos, capturando no solo los eventos auditables cuando
 ocurren, sino también los valores que fueron insertados, borrados o modificados. La auditoria basada
 en valor se implementa a traves de triggers de base de datos.
 Auditoria fina (Fine-Grained Auditing (FGA)), audita sentencias SQL. FGA es una extensión a la
 auditoria estándar de base de datos, capturando la sentencia SQL actual que ha sido ejecutada.




                                                                                                           21
Instituto Profesional DuocUC
           Escuela de Ingeniería


      Comparación de Herramientas de
                Auditoria

Tipo de Auditoria        ¿Qué es auditado?           ¿Qué registra?

Estándar                 Uso de Privilegios          Conjunto Fijo de
                         incluyendo acceso a         Datos
                         Objetos
Basada en valores        Datos cambiados por         Definidas por el
                         sentencias DML              Administrador
De Granja Fina           Sentencias SQL (insert,     Conjunto fijo de
                         update, delete, y select)   Datos incluyendo
                         basadas sobre el            sentencias SQL
                         contenido




                                                                        22
Instituto Profesional DuocUC
                   Escuela de Ingeniería


             Auditoria Estándar de Base de Datos
        Habilitada a través del parámetro AUDIT_TRAIL
         • NONE: Deshabilita la recolección de registros
            auditables
         • DB: Habilita la auditoria con registros almacenados en
            la base de datos
         • OS: Habilita la auditoria con registros almacenados en
            el sistema operativo
        Se puede auditar:
         • Eventos de Login
         • Exercise of system privileges
         • Exercise of object privileges
         • Uso de sentencias SQL



Auditoria Estándar de Base de Datos
 Antes de usar la auditoria es preciso setear primeramente el parámetro
 AUDIT_TRAIL que indica la localización en el sistema operativo donde se
 almacenaran los registros de auditoria. El seteo normal de este parámetro es DB, lo
 que indica que los registros auditables seran almacenados en la tabla
 DBA_AUDIT_TRIAL.
 La auditoria puede capturar información sobre eventos de logins, ejecución de
 privilegios de sistemas y ejecución de privilegios de objetos. La información de
 auditoria puede focalizarse en el evento generado por el usuario o en el estado del
 evento (exitóso o no). El siguiente comando genera información de auditoria pero
 esta mal focalizado. Esta opción captura cualquier operación que afecte a cualquier
 tabla:
             SQL> AUDIT TABLE;
             Audit succeeded.
 Un mejor ejemplo de un comando de auditoria es (ya esta mas focalizado) :
             SQL> AUDIT DELETE ON hr.employees WHENEVER SUCCESSFUL;
             Audit succeeded.




                                                                                       23
Instituto Profesional DuocUC
                       Escuela de Ingeniería


                     Opciones específicas auditables

          Auditando sentencias SQL
            AUDIT table;

          Auditando privilegios de sistema (focalizado o no focalizado)
            AUDIT select any table, create any trigger;
            AUDIT select any table BY hr BY SESSION;
          Auditando privilegios de objetos (focalizado o no focalizado)
            AUDIT ALL on hr.employees;
            AUDIT UPDATE,DELETE on hr.employees BY ACCESS;

          Auditando sesiones

            AUDIT session whenever not successful;


Opciones específicas auditables
 Auditando sentencias SQL: La sentencia mostrada en la figura auditara cualquier sentencia que
 afecte a una tabla incluyendo CREATE TABLE, DROP TABLE, TRUNCATE TABLE, etc. Las
 auditorias sobre sentencias SQL pueden ser focalizadas al usuario o al estado (éxito o fracaso de la
 sentencia).
                SQL> AUDIT TABLE BY hr WHENEVER NOT SUCCESSFUL;
  Auditar el sistema de privilegios puede ser usado para chequear la ejecución de cualquier privilegio del
  sistema, por ejemplo, DROP ANY TABLE. La auditoria se puede focalizar por usuario o éxito o fracaso
  de la acción. Por defecto, cada vez que se ejecuta un privilegio de sistema un registro de auditoria es
  ejecutado. Es posible agrupar esos eventos para que solo se registre uno por sesión (de esta forma si
  hay 100,000 actualizaciones de registro en una tabla que realiza un usuario, por tanto solo se registra
  un evento de auditoria). Si la cláusula BY SESSION no especificada, el valor por defecto es BY
  ACCESS. Considere usar la cláusula BY SESSION para limitar el registro de eventos de auditoria y no
  afectar el rendimiento del sistema.
  Auditoria de objetos puede ser usada para auditar acciones sobre tablas, vistas, procedimientos,
  secuencias, directorios, etc. Este tipo de auditorias puede enfocarse por éxito o fracaso y agruparse
  por sesión o acceso. Semejante a la auditoria de privilegios de sistema, el valor por defecto de
  agrupamiento es por sesión, por tanto, implícitamente debe indicarse BY ACCESS si se desea separar
  el registro de auditoria generada por cada acción.




                                                                                                             24
Especificando opciones de auditoria (Continuación)
  La opción AUDIT SESSION audita la creación de sesiones de usuario. Puede
  focalizarse la auditoria por usuario o éxito/fracaso. Esta opción es única ya que
  genera un registro de auditoria por cada sesión que se conecta a la base de datos.
  Un registro de auditoria es insertado en el registro de auditoria al momento de
  conexión y modificado al momento de desconectarse. La información acumulada
  sobre una sesión como el tiempo de conexión, tiempo de desconexión, I/O lógicos y
  físicos procesados y mucho mas, son almacenados en un simple registro de auditoria
  que corresponde a la sesión. En muchas bases de datos es común usar el comando
  AUDIT SESSION (no focalizado). En la mayoria de las bases de datos se debe
  configurar AUDIT SESSION WHENEVER NOT SUCCESSFUL porque permite
  detectar intentos indebidos de acceso a la base de datos.
  Nota: A menudo las opciones comienzan como no focalizadas porque no se tiene
  certeza que actividad debemos monitorear. La opción AUDIT ALL un “atajo”
  conveniente para auditar uma amplia gama de actividades en la base de datos.
               Alter          Audit        Comment           Delete

 Si la opción AUDIT ALL es Index con un username:
             Grant         usado         Insert              Lock
          SQL> AUDIT ALL BY hr;
               Read           Rename       Select            Update
 El usuario tendrá sentencias DDL auditables para los siguientes objetos:




Alter System           Cluster                Context                 Create Session

Database Link          Dimension              Directory               Index

Materialized View      Not Exists             Procedure               Profile

Public Database Link   Public Synonym         Role                    Rollback Segment

Sequence               Synonym                System Audit            System Grant

Table                  Tablespace             Trigger                 Type

User                   View




                                                                                         25
Instituto Profesional DuocUC
                    Escuela de Ingeniería


                    Viendo Opciones de Auditoria
           Vista Diccionario de Datos              Descripción


           ALL_DEF_AUDIT_OPTS                      Opciones por Defecto


           DBA_STMT_AUDIT_OPTS                     Opciones de auditoria de
                                                   Sentencias


           DBA_PRIV_AUDIT_OPTS                     Opciones Auditoria de
                                                   Privilegios


           DBA_OBJ_AUDIT_OPTS                      Opciones Auditoria Objetos
                                                   del Esquema



Viendo Opciones de Auditoria
 Para ver que opciones de auditoria se han seleccionado, liste las vistas mencionadas a
 continuación.
 DBA_STMT_AUDIT_OPTS y DBA_PRIV_AUDIT_OPTS contienen solo registros de
 sentencias y opciones de auditoria de privilegios que se han especificado.
 DBA_OBJ_AUDIT_OPTS contiene un registro por objeto auditable sin importar que opciones
 se han. La vista muestra una columna para cada opción auditable. Por ejemplo, opciones de
 auditoria para INSERT son mostradas en la columna INS.
 Opciones de auditoria son desplegadas como SUCCESSFUL/NOT SUCCESSFUL con 3
 posibles valores para cada estado:
  • -         Not audited
  • S         Collect audit records by session
  • A         Collect audit records by access
              SQL> SELECT object_name, object_type, ins, upd
              FROM dba_obj_audit_opts WHERE object_name = 'EMPLOYEES‘
              OBJECT_NAME OBJECT_TY INS UPD
              ------------ --------- --- ---
              EMPLOYEES TABLE A/S -/-




                                                                                             26
Instituto Profesional DuocUC
                    Escuela de Ingeniería


             Auditoria Estándar de Base de Datos
                       Habilitar Auditoria
                       de Base de Datos
                                               Archivo de               Usuario
             DBA
                                               Parámetros
                                                                 Ejecutar
                                 Especificar opciones auditoria Comandos
                                                   Database
                                                                         Server
                                                                        process
                                                   Opciones
                                                   Auditoria          Generar
                                                                  Registro Auditoria


                                                   Registros
                                                   Auditoria     Registrar
                                                                 Auditoria
                                   Revisar Información Auditoria   SO


Auditoria Estándar de Base de Datos
 Después que el administrador a habilitado la auditoria (con el parámetro AUDIT_TRAIL) y
 especificado sus opciones (con sentencias SQL como se mostro en páginas previas), la base
 de datos comienza a recolectar información de auditoria.
 Si AUDIT_TRAIL esta setea al Sistema Operativo, los registros de auditoria serán
 registrados en el sistema operativo en archivos. En un ambiente Windows, esto es un evento
 de log. En ambientes UNIX, los registros son almacenados en un archivo. La localización de
 este archivo esta especificado con el parámetro AUDIT_FILE_DEST. Asumiendo que
 AUDIT_TRAIL está setea a DB, los registros auditables son almacenados en una tabla que
 es parte del esquema SYS.
 El mantenimiento de los registros de auditoria es una tarea administrativa importante que
 debe ejecutar el DBA. Dependiendo den la focalización de la auditoria, la cantidad de
 información a registrar podría crecer enormemente de forma muy rápida. Sino se mantiene
 adecuadamente el registro de auditorias, esto puedo consumir mucho espacio de
 almacenamiento y puede afectar el rendimiento del sistema.




                                                                                              27
Instituto Profesional DuocUC
                   Escuela de Ingeniería


                   Viendo Resultados Auditables


         Vistas Auditables                Descripción

         DBA_AUDIT_TRAIL                  Audita todas las entradas

         DBA_AUDIT_EXISTS                 Registros para AUDIT EXISTS/NOT
                                          EXISTS

         DBA_AUDIT_OBJECT                 Registros objetos del esquema

         DBA_AUDIT_SESSION                Conexiones y desconexiones

         DBA_AUDIT_STATEMENT              Sentencias Auditables




Viendo Resultados Auditables
 El acceso a los registros auditables debe ser controlado rigurosamente pues puede
 contener información sensitiva para el negocio de la empresa. Usualmente la tarea
 de administrar los registros auditables es llevada por el DBA pero si necesita ser
 delegada se deben otorgar grant a DELETE_CATALOG_ROLE para borrar
 información.




                                                                                      28
Instituto Profesional DuocUC
                   Escuela de Ingeniería


                     Auditoria basada en Valores




           Cambios hechos          Dispara Triggers      Registro Auditoria es
             por Usuario                                  creado por Trigger




                                      Cambios de          E Insertado en
                                        Usuario            una tabla de
                                      Confirmados            auditoria




Auditoria Basada en Valores
 Los registros de auditoria de base de datos que hacen insert y delete sobre objetos
 auditables, no capturan los valores reales que fueron cambiados o insertados. La
 auditoria basada en valores es una extensión de la auditoria estándar y capturan los
 valores actuales que han sido modificados. Se activan disparadores (triggers)
 construidos en PL/SQL. Cuando un usuario inserta, modifica o elimina datos desde
 una tabla con el adecuado trigger asociado, el trigger trabaja en background y copia
 la información a una tabla diseñada para contener información de auditoria. La
 auditoria basada en valores, tiende a degradar más el rendimiento que la auditoria
 estándar, porque el código del trigger debe ejecutarse cada vez que ocurre una
 operación de insert, delete o update. La degradación dependerá mucho del la
 eficiencia del código PL/SQL del trigger. Este tipo de auditorias solo debe ser usada
 en situación donde la información capturada por la auditoria estándar de base de
 datos es insuficiente.




                                                                                         29
Auditoria basada en Valores (continuación)
 La clave de la auditoría basada en valores es el trigger auditable. A continuación un
 ejemplo:
        CREATE OR REPLACE TRIGGER system.hrsalary_audit
              AFTER UPDATE OF salary
              ON hr.employees
              REFERENCING NEW AS NEW OLD AS OLD
              FOR EACH ROW
           BEGIN
            IF :old.salary != :new.salary THEN
               INSERT INTO system.audit_employees
               VALUES (sys_context('userenv','os_user'), sysdate,
               sys_context('userenv','ip_address'),
               :new.employee_id ||' salary changed from '||:old.salary||
               ' to '||:new.salary);
          END IF;
           END;
        /
 Este trigger se focaliza en auditar y capturar los cambios sobre la columna salary de
 la tabla hr.employees. Cuando una fila es modificada, el trigger verifica la columna
 salary. Si el salario anterior no es igual al nuevo valor, entonces el trigger inserta un
 registro de auditoria en la tabla audit_employees (tabla creada en el esquema
 SYSTEM). El regitro de auditoria incluirá username, IP address desde donde se hace
 el cambio, la clave primaria que identifica el registro modificado y el actual salario que
 se ha modificado.
 Los triggers de base de datos puede ser usados también para capturar información
 de conexiones de usuarios en casos donde la auditoria estándar no entrege los datos
 suficientes. Con trigger de logon, el DBA puede capturar:
   - IP address de la persona que se conecta
   - Los primeros 48 caracteres del programa usado para conectarse a la instancia
   - Nombre del terminal usado para conectarse a la instancia




                                                                                              30
Instituto Profesional DuocUC
                       Escuela de Ingeniería


                                 Auditoria Fina (FGA)


            •    Monitoreo de acceso a datos sobre contexto
            •    Audita SELECT or INSERT,UPDATE,DELETE
            •    Puede ser linqueado a tabla o vista
            •    Puede disparar un procedimiento
            •    Es gestionado con el paquete DBMS_FGA


                     Policy: AUDIT_EMPS_SALARY
                     SELECT name, salary
                       FROM employees
                       WHERE
                         department_id = 10;                             employees                    31



Auditoria Fina - Fine-Grained Auditing (FGA)
 Los registros de auditoria de base de datos registran que una operación ha sucedido pero no capturan
 la información de la sentencia SQL que genero la operación.. La auditoria fina es una extensión que
 tiene la capacidad de capturan la sentencia SQL que consulta o manipula datos. FGA permite también
 auditar mas detalladamente que la auditoria estándar o la auditoria basada en valores.
 Las opciones de auditoria fina puede focalizarse por columnas individuales dentr de una tabla o vista y
 a menudo puede ser condicionada a que los registros auditables sean capaturados solo si se reunen
 ciertas especificaciones indicadas por el administrador o DBA.
 A diferencia de la auditoria basada en valores, FGA no requiere del uso de triggers y el impacto en el
 rendimiento es similar a la auditoria estándar.
 El administrador usa el paquete DBMS_FGA PL/SQL para crear una política de auditoria sobre una
 tabla o vista. Si alguna de las filas retornadas de una consulta complete la condición establecida en la
 auditoria y afecta a la columna auditable, entonces se genera un registro y se almacena dicha
 información. Opcionalmente dicho evento puede ejecutar un procedimiento almacenado. FGA
 automáticamente focaliza la auditoria a sentencias SELECT, en aquellas que retornan cientos de filas
 se genera solo un registro auditable.




                                                                                                            31
Instituto Profesional DuocUC
                   Escuela de Ingeniería


                                    Politica FGA
                                   dbms_fga.add_policy     (
                                     object_schema =>      'hr',
 •   Define:                         object_name    =>     'employees',
                                     policy_name    =>     'audit_emps_salary',
       – Criterio Auditoria          audit_condition=>     'dept_id=10',
       – Acción Auditoria            audit_column =>       'salary',
                                     handler_schema =>     'secure',
 •   Es creado con
                                     handler_module =>     'log_emps_salary',
     DBMS_FGA                        enable         =>     TRUE,
     .ADD_POLICY                     statement_types=>     'select' );



         SELECT name, job_id
           FROM employees;

         SELECT name, salary
           FROM employees                                      SECURE.LOG_
           WHERE                                               EMPS_SALARY
             department_id = 10;             employees                                  32



Política FGA
 El ejemplo de la figura muestra una Política FGA creada con el procedimiento
 DBMS_FGA.ADD_POLICY. El procedimiento acepta los siguientes argumentos:
 Policy Name
 Usted asigna un nombre a cada vez que crea una Política FGA. El ejemplo muestra
 el nombre AUDIT_EMPS_SALARY, usando los siguientes argumentos:
             policy_name => 'audit_emps_salary'
 Audit Condition
 La condición de auditoria es el predicado de SQL que define cuando el evento de
 auditoria debe ser disparado o llamado. En el ejemplo, todas las filas en las ventas
 de departamentos están auditadas,usando el siguiente argumento en la condición:
             audit_condition => 'department_id = 10'
 Statement Type
 ¿Cuál tipo de sentencia será auditada? Se puede auditar sentencias SELECT y
 (todas en un solo string) INSERT,UPDATE,DELETE.




                                                                                             32
Política FGA (continuación)
 Audit Column
 La columna auditable define el dato que esta siendo auditado para dicha tabla. Un evento auditable
 ocurre solo si la columna es incluida en la cláusula SELECT. En el ejemplo es la columna SALARY,
 usando los siguientes argumentos:
                audit_column => 'salary'
 Este argumento es opcional. Sino se especifica, entonces el argumento AUDIT_CONDITION
 determina cuando ocurre un evento a auditar.
 Object
 El objeto es la tabla o vista que esta siendo auditada. Hay 2 argumentos passados:
    • El esquema que contiene el objeto
    • El nombre del objeto
 En el ejemplo la tabla auditable hr.employees usando los siguientes argumentos:
                object_schema => 'hr'
                object_name => 'employees'
 Handler
 Es opcional y determina el procedimiento PL/SQL a ejecutar si se requieren acciones adicionales a
 tomar cuando ocurra un evento auditable. Por ejemplo, el evento podría enviar una página de alerta al
 administrador. Sino se define el manejador de eventos, entonces la entrada del evento es insertada en
 el registro auditable. Si el manejador de eventos esta definido, entonces se inserta un registro en la
 bitacora de auditoria y se ejecuta el manejador de eventos.
 La entrada de auditoria incluye la política que causo el evento, el usuario que ejecuto la sentencia SQL
 y la sentencia SQL y sus variables o parámetros que la componen.
 El administrador de eventos es pasado como 2 argumentos:
    • El esquema que contiene el programa PL/SQL
    • El nomrbre del programa PL/SQL
 El ejemplo ejecuta el procedimiento SECURE.LOG_EMPS_SALARY usando los siguientes
 argumentos:
                handler_schema => 'secure'
                handler_module => 'log_emps_salary'
 Status
 El estado indica si la política FGA esta permitida o habilitada. En el ejemplo, los siguientes argumentos
 estan habilitados para la política:
                enable => TRUE




                                                                                                             33
Instituto Profesional DuocUC
                   Escuela de Ingeniería


                         Paquete DBMS_FGA

          • Use DBMS_FGA
          Subprograma             to maintain FGA policies
                                   Descripción
          • Grant the
         ADD_POLICY   execute privilege only toel predicado como
                              Crea politica usando administrators
                              la condición de auditoria
          • Includes the following subprograms:
         DROP_POLICY                 Borra una política
         ENABLE_POLICY               Habilita una politica
         DISABLE_POLICY              Deshabilita una política




Paquete DBMS_FGA
 El paquete DBMS_FGA es la herramienta de administración para funciones de
 auditoria fina. Privilegios de Execute sobre DBMS_FGA son necesarios para
 administrar políticas de auditoria fina. Dado que este tipo de auditoria puede contener
 información sensible para el negocio. Esos privilegios de execute sobre este package
 deben estar reservados solo para el administrador o DBA.




                                                                                           34
Instituto Profesional DuocUC
                   Escuela de Ingeniería

              Habilitando y Deshabilitando una Política FGA

          •     Habilitando una Política:


          dbms_fga.enable_policy (
            object_schema => 'hr',
            object_name   => 'employees',
            policy_name   => 'audit_emps_salary' );

          •     Deshabilitando una Política:

          dbms_fga.disable_policy (
            object_schema => 'hr',
            object_name   => 'employees',
            policy_name   => 'audit_emps_salary' );



Habilitando y Deshabilitando una Política FGA
 Deshabilitar una política FGA significa que la política no generará eventos auditables.
 Si desea que la política comience a registrar eventos, ustede deberá habilitarla
 nuevamente. Por defecto la política queda habilitada al momento de la creación. En
 el ejemplo se muestra como habilitar y deshabilitar una política. Para ambos
 procedimientos, todos los argumentos son requeridos.




                                                                                           35
Instituto Profesional DuocUC
                  Escuela de Ingeniería


                     Borrando una Política FGA



         SQL> EXEC dbms_fga.drop_policy ( -
         > object_schema => 'hr', -
         > object_name    => 'employees', -
         > policy_name    => 'audit_emps_salary');

         PL/SQL procedure successfully completed.

         SQL>




Borrando una Política
 Sino se desea seguir con una política, usted puede removerla con
 DBMS_FGA.DROP_POLICY. Todos los argumentos son requeridos.




                                                                    36
Instituto Profesional DuocUC
                        Escuela de Ingeniería


                      Disparando Eventos Auditables


            •     La siguiente sentencia SQL causa una auditoria:
             SELECT count(*)
               FROM hr.employees
               WHERE department_id = 10
                 AND salary > v_salary;

             SELECT salary
               FROM hr.employees;

            •     La siguiente sentencia no causa una auditoria:

             SELECT last_name
               FROM hr.employees
               WHERE department_id = 10;
                                                                                                         37



Disparando Eventos Auditables
  En general, la política de auditoria fina esta basada en columnas auditables y simpre predicados SQL
  definidos por el usuario. Durante el análisis de las condiciones de la política reunidas para la condición,
  la sentencia es auditada y si hay un evento a manejar, éste es disparado.
  La función de auditoria es ejecutada como una transacción autónoma. Cada política de auditoria se
  aplica individualmente. Es decir, mientras las filas estan siendo devueltas o modificadas, un registro de
  auditoria será generado y habrá un registro de auditoria por cada política para sentencias SQL.
  Ejemplos
  Los dos primeros ejemplos de la figura, producen un evento auditable perque accesan la columna
  salary y filas con department_id = 10. En el segundo ejemplo, Oracle se da cuenta que hay una política
  asociada a la columna salary que accesan a las filas del departamento 10, a pesar que department_id
  no es referenciado en la cláusila WHERE.
  En el último ejemplo, no se produce una auditoria porque no se accesa la columna salary. Si la
  columna salary no ha sido especificada como AUDIT_COLUMN cuando la política es creada, entonces
  la sentencia SELECT produciría un evento auditable.




                                                                                                                37
Instituto Profesional DuocUC
                   Escuela de Ingeniería


                     Vistas Diccionario de Datos


         Nombre de Vista                    Descripción
         DBA_FGA_AUDIT_TRAIL                Todos lso eventos FGA
         ALL_AUDIT_POLICIES                 Todas las políticas FGA para
                                            objetos accesados por el usuario
                                            actual
         DBA_AUDIT_POLICIES                 Todas las politicas en la base de
                                            datos
         USER_AUDIT_POLICIES                Todas las politicas FGA para
                                            objetos en el esquema del usuario
                                            actual




Vistas del Diccionario de datos
 Las entradas auditables de FGA se registran en una tabla separada de las auditorias
 de objetos y privilegios. Las entrada son registradas en la vista
 DBA_FGA_AUDIT_TRAIL.
 Hay otras 2 vistas que contienen definición de políticas: ALL_AUDIT_POLICIES,
 DBA_AUDIT_POLICIES, USER_AUDIT_POLICIES.




                                                                                       38
Instituto Profesional DuocUC
                  Escuela de Ingeniería

                       DBA_FGA_AUDIT_TRAIL
         SQL> SELECT to_char(timestamp, 'YYMMDDHH24MI')
           2            AS timestamp,
           3     db_user,
           4     policy_name,
           5     sql_bind,
           6     sql_text
           7   FROM dba_fga_audit_trail;

         TIMESTAMP DB_USER POLICY_NAME        SQL_BIND
         ---------- ------- ----------------- ----------
         SQL_TEXT
         -----------------------------------------------
         0201221740 SYSTEM AUDIT_EMPS_SALARY #1(4):1000
         SELECT count(*)
             FROM hr.employees
             WHERE department_id = 10
               AND salary > :b1


DBA_FGA_AUDIT_TRAIL
 Nombre             Descripción
 TIMESTAMP          Fecha y Hora de Ejecución
 DB_USER           Nombre del usuario de la base de datos
 OS_USER           Nombre del usuario del Sistema Operativo
 OBJECT_SCHEMA      Propietario del objeto auditable
 OBJECT_NAME        Nombre del objeto auditables
 POLICY_NAME        Nombre de la política que causo el evento auditable
 SCN          El SCN de la transacción
 SQL_TEXT     Sentencia SQL que causo el evento auditable
 SQL_BIND           Variable del evento auditable formateada como: #n(s):v:
                    Donde n es el número de la variable en la sentencia
                    s es el largo de la variabley v es el valor de la variable
 COMMENT$TEXT       Un comentario




                                                                                 39
DBA_FGA_AUDIT_TRAIL (continuación)
 Seleccionando desde la Auditoria FGA
 El siguiente ejemplo despliega 2 files de auditoria creadas para ejemplos válidos de páginas
 anteriores. La columna sql_bind en la segunda fila tiene un valor de #1(4):1000, que incluye las
 siguientes componentes:
   #1 Indica que este es la primera variable de ambiente en la sentencia.
   (4) Indica que la variable de ambiente tiene largo 4.
   1000 indica que la variable de ambiente tiene valor 1000.
 Ejemplo
 Este ejemplo es similar al visto en la figura, a menos que también incluya una política para fila sin un
 manejador de auditoria.
   SQL> COL timestamp FORMAT A10
        SQL> COL db_user FORMAT A7
        SQL> COL policy_name FORMAT A20
        SQL> COL sql_bind FORMAT A20
        SQL> COL sql_text FORMAT A60
        SQL>
        SQL> SELECT to_char(timestamp, 'YYMMDDHH24MI')
          2          AS timestamp,
          3 db_user,
          4 policy_name,
          5 sql_bind,
          6 sql_text
          7 FROM dba_fga_audit_trail;
        TIMESTAMP DB_USER POLICY_NAME                              SQL_BIND
        ---------- ------- -------------------- ------------------
        SQL_TEXT
        ----------------------------------------------------------
        0201221740 SYSTEM AUDIT_EMPS_SALARY #1(4):1000
        SELECT count(*)
            FROM hr.employees
            WHERE department_id = 10
             AND salary > :b1
        0201221741 SYSTEM AUDIT_EMPS_SALARY
        SELECT salary
          FROM hr.employees
        SQL>




                                                                                                            40
Instituto Profesional DuocUC
                    Escuela de Ingeniería


                                Pautas para FGA

          •    Para auditar todas las sentencias, use la condición
               null.
          •    Si intenta agregar una política que ya existe,
               aparecerá el error ORA-28101.
          •    Cuando se crea una política, la tabla o vista debe
               existir.
          •    Si la sintáxis de la condición de auditoria es inválida,
               un error ORA-28112 aparecerá cuando el objeto
               auditado sea accesado.
          •    Si la columna auditable no existe en la tabla, las filas
               no serán auditadas.
          •    Si el manejador de eventos no existe, no se devuelve
               ningún error y los registros auditables son creados.



Pautas para FGA
 Condición de Auditoria
 Cuando se crea una nueva política FGA, la condición por defecto es null, lo que
 significa que todas las sentencias sera auditadas.
 Error en Nombre de Políticas
 El nombre de la política debe ser único dentro de la base de datos. Las políticas no
 tienen propietario. Si un nombre duplicado es usado, usted recibe un mensaje de
 error cuando esta creando la política:
              ORA-28101: policy already exists
 Errores de Objetos Auditados
 La tabla o vista auditada deben existir cuando se crea la política. Sino existe, usted
 recibe un error como el siguiente:
              ORA-00942: table or view does not exist




                                                                                          41
Pautas para FGA (continuación)
 Errores de Condiciones Auditables
 Si la sintáxis de la condición es inválida, la política se creará sin errores, pero el
 siguiente mensaje aparece cuando el objeto es accesado:
              ORA-28112: failed to execute policy function
 Si la sintáxis de la condición es válida, pero es incorrecta, entonces las filas
 incorrectas se auditan.
 Errores de Columnas Auditables
 Si la columna a auditar no existe en la tabla, entonces la política se creará, sin
 embargo, no hay filas que serán auditadas porque la columna nunca será accesada.
 Si la columna a auditar es válida, pero incorrecta, entonces las filas incorrectas serán
 auditadas.
 Errores de Manejador de Eventos (Event Handler)
 Cuando la política hace referencia a un manejador de eventos que no existe, la
 política se creará, sin embargo, no habrá filas retornadas cuando ocurra un evento
 auditable.




                                                                                            42
Instituto Profesional DuocUC
                   Escuela de Ingeniería


           Auditando Usuarios SYSDBA y SYSOPER


        Usuarios con privilegios SYSDBA o SYSOPER privileges
        pueden conectarse a una base de datos cerrada.
         • El registro de auditoria debe ser almacenado fuera de
            la BD (es decir, SO).
         • Conexiones como SYSDBA o SYSOPER siempre deben
            ser auditadas.
         • Habilitar auditoria adicional de acciones de SYSDBA o
            SYSOPER con audit_sys_operations.
         • El control del registro de auditorias llevarlo con
            audit_file_dest. Default es:
               – $ORACLE_HOME/rdbms/audit (UNIX/Linux)
               – Windows Event Log (Windows)




Auditando usuarios SYSDBA y SYSOPER
 Los usuarios con privilegios SYSDBA y SYSOPER pueden subir y bajar una base de
 datos. Debido a que pueden hacer cambios mientras una base de datos esta
 cerrada, el registro de auditorias (bitácora) debe ser almacenado fuera de la base de
 datos. Oracle captura los eventos de login automáticamente para usuarios SYSDBA
 y SYSOPER, pero no captura nada más que el login a menos que este habilitada una
 auditoria específica.
 Habilitar la auditoria para usuarios SYSDBA y SYSOPER, se hace seteando un
 parametro de inicialización:
              audit_sys_operations=TRUE (default es FALSE)
 Si las operaciones del usuario SYS son auditadas, el parámetro de inicialización
 audit_file_dest indica dónde los regitros de esta bitácora serán almacenados. En
 plataforma Windows quedan por defecto en el Windows Event Log. En plataformas
 UNIX, os registros son almacenados en $ORACLE_HOME/rdbms/audit.




                                                                                         43
Instituto Profesional DuocUC
                  Escuela de Ingeniería


                  Actualizaciones de Seguridad


         •    Oracle coloca sus alertas de seguridad en su sitio web
              Oracle Technology Network Web:
                   http://otn.oracle.com/deploy/security/alerts.htm
         •    Los administradores y desarrolladores Oracle puede
              subscribirse para ser notificados sobre alertas críticas
              de seguridad a través de mail haciendo Click en el
              Link “Subscribe to Security Alerts Here”.




Actualizaciones de Seguridad
 Las alertas de seguridad Oracle contienen una descripción de las vulnerabilidades,
 riesgos posibles y grado de exposición asociado a la vulnerabilidad, aplicaciones
 afectadas y los posibles parches de seguridad a aplicar.
 Las alertas de seguridad son colocadas en el Sitio Web Oracle Technology Network y
 en el sitio Web de OracleMetaLink (MetaLink). Aunque las alertas de seguridad son
 de público conocimiento, solo los clientes registrados (Customer Support
 Identification (CSI ))en Oracle puede accesar y bajar los parches de seguridad que
 corrigen las falencias de seguridad.




                                                                                      44
Instituto Profesional DuocUC
Escuela de Ingeniería




         Fin de la Lección




             Jaime Amigo P. © 2006, Santiago - Chile

Weitere ähnliche Inhalte

Ähnlich wie 17 adm bases de datos abd5501 (04 unidad 3 oracle)

Abf leccion 14
Abf leccion 14Abf leccion 14
Abf leccion 14victdiazm
 
SEGUIRIDAD DE BASE DE DATOS
SEGUIRIDAD DE BASE DE DATOSSEGUIRIDAD DE BASE DE DATOS
SEGUIRIDAD DE BASE DE DATOSArgenis Riofrío
 
Integridad y seguridad de la informacion
Integridad y seguridad de la informacionIntegridad y seguridad de la informacion
Integridad y seguridad de la informacionGabo101101
 
Soluciones Oracle para el cumplimiento de laLOPD en sanidad
Soluciones Oracle para el cumplimiento de laLOPD en sanidadSoluciones Oracle para el cumplimiento de laLOPD en sanidad
Soluciones Oracle para el cumplimiento de laLOPD en sanidadEloy M. Rodriguez
 
avanttic - webinar: Oracle Seguridad-Gobierno de la Seguridad (25-06-2015)
avanttic - webinar: Oracle Seguridad-Gobierno de la Seguridad (25-06-2015)avanttic - webinar: Oracle Seguridad-Gobierno de la Seguridad (25-06-2015)
avanttic - webinar: Oracle Seguridad-Gobierno de la Seguridad (25-06-2015)avanttic Consultoría Tecnológica
 
Seguridad
SeguridadSeguridad
Seguridademnero
 
Propuesta y Responsabilidad de Personal
Propuesta y Responsabilidad de PersonalPropuesta y Responsabilidad de Personal
Propuesta y Responsabilidad de PersonalAmir Core
 
VenatasydesventajasSGBD.pdf
VenatasydesventajasSGBD.pdfVenatasydesventajasSGBD.pdf
VenatasydesventajasSGBD.pdfssuser948499
 
Las diez principales amenazas para las bases de datos
Las diez principales amenazas para las bases de datosLas diez principales amenazas para las bases de datos
Las diez principales amenazas para las bases de datosImperva
 
Grupo N°8 Ortiz Jessica y Peralvo Gimely
Grupo N°8 Ortiz Jessica y Peralvo GimelyGrupo N°8 Ortiz Jessica y Peralvo Gimely
Grupo N°8 Ortiz Jessica y Peralvo Gimelypatricia gallardo
 

Ähnlich wie 17 adm bases de datos abd5501 (04 unidad 3 oracle) (20)

Abf leccion 14
Abf leccion 14Abf leccion 14
Abf leccion 14
 
Base de datos
Base de datosBase de datos
Base de datos
 
SEGUIRIDAD DE BASE DE DATOS
SEGUIRIDAD DE BASE DE DATOSSEGUIRIDAD DE BASE DE DATOS
SEGUIRIDAD DE BASE DE DATOS
 
Integridad y seguridad de la informacion
Integridad y seguridad de la informacionIntegridad y seguridad de la informacion
Integridad y seguridad de la informacion
 
Sql4
Sql4Sql4
Sql4
 
ca
caca
ca
 
Ingrid 9-1
Ingrid 9-1Ingrid 9-1
Ingrid 9-1
 
Seguridad de base de datos
Seguridad de base de datosSeguridad de base de datos
Seguridad de base de datos
 
Seguridad de base de datos
Seguridad de base de datosSeguridad de base de datos
Seguridad de base de datos
 
Examadb
ExamadbExamadb
Examadb
 
Soluciones Oracle para el cumplimiento de laLOPD en sanidad
Soluciones Oracle para el cumplimiento de laLOPD en sanidadSoluciones Oracle para el cumplimiento de laLOPD en sanidad
Soluciones Oracle para el cumplimiento de laLOPD en sanidad
 
avanttic - webinar: Oracle Seguridad-Gobierno de la Seguridad (25-06-2015)
avanttic - webinar: Oracle Seguridad-Gobierno de la Seguridad (25-06-2015)avanttic - webinar: Oracle Seguridad-Gobierno de la Seguridad (25-06-2015)
avanttic - webinar: Oracle Seguridad-Gobierno de la Seguridad (25-06-2015)
 
Seguridad
SeguridadSeguridad
Seguridad
 
Propuesta y Responsabilidad de Personal
Propuesta y Responsabilidad de PersonalPropuesta y Responsabilidad de Personal
Propuesta y Responsabilidad de Personal
 
VenatasydesventajasSGBD.pdf
VenatasydesventajasSGBD.pdfVenatasydesventajasSGBD.pdf
VenatasydesventajasSGBD.pdf
 
Las diez principales amenazas para las bases de datos
Las diez principales amenazas para las bases de datosLas diez principales amenazas para las bases de datos
Las diez principales amenazas para las bases de datos
 
Gestores de base de datos
Gestores de base de datosGestores de base de datos
Gestores de base de datos
 
John p
John pJohn p
John p
 
Grupo N°8 Ortiz Jessica y Peralvo Gimely
Grupo N°8 Ortiz Jessica y Peralvo GimelyGrupo N°8 Ortiz Jessica y Peralvo Gimely
Grupo N°8 Ortiz Jessica y Peralvo Gimely
 
17988998.ppt
17988998.ppt17988998.ppt
17988998.ppt
 

17 adm bases de datos abd5501 (04 unidad 3 oracle)

  • 1. Instituto Profesional DuocUC Escuela de Ingeniería Oracle Database Security Jaime Amigo P. © 2006, Santiago - Chile
  • 2. Instituto Profesional DuocUC Escuela de Ingeniería Objetivos Después de completar esta lección, usted deberá saber lo siguiente: • Aplicar El Principio del Menor Privilegio • Administrar cuentas por defecto • Implementar características de seguridad estandares • Auditar la actividad de una base de datos 2
  • 3. Instituto Profesional DuocUC Escuela de Ingeniería Seguridad de Base de Datos Un sistema seguro, garantiza la confidencialidad de los datos que contiene. Hay varios aspectos de seguridad a considerar: • Acceso restringido a datos y servicios • Autentificación de usuarios • Monitoreo de actividades sospechosas Seguridad de Base de Datos Oracle Database 10g provee el mejor framework de la industria para un sistema seguro, pero para que ese framework sea efectivo, el administrador de base de datos debe seguir buenas prácticas y estar continuamente monitoreando la actividad de la base de datos. Restringiendo acceso a los Datos y Servicios Todos los usuarios no pueden tener acceso a todos los datos. Dependiendo que está almacenado en la base de datos, restringuir el acceso a ellos debe ser una regla inquebrantable. Estas restricciones pueden ser por requerimientos del negocio, por restricciones legales o espectativas del cliente. Información de tarjetas de crédito, datos de salud, información de identidad, etc, deben ser protegidas para acceso no autorizado. Oracle provee una gran gama de controles para limitar el acceso a una base de datos. Restricción de acceso debe aplicar el “Principio del Menor Privilegio”. 3
  • 4. Seguridad de Base de Datos (continuación) Autentificación de usuarios Para hacer cumplir los controles de acceso el sistema debe primero saber quién esta tratando de accesar los datos. Una autentificación comprometida puede hacer el resto de las otras precauciones de seguridad, inútiles. La manera mas simple de autentificar un usuario es a través del método de que este provee una password. Es preciso asegurarse que las password sigan cientras reglas simples para incrementar el nivel de seguridad de un sistema. Existen métodos de autentificación más robusta que solicitan al usuario algo, por ejemplo un certificado PKI (Public Key Infrastructure). Otro método de autentificación fuerte es utilizar un dispositivo biométrico como huella digital (fingerprint), lector de iris o diafragma (iris scan), patrones de la estructura del hueso (bone structure pattern), otros. Oracle soporta técnicas avanzadas de autentificación tales como token, biometría, certificados digitales y certificados basados a través de la opción Advanced Security del RDBMS. Las cuentas de usuario que no están en uso, deben ser bloqueadas pues comprometen la seguridad del sistema. Monitoreo para actividades sospechosas Usuario debidamente autentificados y autorizados algunas veces pueden comprometer la seguridad del sistema. Identificar actividades irregulares como un empleado que repentinamente comience a consultar grandes cantidades de información de tarjetas de créditos u otra información sensible en una empresa, puede ser el primer paso para detectar el hurto de información. Oracle provee un rico juego de herramientas de auditoria para seguir la pista a usuarios e identificar actividades sospechosas. 4
  • 5. Instituto Profesional DuocUC Escuela de Ingeniería Aplicando el Principio del Menor Privilegio • Proteger el diccionario de datos • Revocar privilegios PUBLIC innecesarios • Restringir acceso a directorios a usuarios • Limitar a los usuarios con privilegio de administrador • Restringir autentificación de bases de datos remotas Aplicando el Principio del Menor Privilegio Oracle Database 10g es líder en la industria en seguridad. Sin embargo, para maximizar las características de seguridad ofrecidas en cualquier ambiente de negocios, es imperativo que Oracle Database 10g a si mismo sea protegido y adecuadamente configurado. El uso adecuado de las características de seguridad internas y buenas prácticas de seguridad ayudaran a proteger la base de datos de ataques y proveer un ambiente seguro para operar. Practica del Principio del Menor Privilegio Este principio indica que un usuario solo debe tener los privilegios mínimos que sea requeridos para completar una tareas eficientemente. Esto permite reducir la posibilidad que usuarios accidentalmente o maliciosamente pueden modificar o ver datos para los cuales ellos no tienen los privilegios respectivos. La mayoria de la organizaciones de IT desean para sus ambientes de producción una política cerrada o basada en la Política del Menor Privilegio. 5
  • 6. Instituto Profesional DuocUC Escuela de Ingeniería Proteger el Diccionario de Datos • Proteger el diccionario de datos, para asegurarse este parámetro debe estar inicializado en FALSE: O7_DICTIONARY_ACCESSIBILITY = FALSE • Esto previene que usuarios con privilegio de sistemas ANY TABLE puedan accesar tablas del diccionario de datos. • Un seteo a FALSE previene que el usuario SYS se logee de una manera difernte a SYSDBA • El valor por defecto es FALSE. Si usted lo encuentra seteado a TRUE, asegurese de tener una buena razón de negocio para ello. Proteger el Diccionario de Datos Usuarios que no son administradores no necesitan tener acceso al diccionario de datos, pero pueden accederlo si se le otorgan privilegios de sistema * ANY TABLE tal como, SELECT ANY TABLE o UPDATE ANY TABLE. EL diccionario de datos contiene información con la que un usuario malicioso podría alterar o dañar el sistema. Para excluir las tables del diccionario de datos del privilegio * ANY TABLE, el parámetro de inicialización O7_DICTIONARY_ACCESSIBILITY debe estar en FALSE. Si existe un usuario no administrador que requiera por alguna razón, acceder al diccionario de datos, se le puede otrogar acceso: • Usando el comando estándar GRANT para permitir el objetivo específico del diccionario de datos a accesar • Otorgando un privilegio de sistema SELECT ANY DICTIONARY para dar acceso al diccionario de datos completo En Oracle 10g y Oracle 9i, el valor del parámetro O7_DICTIONARY_ACCESSIBILITY es FALSE; sin embargo, en Oracle 8i e inferior, era TRUE; por lo tanto, si dispone de una versión más vieja es preciso setear a FALSE dicho parámetro para habilitar la protección del diccionario de datos. Precacución: Si este parámetro esta en TRUE, cualquier usuario con privilegio de sistema DROP ANY TABLE podría maliciosamente o accidentalmente borrar parte del diccionario de datos de una base de datos. Algunas instalaciones tienen por defecto todo habilitado y solo cierran accesos en casos que se requieran. Esto es sencillamente una muy mala práctica que pone en riesgo la seguridad de la información. Típicamente nos encontramos con este tipo de configuraciones en ambientes de aprendizaje o académicos. 6
  • 7. Instituto Profesional DuocUC Escuela de Ingeniería Revocar los Privilegios PUBLIC innecesarios • Revocar todos los privilegios y roles innecesarios de la base de datos del grupo PUBLIC. • Muchos packages construidos tienen otorgrados EXECUTE TO PUBLIC. • Execute sobre los siguientes package pueden ser revocados desde PUBLIC: – UTL_SMTP – UTL_TCP – UTL_HTTP – UTL_FILE – DBMS_OBFUSCATION_TOOLKIT • Ejemplo: SQL> REVOKE execute ON utl_file FROM PUBLIC; Revocar los Privilegios PUBLIC innecesarios Revoque todos aquellos privilegios y roles innecesarios asociados a los usuarios que sean de acceso PUBLIC, ya que este tipo de grant son peligros. Privilegios como EXECUTE sobre package PL/SQL podrían habilitar a un usuario a ejecutar procedimientos que usted no desea realiza, por tanto, se deben otorgar los mínimos privilegios para la acción que ellos requieren sobre la base de datos. Muchos de los paquetes DBMS_* y UTL_* son instalados con el privilegio EXECUTE y grant PUBLIC. Siguiendo el principio del mínimo privilegio, debe revocar esos permisos para algunos paquetes mas sensitivos y otorgar permisos de ejecución individuales a usuarios que requieran de dichos paquetes. Restringir el acceso a privilegios públicos afecta a todos los usuarios.. Los paquetes mas poderosos que pueden ser mal utilizados son: • UTL_SMTP: Permite enviar mensajes vía mail usando la base de datos como Servidor de Correo SMTP (Simple Mail Transfer Protocol). Dejar este procedimiento con grant PUBLIC permitiría a un usuario no autorizado intercambiar mensajes de mail. • UTL_TCP: Permite establecer conexiones de red entre el servidor de base de datos y cualquier otro servicio de red. Asi, datos arbitrariamente pueden ser enviados entre el servidor de base de datos y cualquier servicio de red de espera.. 7
  • 8. Revoke Unnecessary Privileges from PUBLIC (continued) • UTL_HTTP: Permite que el servidor de base de datos solicite y recupere datos via HTTP (HyperText Transfer Protocol). Otorgando un gran PUBLIC a este paquete, permite enviar datos en formularios HTML (HyperText Markup Language) a sitios web maliciosos. • UTL_FILE: Si esta configurado incorrectamente, permite acceso a nivel de texto a cualquier archivo del sistema operativo del servidor. A menudo, cuando esta correctamente configurado, este paquete no distingue entre llamadas de aplicaciones. Una aplicación con acceso a UTL_FILE puede escribir datos arbitrariamente dentro de la misma localización que es escrita por otra aplicación. • DBMS_OBFUSCATION_TOOLKIT: Encripta datos. Generalmente, la mayoria de los usuarios no tiene privilegios para encriptar datos porque la encriptación de datos no es recuperable si los datos cifrados no son almacenados y administrados con seguridad. Este es un paquete muy útil para aplicaciones que lo utilizan, pero requiere una adecuada configuración para ser usado en forma segura. Por tanto, es absolutamente necesario revocar los grant PUBLIC y otorgarlo solo a aquellos usuarios o roles cuando lo requieran. Listando Objetos Ejecutables Públicos Use la siguiente consulta para listar los objetos propiedad del usuario SYS que tiene privilegio de EXECUTE con grant PUBLIC: SQL> SELECT table_name 2 FROM dba_tab_privs 3 WHERE owner='SYS' 4 AND privilege = 'EXECUTE' 5 AND grantee='PUBLIC' 6 / TABLE_NAME -------------------- AGGXMLIMP AGGXMLINPUTTYPE ... XMLTYPEEXTRA XMLTYPEPI 437 rows selected. SQL> 8
  • 9. Instituto Profesional DuocUC Escuela de Ingeniería Restringiendo Acceso a Directorios del Sistema Operativos a Usuarios Parámetro de configuración UTL_FILE_DIR: • Indica cuáles directorios del SO estan disponibles para PL/SQL • Habilita a usuarios de bases de datos a leer y escribir desde diretorios sobre el servidor de bases de datos Restringiendo Acceso a Directorios del Sistema Operativo a Usuarios El parámetro de configuración UTL_FILE_DIR indica en cual directorio del sistema operativo paquetes PL/SQL pueden leer o escribir. Por defecto, no hay directorios accesibles. Los privilegios del sistema operativo siguen aplicables. Los directorios que el usuario levanto en la base de datos solo pueden ser accesibles hasta que no se setee UTL_FILE_DIR. Para especificar múltiples directorios, el listado de directorios debe estar entre comillas y separado por comas (como se indica abajo). Este no es un parámetro dinámico y la instancia debe ser reiniciada para que los cambios tengan efecto. Recuerde no usar variables de ambiente en el path del directorio. La instancia no chequea que existan los directorios, por tanto, debe cambiar el parámetro o crear el directorio posteriormente. Todos los usuarios de PL/SQL pueden leer o escribir en los directorios especificados, todos los usuarios de PL/SQL deben confiar con la información en los directorios especificados por este parámtro. Los directorios listados deben también ser accesibles por la instancia Oracle. Precaución: Nunca setee UTL_FILE_DIR = *, porque esto habilita acceso a todos los directorios accesible por la instancia Oracle, incluyendo a los directorios de datos y redo log. 9
  • 10. Instituto Profesional DuocUC Escuela de Ingeniería Limitar Usuarios con Privilegios Administrativos • Restringir los siguientes tipos de privilegios: – Grants de privilegios de sistema y objetos – Conexiones privilegiadas, SYSDBA y SYSOPER – Privilegios tipo DBA, tales como DROP ANY TABLE – Permisos de tiempo de ejecución • Ejemplo: Listar todos los usuarios con rol DBA: SQL> SELECT grantee FROM dba_role_privs 2 WHERE granted_role = 'DBA'; GRANTEE ------------------------------ SYS SYSTEM Limitar Usuarios con Privilegios Administrativos No otorge a usuarios de bases de datos mas privilegios que los necesarios. Al implementar el Principio del Mínimo Privilegio, restringir los siguientes tipos de privilegios: • Gran a privilegios de Sistemas y Objetos • Conexiones privilegiadas SYS, tales como SYSDBA y SYSOPER • Otros privilegios de tipo DBA, tales como DROP ANY TABLE Es importante determinar muy bien qué privilegios necesita cada usuario o grupo de estos, para otorgar sólo aquellos que son necesarios a su función dentro de la base de datos. Ver los usuarios que les han sido otorgados los privilegios de SYSDBA o SYSOPER, use la siguiente consulta: SQL> SELECT * FROM V$PWFILE_USERS; USERNAME SYSDBA SYSOPER ------------------------------ ------ ------- SYS TRUE TRUE Hay muy pocas razones para que algún usuario que no sea SYS tenga privilegios de SYSDBA. 10
  • 11. Instituto Profesional DuocUC Escuela de Ingeniería Deshabilitar Autentificación Remota de Sistema Operativo • Autentificación remota debe ser solo usada cuando se confia en todos los clientes para autentificar a los usuarios • Proceso de Autentificación Remota: – El usuario de base de datos es autentificado externamente. – El sistema remoto autentifica al usuario. – El usuario ingresa a la base de datos sin autentificaciones adicionales. • Para deshabilitar, asegurese que el siguiente parámetro de inicialización esta seteado por defecto como sigue: REMOTE_OS_AUTHENT = FALSE Deshabilitar Autentificación Remota de Sistema Operativo Esta característica esta deshabilitada por defecto. Cuando se habilita (TRUE), la autentificación externa de usuarios de base de datos, esta se delega al sistema remoto. Esto significa que la instancia confía implícitamente que los usuarios han sido autentificados adecuadamente en el cliente PC y no solicita una nueva credencial de autentificación. Los usuarios pueden conectarse a la base de datos sin proveer una password. El username del sistema operativo debe ser el mismo que el de la base de datos para poder ser autentificado externamente. La mayoría de los sistemas operativos remotos, especialmente las conexsiones de usuarios desde PC’s, no debería ejecutar autentificación confiando en ellos. Estos es una pobre practica de seguridad que debería modificarse. 11
  • 12. Instituto Profesional DuocUC Escuela de Ingeniería Administrar Cuentas de Usuarios por Defecto • DBCA expira y bloquea todas las cuentes excepto: – SYS – SYSTEM – SYSMAN – DBSNMP • Para una base de datos creada manualmente, bloquee y experire las cuentas no utilizadas. Administrar Cuentas de Usuario por Defecto Oracle Database 10g se instala con un número de cuentas de usuarios por defecto. Estas cuentas estan pensadas para almacenar datos, PL/SQL propio, Código de Objetos Java con el propósito de no permitir conexiones a la base de datos. Cuando el DBCA es usado para crear una base de datos, automáticamente bloquea y expira todas las cuentas por defecto de usuarios de la base de datos, excepto las siguientes: • SYS • SYSTEM • DBSNMP • SYSMAN Oracle soporta la creación de base de datos a través de scripts. Muchas aplicaciones esperan que la base de datos este configurada de cierta manera y se automatiza la creación a través de un script. Las bases de datos creadas de este forma, no bloquean las cuentas por defecto. Valide que las cuentas no bloqueadas estan siendo usadas por conexiones a la base de datos y no simplemente para almacenar datos. 12
  • 13. Instituto Profesional DuocUC Escuela de Ingeniería Implementar Características Estandares de Seguridad de Password Historial Cuentas de Bloquedas Password Usuario Seteo de Perfiles Expiración y Verificación Envejecimiento de de Password Password Implementando Características Estandares de Seguridad de Password La administración de password Oracle esta implementada con perfiles de usuarios. Los perfiles proveen muchas características de seguridad incluyendo: • Account locking: Habilita el bloqueo automático de cuentas cuando el usuario falla un número especificado de intentos al momento de logearse al sistema. • Password aging and expiration: Habilita a la password de usuario a tener un tiempo de activación o duración, después de dicho periodo la password expira y debe ser cambiada. • Password history: Chequea la nuevas nueva password y verifica que no sean reusadas en un periodo de tiempo o un número específico de password a retener. • Password complexity verification: Hace un chequeo de la complejidad de la password y verifica que reuna ciertas características. El chequeo permite que las password sean lo suficientemente complejas para proveer protección de intrusos que puedan querer acceder al sistema. Recuerde que cuando se crea un nuevo usuario a ellos se les asigna el perfil DEFAULT a menos que otro perfil les sea asignado. 13
  • 14. Instituto Profesional DuocUC Escuela de Ingeniería Bloqueo de Cuentas Parámetro Descripción FAILED_LOGIN_ATTEMPTS Número de intents fallidos de conexión antes de bloquearse la cuenta PASSWORD_LOCK_TIME Número de días que la cuenta esta bloqueda despues que el número de intentos fallidos se ha superado Bloqueo de Cuentas Oracle bloquea automáticamente cuentas después que el usuario ha fallado su logeo en el valor señalado en FAILED_LOGIN_ATTEMPTS. La cuenta es automáticamente desbloqueada después de un instante de tiempo señalado en el valor PASSWORD_LOCK_TIME o bien, desbloqueda por el Administrador usando el comando ALTER USER. La cuenta de usuario puede ser explícitamente bloqueada con el comando ALTER USER o con Enterprise Manager. Cuando esto sucede, la cuenta no es automáticamente desbloqueda despues del tiempo indicado en PASSWORD_LOCK_TIME, pero tanto, debe ser manual desbloqueda por el DBA. SQL> ALTER USER hr ACCOUNT LOCK; User altered. SQL> CONNECT hr/hr ERROR: ORA-28000: the account is locked Warning: You are no longer connected to ORACLE. SQL> CONNECT / as sysdba Connected. SQL> ALTER USER hr ACCOUNT UNLOCK; User altered. 14
  • 15. Instituto Profesional DuocUC Escuela de Ingeniería Expiración y Envejecimiento de Password Parámetero Descripción PASSWORD_LIFE_TIME Tiempo de validez de la password en días después de ello, la password expira PASSWORD_GRACE_TIME Periodo de gracia en días para cambiar la password después del primer intento de sesión y después que la password ha expirado Expiración y Envejecimiento de Password El administrador de la base de datos puede especificar un periodo de gracia PASSWORD_GRACE_TIME, el que comienza después del primer intento de sesión después que la password a expirado. Se despliega un mensaje de advertencia cada vez que el usuario intenta logearse hasta que el periodo de gracia vence. Si un usuario no cambia la password dentro del periodo de gracia, su cuenta queda bloqueada. Nota: Si la cuenta es una cuenta de aplicación (no accesible a traves de SQL*Plus), vefrificar que la aplicación esta habilitada para cambiar password antes de habilitar expiración de password. Muchos DBAs asignan perfiles separados a cuentas de usuarios de aplicaciones. Una cuenta de usuario puede ser expirada manualmente seteando la password a expirada. SQL> ALTER USER hr PASSWORD EXPIRE; User altered. SQL> CONNECT hr/hr ERROR: ORA-28001: the password has expired Changing password for hr New password: ******** Retype new password: ******** Password changed 15
  • 16. Instituto Profesional DuocUC Escuela de Ingeniería Historial de Password Parámetro Descripción PASSWORD_REUSE_TIME Número de dias antes que la password pueda ser reusada PASSWORD_REUSE_MAX Número de password modificadas requeridas antes que la actual password pueda ser reusada Historial de Password El Historial de Password se asegura que un usuario no pueda reusar una password después de un intervalo de tiempo. Estos chequeos pueden ser implementados usando uno de los siguientes valores: • PASSWORD_REUSE_TIME: Especifica que el usuario no puede reusar una password hasta el número de días indicado. • PASSWORD_REUSE_MAX: Específica el número de password modificadas antes que la password actual pueda ser reutilizada. Estos dos parámetros son mutuamente excluyentes, cuando un parámetro se setea a un valor el otro se setea a UNLIMITED (o DEFAULT si el perfil tiene seteado el valor UNLIMITED). 16
  • 17. Instituto Profesional DuocUC Escuela de Ingeniería Verificación de Password Parámetro Descripción PASSWORD_VERIFY_ Una función PL/SQL que asegura FUNCTION la complejidad de la password es chequeada antes de ser asignada La funcion de verificación de password debe: • Ser propiedad del usuario SYS • Retornar un valor Boolean (true o false) Verificación de Password Antes de asignar una nueva password al usuario, una función PL/SQL puede ser invocada para verificar la validez de la password. Oracle provee una rutina de verificación por defecto que puede ser cargada ejecutando un script SQL localizado en $ORACLE_HOME/rdbms/admin/utlpwdmg.sql o el DBA puede escribir una función PL/SQL personalizada que reuna los requerimientos de seguridad necesarios. Además de las restricciones listadas en la diapositiva, funciones de verificación de password deben seguir las siguientes especificaciones para declarar variables de entrada: function_name(userid_parameter IN VARCHAR2, password_parameter IN VARCHAR2, old_password_parameter IN VARCHAR2) RETURN BOOLEAN Si la función de password levanta una excepción o llega a ser inválida, un mensaje de error es retornado cuando el comando ALTER USER o CREATE USER es finalizado. 17
  • 18. Instituto Profesional DuocUC Escuela de Ingeniería Función Provista para Verificación de Password: VERIFY_FUNCTION La función provista para la verificación de password, fuerza restricciones donde el: • Minimo largo es 4 caracteres • Password no puede ser igual al nombre del usuario • Password debe tener al menos un alfabético, un número y un caracter especial • Password debe diferir de las 3 passsword previas en al menos 3 letras Función Provista para Verificación de Password: VERIFY_FUNCTION Oracle provee una función de verificación de complejidad de password llamada VERIFY_FUNCTION. Esta función es creada con el script $ORACLE_HOME/rdbms/admin/utlpwdmg.sql. Esta función debe ser creado con el esquema SYS. Además de crear VERIFY_FUNCTION, con el script utlpwdmg también debe cambiar el perfil DEFAULT con el siguiente comando ALTER PROFILE: ALTER PROFILE default LIMIT PASSWORD_LIFE_TIME 60 PASSWORD_GRACE_TIME 10 PASSWORD_REUSE_TIME 1800 PASSWORD_REUSE_MAX UNLIMITED FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1/1440 PASSWORD_VERIFY_FUNCTION verify_function; 18
  • 19. Instituto Profesional DuocUC Escuela de Ingeniería Creando un Perfil de Password Creando un Perfil de Password Para crear un perfil de password, abra Enterprise Manager y navege hasta la página Administration. Seleccione Profile y haga click en el botón Create. Valores comúnes para cada configuración pueden seleccionarse desde un listado de valores (icono linterna) o bien se ingresa el valor deseado. Todos los períodos de tiempo están expresados en días, pero pueden ser expresados como fracciones. Hay 1440 minutos en un día, así 5/1440 son 5 minutos. Borrando Perfiles de Password Si desea eliminar un perfil, todos los usuarios asignados a ese perfil seran automáticamente asignados al perfil por defecto. 19
  • 20. Instituto Profesional DuocUC Escuela de Ingeniería Asignando Usuarios a un Perfil de Password Asignando Usuarios a un Perfil de Password Para asignar un usuario a un perfile de password: 1. Abra Enterprise Manager y navege a la página Administration. 2. Seleccione Users. Seleccione el usuario que dese asignar a un perfil y haga click en el botón Edit. 3. Desde el listado drop-down en profile, seleccione el perfil que desea aplicar al usuario y haga click en el botón Apply. Recuerde que un usuario puede solo tener asignado un perfil a la vez. Si un usuario esta logeado cuando se realiza un cambio en su perfil, los cambios no tienen efecto en este usuario hasta la siguiente sesión. La cuenta de usuario puede también ser bloqueada o expirada desde la pagina Edit User. 20
  • 21. Instituto Profesional DuocUC Escuela de Ingeniería Monitoreando Actividades Sospechosas Monitorear o auditar debe ser parte integral de los procedimientos de seguridad. Oracle incluye las siguientes herramientas para auditar: • Auditoria estándar de base de datos • Auditoria basada en valor • Auditoria fina (Fine-grained auditing (FGA)) Monitoreo para actividades sospechosas Oracle Database 10g provee 3 tipos diferentes de auditoria. El administrador puede auditar todas las acciones que tienen lugar dentro de una base de datos. Es importante recordar que la captura y registro de información sobre que esta aconteciendo en el sistema puede aumentar la carga de trabajo sobre el servidor. La auditoria puede ser focalizada sólo en aquellos eventos que nos interesa capturar o monitorear. De modo que la auditoria tenga el mínimo impacto en la performance del sistema. De cualquier otro modo, el impacto sobre el rendimiento del sistema es muy significativo. La auditoria estándar captura varias piezas de información acerca de eventos auditables, cuándo ocurrio el evento, qué usuario lo causo y cuál en máquina cliente estaba el usuario cuando sucedio el evento. La auditoria basada en valor, audita los cambios sobre los datos (insert, delete, update). Es una extensión a la auditoria estándar de base de datos, capturando no solo los eventos auditables cuando ocurren, sino también los valores que fueron insertados, borrados o modificados. La auditoria basada en valor se implementa a traves de triggers de base de datos. Auditoria fina (Fine-Grained Auditing (FGA)), audita sentencias SQL. FGA es una extensión a la auditoria estándar de base de datos, capturando la sentencia SQL actual que ha sido ejecutada. 21
  • 22. Instituto Profesional DuocUC Escuela de Ingeniería Comparación de Herramientas de Auditoria Tipo de Auditoria ¿Qué es auditado? ¿Qué registra? Estándar Uso de Privilegios Conjunto Fijo de incluyendo acceso a Datos Objetos Basada en valores Datos cambiados por Definidas por el sentencias DML Administrador De Granja Fina Sentencias SQL (insert, Conjunto fijo de update, delete, y select) Datos incluyendo basadas sobre el sentencias SQL contenido 22
  • 23. Instituto Profesional DuocUC Escuela de Ingeniería Auditoria Estándar de Base de Datos Habilitada a través del parámetro AUDIT_TRAIL • NONE: Deshabilita la recolección de registros auditables • DB: Habilita la auditoria con registros almacenados en la base de datos • OS: Habilita la auditoria con registros almacenados en el sistema operativo Se puede auditar: • Eventos de Login • Exercise of system privileges • Exercise of object privileges • Uso de sentencias SQL Auditoria Estándar de Base de Datos Antes de usar la auditoria es preciso setear primeramente el parámetro AUDIT_TRAIL que indica la localización en el sistema operativo donde se almacenaran los registros de auditoria. El seteo normal de este parámetro es DB, lo que indica que los registros auditables seran almacenados en la tabla DBA_AUDIT_TRIAL. La auditoria puede capturar información sobre eventos de logins, ejecución de privilegios de sistemas y ejecución de privilegios de objetos. La información de auditoria puede focalizarse en el evento generado por el usuario o en el estado del evento (exitóso o no). El siguiente comando genera información de auditoria pero esta mal focalizado. Esta opción captura cualquier operación que afecte a cualquier tabla: SQL> AUDIT TABLE; Audit succeeded. Un mejor ejemplo de un comando de auditoria es (ya esta mas focalizado) : SQL> AUDIT DELETE ON hr.employees WHENEVER SUCCESSFUL; Audit succeeded. 23
  • 24. Instituto Profesional DuocUC Escuela de Ingeniería Opciones específicas auditables Auditando sentencias SQL AUDIT table; Auditando privilegios de sistema (focalizado o no focalizado) AUDIT select any table, create any trigger; AUDIT select any table BY hr BY SESSION; Auditando privilegios de objetos (focalizado o no focalizado) AUDIT ALL on hr.employees; AUDIT UPDATE,DELETE on hr.employees BY ACCESS; Auditando sesiones AUDIT session whenever not successful; Opciones específicas auditables Auditando sentencias SQL: La sentencia mostrada en la figura auditara cualquier sentencia que afecte a una tabla incluyendo CREATE TABLE, DROP TABLE, TRUNCATE TABLE, etc. Las auditorias sobre sentencias SQL pueden ser focalizadas al usuario o al estado (éxito o fracaso de la sentencia). SQL> AUDIT TABLE BY hr WHENEVER NOT SUCCESSFUL; Auditar el sistema de privilegios puede ser usado para chequear la ejecución de cualquier privilegio del sistema, por ejemplo, DROP ANY TABLE. La auditoria se puede focalizar por usuario o éxito o fracaso de la acción. Por defecto, cada vez que se ejecuta un privilegio de sistema un registro de auditoria es ejecutado. Es posible agrupar esos eventos para que solo se registre uno por sesión (de esta forma si hay 100,000 actualizaciones de registro en una tabla que realiza un usuario, por tanto solo se registra un evento de auditoria). Si la cláusula BY SESSION no especificada, el valor por defecto es BY ACCESS. Considere usar la cláusula BY SESSION para limitar el registro de eventos de auditoria y no afectar el rendimiento del sistema. Auditoria de objetos puede ser usada para auditar acciones sobre tablas, vistas, procedimientos, secuencias, directorios, etc. Este tipo de auditorias puede enfocarse por éxito o fracaso y agruparse por sesión o acceso. Semejante a la auditoria de privilegios de sistema, el valor por defecto de agrupamiento es por sesión, por tanto, implícitamente debe indicarse BY ACCESS si se desea separar el registro de auditoria generada por cada acción. 24
  • 25. Especificando opciones de auditoria (Continuación) La opción AUDIT SESSION audita la creación de sesiones de usuario. Puede focalizarse la auditoria por usuario o éxito/fracaso. Esta opción es única ya que genera un registro de auditoria por cada sesión que se conecta a la base de datos. Un registro de auditoria es insertado en el registro de auditoria al momento de conexión y modificado al momento de desconectarse. La información acumulada sobre una sesión como el tiempo de conexión, tiempo de desconexión, I/O lógicos y físicos procesados y mucho mas, son almacenados en un simple registro de auditoria que corresponde a la sesión. En muchas bases de datos es común usar el comando AUDIT SESSION (no focalizado). En la mayoria de las bases de datos se debe configurar AUDIT SESSION WHENEVER NOT SUCCESSFUL porque permite detectar intentos indebidos de acceso a la base de datos. Nota: A menudo las opciones comienzan como no focalizadas porque no se tiene certeza que actividad debemos monitorear. La opción AUDIT ALL un “atajo” conveniente para auditar uma amplia gama de actividades en la base de datos. Alter Audit Comment Delete Si la opción AUDIT ALL es Index con un username: Grant usado Insert Lock SQL> AUDIT ALL BY hr; Read Rename Select Update El usuario tendrá sentencias DDL auditables para los siguientes objetos: Alter System Cluster Context Create Session Database Link Dimension Directory Index Materialized View Not Exists Procedure Profile Public Database Link Public Synonym Role Rollback Segment Sequence Synonym System Audit System Grant Table Tablespace Trigger Type User View 25
  • 26. Instituto Profesional DuocUC Escuela de Ingeniería Viendo Opciones de Auditoria Vista Diccionario de Datos Descripción ALL_DEF_AUDIT_OPTS Opciones por Defecto DBA_STMT_AUDIT_OPTS Opciones de auditoria de Sentencias DBA_PRIV_AUDIT_OPTS Opciones Auditoria de Privilegios DBA_OBJ_AUDIT_OPTS Opciones Auditoria Objetos del Esquema Viendo Opciones de Auditoria Para ver que opciones de auditoria se han seleccionado, liste las vistas mencionadas a continuación. DBA_STMT_AUDIT_OPTS y DBA_PRIV_AUDIT_OPTS contienen solo registros de sentencias y opciones de auditoria de privilegios que se han especificado. DBA_OBJ_AUDIT_OPTS contiene un registro por objeto auditable sin importar que opciones se han. La vista muestra una columna para cada opción auditable. Por ejemplo, opciones de auditoria para INSERT son mostradas en la columna INS. Opciones de auditoria son desplegadas como SUCCESSFUL/NOT SUCCESSFUL con 3 posibles valores para cada estado: • - Not audited • S Collect audit records by session • A Collect audit records by access SQL> SELECT object_name, object_type, ins, upd FROM dba_obj_audit_opts WHERE object_name = 'EMPLOYEES‘ OBJECT_NAME OBJECT_TY INS UPD ------------ --------- --- --- EMPLOYEES TABLE A/S -/- 26
  • 27. Instituto Profesional DuocUC Escuela de Ingeniería Auditoria Estándar de Base de Datos Habilitar Auditoria de Base de Datos Archivo de Usuario DBA Parámetros Ejecutar Especificar opciones auditoria Comandos Database Server process Opciones Auditoria Generar Registro Auditoria Registros Auditoria Registrar Auditoria Revisar Información Auditoria SO Auditoria Estándar de Base de Datos Después que el administrador a habilitado la auditoria (con el parámetro AUDIT_TRAIL) y especificado sus opciones (con sentencias SQL como se mostro en páginas previas), la base de datos comienza a recolectar información de auditoria. Si AUDIT_TRAIL esta setea al Sistema Operativo, los registros de auditoria serán registrados en el sistema operativo en archivos. En un ambiente Windows, esto es un evento de log. En ambientes UNIX, los registros son almacenados en un archivo. La localización de este archivo esta especificado con el parámetro AUDIT_FILE_DEST. Asumiendo que AUDIT_TRAIL está setea a DB, los registros auditables son almacenados en una tabla que es parte del esquema SYS. El mantenimiento de los registros de auditoria es una tarea administrativa importante que debe ejecutar el DBA. Dependiendo den la focalización de la auditoria, la cantidad de información a registrar podría crecer enormemente de forma muy rápida. Sino se mantiene adecuadamente el registro de auditorias, esto puedo consumir mucho espacio de almacenamiento y puede afectar el rendimiento del sistema. 27
  • 28. Instituto Profesional DuocUC Escuela de Ingeniería Viendo Resultados Auditables Vistas Auditables Descripción DBA_AUDIT_TRAIL Audita todas las entradas DBA_AUDIT_EXISTS Registros para AUDIT EXISTS/NOT EXISTS DBA_AUDIT_OBJECT Registros objetos del esquema DBA_AUDIT_SESSION Conexiones y desconexiones DBA_AUDIT_STATEMENT Sentencias Auditables Viendo Resultados Auditables El acceso a los registros auditables debe ser controlado rigurosamente pues puede contener información sensitiva para el negocio de la empresa. Usualmente la tarea de administrar los registros auditables es llevada por el DBA pero si necesita ser delegada se deben otorgar grant a DELETE_CATALOG_ROLE para borrar información. 28
  • 29. Instituto Profesional DuocUC Escuela de Ingeniería Auditoria basada en Valores Cambios hechos Dispara Triggers Registro Auditoria es por Usuario creado por Trigger Cambios de E Insertado en Usuario una tabla de Confirmados auditoria Auditoria Basada en Valores Los registros de auditoria de base de datos que hacen insert y delete sobre objetos auditables, no capturan los valores reales que fueron cambiados o insertados. La auditoria basada en valores es una extensión de la auditoria estándar y capturan los valores actuales que han sido modificados. Se activan disparadores (triggers) construidos en PL/SQL. Cuando un usuario inserta, modifica o elimina datos desde una tabla con el adecuado trigger asociado, el trigger trabaja en background y copia la información a una tabla diseñada para contener información de auditoria. La auditoria basada en valores, tiende a degradar más el rendimiento que la auditoria estándar, porque el código del trigger debe ejecutarse cada vez que ocurre una operación de insert, delete o update. La degradación dependerá mucho del la eficiencia del código PL/SQL del trigger. Este tipo de auditorias solo debe ser usada en situación donde la información capturada por la auditoria estándar de base de datos es insuficiente. 29
  • 30. Auditoria basada en Valores (continuación) La clave de la auditoría basada en valores es el trigger auditable. A continuación un ejemplo: CREATE OR REPLACE TRIGGER system.hrsalary_audit AFTER UPDATE OF salary ON hr.employees REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN IF :old.salary != :new.salary THEN INSERT INTO system.audit_employees VALUES (sys_context('userenv','os_user'), sysdate, sys_context('userenv','ip_address'), :new.employee_id ||' salary changed from '||:old.salary|| ' to '||:new.salary); END IF; END; / Este trigger se focaliza en auditar y capturar los cambios sobre la columna salary de la tabla hr.employees. Cuando una fila es modificada, el trigger verifica la columna salary. Si el salario anterior no es igual al nuevo valor, entonces el trigger inserta un registro de auditoria en la tabla audit_employees (tabla creada en el esquema SYSTEM). El regitro de auditoria incluirá username, IP address desde donde se hace el cambio, la clave primaria que identifica el registro modificado y el actual salario que se ha modificado. Los triggers de base de datos puede ser usados también para capturar información de conexiones de usuarios en casos donde la auditoria estándar no entrege los datos suficientes. Con trigger de logon, el DBA puede capturar: - IP address de la persona que se conecta - Los primeros 48 caracteres del programa usado para conectarse a la instancia - Nombre del terminal usado para conectarse a la instancia 30
  • 31. Instituto Profesional DuocUC Escuela de Ingeniería Auditoria Fina (FGA) • Monitoreo de acceso a datos sobre contexto • Audita SELECT or INSERT,UPDATE,DELETE • Puede ser linqueado a tabla o vista • Puede disparar un procedimiento • Es gestionado con el paquete DBMS_FGA Policy: AUDIT_EMPS_SALARY SELECT name, salary FROM employees WHERE department_id = 10; employees 31 Auditoria Fina - Fine-Grained Auditing (FGA) Los registros de auditoria de base de datos registran que una operación ha sucedido pero no capturan la información de la sentencia SQL que genero la operación.. La auditoria fina es una extensión que tiene la capacidad de capturan la sentencia SQL que consulta o manipula datos. FGA permite también auditar mas detalladamente que la auditoria estándar o la auditoria basada en valores. Las opciones de auditoria fina puede focalizarse por columnas individuales dentr de una tabla o vista y a menudo puede ser condicionada a que los registros auditables sean capaturados solo si se reunen ciertas especificaciones indicadas por el administrador o DBA. A diferencia de la auditoria basada en valores, FGA no requiere del uso de triggers y el impacto en el rendimiento es similar a la auditoria estándar. El administrador usa el paquete DBMS_FGA PL/SQL para crear una política de auditoria sobre una tabla o vista. Si alguna de las filas retornadas de una consulta complete la condición establecida en la auditoria y afecta a la columna auditable, entonces se genera un registro y se almacena dicha información. Opcionalmente dicho evento puede ejecutar un procedimiento almacenado. FGA automáticamente focaliza la auditoria a sentencias SELECT, en aquellas que retornan cientos de filas se genera solo un registro auditable. 31
  • 32. Instituto Profesional DuocUC Escuela de Ingeniería Politica FGA dbms_fga.add_policy ( object_schema => 'hr', • Define: object_name => 'employees', policy_name => 'audit_emps_salary', – Criterio Auditoria audit_condition=> 'dept_id=10', – Acción Auditoria audit_column => 'salary', handler_schema => 'secure', • Es creado con handler_module => 'log_emps_salary', DBMS_FGA enable => TRUE, .ADD_POLICY statement_types=> 'select' ); SELECT name, job_id FROM employees; SELECT name, salary FROM employees SECURE.LOG_ WHERE EMPS_SALARY department_id = 10; employees 32 Política FGA El ejemplo de la figura muestra una Política FGA creada con el procedimiento DBMS_FGA.ADD_POLICY. El procedimiento acepta los siguientes argumentos: Policy Name Usted asigna un nombre a cada vez que crea una Política FGA. El ejemplo muestra el nombre AUDIT_EMPS_SALARY, usando los siguientes argumentos: policy_name => 'audit_emps_salary' Audit Condition La condición de auditoria es el predicado de SQL que define cuando el evento de auditoria debe ser disparado o llamado. En el ejemplo, todas las filas en las ventas de departamentos están auditadas,usando el siguiente argumento en la condición: audit_condition => 'department_id = 10' Statement Type ¿Cuál tipo de sentencia será auditada? Se puede auditar sentencias SELECT y (todas en un solo string) INSERT,UPDATE,DELETE. 32
  • 33. Política FGA (continuación) Audit Column La columna auditable define el dato que esta siendo auditado para dicha tabla. Un evento auditable ocurre solo si la columna es incluida en la cláusula SELECT. En el ejemplo es la columna SALARY, usando los siguientes argumentos: audit_column => 'salary' Este argumento es opcional. Sino se especifica, entonces el argumento AUDIT_CONDITION determina cuando ocurre un evento a auditar. Object El objeto es la tabla o vista que esta siendo auditada. Hay 2 argumentos passados: • El esquema que contiene el objeto • El nombre del objeto En el ejemplo la tabla auditable hr.employees usando los siguientes argumentos: object_schema => 'hr' object_name => 'employees' Handler Es opcional y determina el procedimiento PL/SQL a ejecutar si se requieren acciones adicionales a tomar cuando ocurra un evento auditable. Por ejemplo, el evento podría enviar una página de alerta al administrador. Sino se define el manejador de eventos, entonces la entrada del evento es insertada en el registro auditable. Si el manejador de eventos esta definido, entonces se inserta un registro en la bitacora de auditoria y se ejecuta el manejador de eventos. La entrada de auditoria incluye la política que causo el evento, el usuario que ejecuto la sentencia SQL y la sentencia SQL y sus variables o parámetros que la componen. El administrador de eventos es pasado como 2 argumentos: • El esquema que contiene el programa PL/SQL • El nomrbre del programa PL/SQL El ejemplo ejecuta el procedimiento SECURE.LOG_EMPS_SALARY usando los siguientes argumentos: handler_schema => 'secure' handler_module => 'log_emps_salary' Status El estado indica si la política FGA esta permitida o habilitada. En el ejemplo, los siguientes argumentos estan habilitados para la política: enable => TRUE 33
  • 34. Instituto Profesional DuocUC Escuela de Ingeniería Paquete DBMS_FGA • Use DBMS_FGA Subprograma to maintain FGA policies Descripción • Grant the ADD_POLICY execute privilege only toel predicado como Crea politica usando administrators la condición de auditoria • Includes the following subprograms: DROP_POLICY Borra una política ENABLE_POLICY Habilita una politica DISABLE_POLICY Deshabilita una política Paquete DBMS_FGA El paquete DBMS_FGA es la herramienta de administración para funciones de auditoria fina. Privilegios de Execute sobre DBMS_FGA son necesarios para administrar políticas de auditoria fina. Dado que este tipo de auditoria puede contener información sensible para el negocio. Esos privilegios de execute sobre este package deben estar reservados solo para el administrador o DBA. 34
  • 35. Instituto Profesional DuocUC Escuela de Ingeniería Habilitando y Deshabilitando una Política FGA • Habilitando una Política: dbms_fga.enable_policy ( object_schema => 'hr', object_name => 'employees', policy_name => 'audit_emps_salary' ); • Deshabilitando una Política: dbms_fga.disable_policy ( object_schema => 'hr', object_name => 'employees', policy_name => 'audit_emps_salary' ); Habilitando y Deshabilitando una Política FGA Deshabilitar una política FGA significa que la política no generará eventos auditables. Si desea que la política comience a registrar eventos, ustede deberá habilitarla nuevamente. Por defecto la política queda habilitada al momento de la creación. En el ejemplo se muestra como habilitar y deshabilitar una política. Para ambos procedimientos, todos los argumentos son requeridos. 35
  • 36. Instituto Profesional DuocUC Escuela de Ingeniería Borrando una Política FGA SQL> EXEC dbms_fga.drop_policy ( - > object_schema => 'hr', - > object_name => 'employees', - > policy_name => 'audit_emps_salary'); PL/SQL procedure successfully completed. SQL> Borrando una Política Sino se desea seguir con una política, usted puede removerla con DBMS_FGA.DROP_POLICY. Todos los argumentos son requeridos. 36
  • 37. Instituto Profesional DuocUC Escuela de Ingeniería Disparando Eventos Auditables • La siguiente sentencia SQL causa una auditoria: SELECT count(*) FROM hr.employees WHERE department_id = 10 AND salary > v_salary; SELECT salary FROM hr.employees; • La siguiente sentencia no causa una auditoria: SELECT last_name FROM hr.employees WHERE department_id = 10; 37 Disparando Eventos Auditables En general, la política de auditoria fina esta basada en columnas auditables y simpre predicados SQL definidos por el usuario. Durante el análisis de las condiciones de la política reunidas para la condición, la sentencia es auditada y si hay un evento a manejar, éste es disparado. La función de auditoria es ejecutada como una transacción autónoma. Cada política de auditoria se aplica individualmente. Es decir, mientras las filas estan siendo devueltas o modificadas, un registro de auditoria será generado y habrá un registro de auditoria por cada política para sentencias SQL. Ejemplos Los dos primeros ejemplos de la figura, producen un evento auditable perque accesan la columna salary y filas con department_id = 10. En el segundo ejemplo, Oracle se da cuenta que hay una política asociada a la columna salary que accesan a las filas del departamento 10, a pesar que department_id no es referenciado en la cláusila WHERE. En el último ejemplo, no se produce una auditoria porque no se accesa la columna salary. Si la columna salary no ha sido especificada como AUDIT_COLUMN cuando la política es creada, entonces la sentencia SELECT produciría un evento auditable. 37
  • 38. Instituto Profesional DuocUC Escuela de Ingeniería Vistas Diccionario de Datos Nombre de Vista Descripción DBA_FGA_AUDIT_TRAIL Todos lso eventos FGA ALL_AUDIT_POLICIES Todas las políticas FGA para objetos accesados por el usuario actual DBA_AUDIT_POLICIES Todas las politicas en la base de datos USER_AUDIT_POLICIES Todas las politicas FGA para objetos en el esquema del usuario actual Vistas del Diccionario de datos Las entradas auditables de FGA se registran en una tabla separada de las auditorias de objetos y privilegios. Las entrada son registradas en la vista DBA_FGA_AUDIT_TRAIL. Hay otras 2 vistas que contienen definición de políticas: ALL_AUDIT_POLICIES, DBA_AUDIT_POLICIES, USER_AUDIT_POLICIES. 38
  • 39. Instituto Profesional DuocUC Escuela de Ingeniería DBA_FGA_AUDIT_TRAIL SQL> SELECT to_char(timestamp, 'YYMMDDHH24MI') 2 AS timestamp, 3 db_user, 4 policy_name, 5 sql_bind, 6 sql_text 7 FROM dba_fga_audit_trail; TIMESTAMP DB_USER POLICY_NAME SQL_BIND ---------- ------- ----------------- ---------- SQL_TEXT ----------------------------------------------- 0201221740 SYSTEM AUDIT_EMPS_SALARY #1(4):1000 SELECT count(*) FROM hr.employees WHERE department_id = 10 AND salary > :b1 DBA_FGA_AUDIT_TRAIL Nombre Descripción TIMESTAMP Fecha y Hora de Ejecución DB_USER Nombre del usuario de la base de datos OS_USER Nombre del usuario del Sistema Operativo OBJECT_SCHEMA Propietario del objeto auditable OBJECT_NAME Nombre del objeto auditables POLICY_NAME Nombre de la política que causo el evento auditable SCN El SCN de la transacción SQL_TEXT Sentencia SQL que causo el evento auditable SQL_BIND Variable del evento auditable formateada como: #n(s):v: Donde n es el número de la variable en la sentencia s es el largo de la variabley v es el valor de la variable COMMENT$TEXT Un comentario 39
  • 40. DBA_FGA_AUDIT_TRAIL (continuación) Seleccionando desde la Auditoria FGA El siguiente ejemplo despliega 2 files de auditoria creadas para ejemplos válidos de páginas anteriores. La columna sql_bind en la segunda fila tiene un valor de #1(4):1000, que incluye las siguientes componentes: #1 Indica que este es la primera variable de ambiente en la sentencia. (4) Indica que la variable de ambiente tiene largo 4. 1000 indica que la variable de ambiente tiene valor 1000. Ejemplo Este ejemplo es similar al visto en la figura, a menos que también incluya una política para fila sin un manejador de auditoria. SQL> COL timestamp FORMAT A10 SQL> COL db_user FORMAT A7 SQL> COL policy_name FORMAT A20 SQL> COL sql_bind FORMAT A20 SQL> COL sql_text FORMAT A60 SQL> SQL> SELECT to_char(timestamp, 'YYMMDDHH24MI') 2 AS timestamp, 3 db_user, 4 policy_name, 5 sql_bind, 6 sql_text 7 FROM dba_fga_audit_trail; TIMESTAMP DB_USER POLICY_NAME SQL_BIND ---------- ------- -------------------- ------------------ SQL_TEXT ---------------------------------------------------------- 0201221740 SYSTEM AUDIT_EMPS_SALARY #1(4):1000 SELECT count(*) FROM hr.employees WHERE department_id = 10 AND salary > :b1 0201221741 SYSTEM AUDIT_EMPS_SALARY SELECT salary FROM hr.employees SQL> 40
  • 41. Instituto Profesional DuocUC Escuela de Ingeniería Pautas para FGA • Para auditar todas las sentencias, use la condición null. • Si intenta agregar una política que ya existe, aparecerá el error ORA-28101. • Cuando se crea una política, la tabla o vista debe existir. • Si la sintáxis de la condición de auditoria es inválida, un error ORA-28112 aparecerá cuando el objeto auditado sea accesado. • Si la columna auditable no existe en la tabla, las filas no serán auditadas. • Si el manejador de eventos no existe, no se devuelve ningún error y los registros auditables son creados. Pautas para FGA Condición de Auditoria Cuando se crea una nueva política FGA, la condición por defecto es null, lo que significa que todas las sentencias sera auditadas. Error en Nombre de Políticas El nombre de la política debe ser único dentro de la base de datos. Las políticas no tienen propietario. Si un nombre duplicado es usado, usted recibe un mensaje de error cuando esta creando la política: ORA-28101: policy already exists Errores de Objetos Auditados La tabla o vista auditada deben existir cuando se crea la política. Sino existe, usted recibe un error como el siguiente: ORA-00942: table or view does not exist 41
  • 42. Pautas para FGA (continuación) Errores de Condiciones Auditables Si la sintáxis de la condición es inválida, la política se creará sin errores, pero el siguiente mensaje aparece cuando el objeto es accesado: ORA-28112: failed to execute policy function Si la sintáxis de la condición es válida, pero es incorrecta, entonces las filas incorrectas se auditan. Errores de Columnas Auditables Si la columna a auditar no existe en la tabla, entonces la política se creará, sin embargo, no hay filas que serán auditadas porque la columna nunca será accesada. Si la columna a auditar es válida, pero incorrecta, entonces las filas incorrectas serán auditadas. Errores de Manejador de Eventos (Event Handler) Cuando la política hace referencia a un manejador de eventos que no existe, la política se creará, sin embargo, no habrá filas retornadas cuando ocurra un evento auditable. 42
  • 43. Instituto Profesional DuocUC Escuela de Ingeniería Auditando Usuarios SYSDBA y SYSOPER Usuarios con privilegios SYSDBA o SYSOPER privileges pueden conectarse a una base de datos cerrada. • El registro de auditoria debe ser almacenado fuera de la BD (es decir, SO). • Conexiones como SYSDBA o SYSOPER siempre deben ser auditadas. • Habilitar auditoria adicional de acciones de SYSDBA o SYSOPER con audit_sys_operations. • El control del registro de auditorias llevarlo con audit_file_dest. Default es: – $ORACLE_HOME/rdbms/audit (UNIX/Linux) – Windows Event Log (Windows) Auditando usuarios SYSDBA y SYSOPER Los usuarios con privilegios SYSDBA y SYSOPER pueden subir y bajar una base de datos. Debido a que pueden hacer cambios mientras una base de datos esta cerrada, el registro de auditorias (bitácora) debe ser almacenado fuera de la base de datos. Oracle captura los eventos de login automáticamente para usuarios SYSDBA y SYSOPER, pero no captura nada más que el login a menos que este habilitada una auditoria específica. Habilitar la auditoria para usuarios SYSDBA y SYSOPER, se hace seteando un parametro de inicialización: audit_sys_operations=TRUE (default es FALSE) Si las operaciones del usuario SYS son auditadas, el parámetro de inicialización audit_file_dest indica dónde los regitros de esta bitácora serán almacenados. En plataforma Windows quedan por defecto en el Windows Event Log. En plataformas UNIX, os registros son almacenados en $ORACLE_HOME/rdbms/audit. 43
  • 44. Instituto Profesional DuocUC Escuela de Ingeniería Actualizaciones de Seguridad • Oracle coloca sus alertas de seguridad en su sitio web Oracle Technology Network Web: http://otn.oracle.com/deploy/security/alerts.htm • Los administradores y desarrolladores Oracle puede subscribirse para ser notificados sobre alertas críticas de seguridad a través de mail haciendo Click en el Link “Subscribe to Security Alerts Here”. Actualizaciones de Seguridad Las alertas de seguridad Oracle contienen una descripción de las vulnerabilidades, riesgos posibles y grado de exposición asociado a la vulnerabilidad, aplicaciones afectadas y los posibles parches de seguridad a aplicar. Las alertas de seguridad son colocadas en el Sitio Web Oracle Technology Network y en el sitio Web de OracleMetaLink (MetaLink). Aunque las alertas de seguridad son de público conocimiento, solo los clientes registrados (Customer Support Identification (CSI ))en Oracle puede accesar y bajar los parches de seguridad que corrigen las falencias de seguridad. 44
  • 45. Instituto Profesional DuocUC Escuela de Ingeniería Fin de la Lección Jaime Amigo P. © 2006, Santiago - Chile