martes, 30 de septiembre de 2014

Bases de Datos Virtuales (VPD)

Contexto de aplicación.

El contexto de aplicación es el namespace, quiere decir que es un contenedor en memoria (como una caja) que contiene atributos de solo lectura.
  • Cada sesión tiene su propio namespace, por lo que cada namespace es independiente de los otros.
  • Los atributos del namespace son almacenados por medio de un paquete PL/SQL.
  • Un paquete es una estructura que agrupa lógicamente otros objetos de PL/SQL relacionados entre sí, como procesos, funciones, variables, etc. en la base de datos.


Tipos de contextos.

Existen dos tipos de contextos.

  • Locales: Son utilizados únicamente para los inicios de sesión, en el cual se asigna un valor al paquete PL/SQL el cual es seteado al contexto de aplicación y leído por el PL/SQL. Estos namespace son guardados en el PGA.

  • Globales: Son utilizados para todos, en el cual se pueden setear los atributos desde una sesión para ponerle a otra sesión. Estos namespace son guardados en el SGA.

Pasos para Crear Contextos de Aplicación.

Descripción de create_context.gif sigue

  1. Crear o reemplazar el contexto.
  2. Crear el namespace para el contexto.
  3. Asociar el namespace con el paquete creado externamente que establece el contexto. Por defecto se crean en el esquema SYS.
  4. Se puede ejecutar la sentencia o utilizar la cláusula initialized o accessed.

Initialized permite especificar una entidad distinta de base de datos que puede inicializar el namespace del contexto. Puede ser:

  • Externally, indica que el namespace se puede inicializar utilizando una interfaz OCI al establecer sesión.

  • Globally, indica que el namespace se puede inicializar por el directorio LDAP cuando un usuario global se conecta a la base de datos.

Accessed Globally, indica que cualquier contexto de aplicación establecido en el namespace es accesible a través de toda la instancia.

Control de Acceso Granular (FGAC).

Las aplicaciones requieren el control del acceso a nivel de registro de datos, quiere decir que los usuarios deben ser capaces de ver sólo las filas que están autorizados.

Con el FGAC se pueden limitar el acceso a filas y columnas, por medio de una función que retorna un predicado para ser añadido a la sentencia como una condición.

Entre las ventajas del FGAC es la seguridad que brinda para que las personas puedan ver sólo las filas autorizadas. Su simplicidad, ya que se hace una sola vez y se ejecuta muchas veces. Flexibilidad y alto desempeño al ser dinámico.

Pasos para utilizar el FGAC

  1. Se realiza la consulta normal "SELECT * FROM empleados;"
  2. El servidor de la base de datos recibe la consulta, en ese momento llama a la función respectiva para que en función de algo le devuelva el predicado. " departamento_emp_id =3; "
  3. Se agrega el predicado a la consulta."SELECT * FROM empleados WHERE departamento_emp_id =3; "
  4. Se ejecuta la sentencia.

Bases de Datos virtuales (VPD)



Es una función de Oracle que permite crear políticas de seguridad para controlar el acceso a la base de datos a nivel de filas y columnas. Cada vez que un usuario accede a los datos de una tabla protegida, Oracle modifica la instruccion SQL del usuario, le agrega una clausula "WHERE" conocida con predicado que es devuelta de una función de la aplicación de la política de seguridad. Puede aplicar politicas a SELECT,INSERT,UPDATE,INDEX y DELETE.


Por ejemplo, un usuario realiza la siguiente consulta:
SELECT * FROM OE.ORDERS;


Se pide que se filtre al usuario en función de la información de la sesión de ese usuario, puede crear la clausula WHERE en contexto a la aplicación.


SELECT * FROM OE.ORDERS
WHERE SALES_REP_ID = SYS_CONTEXT('USERENV','SESSION_USER');

Tipos de Políticas.



Pasos para la implementación de VPD.

1) Crear un paquete PL/SQL para ajustar al contexto.

    CREATE OR REPLACE PACKAGE orders_ctx_pkg IS
       PROCEDURE set_custnum;
    END;
    /
    CREATE OR REPLACE PACKAGE BODY orders_ctx_pkg IS
       PROCEDURE set_custnum
       AS
          custnum NUMBER;
             WHERE cust_email = SYS_CONTEXT( ' USERENV ' , ' SESSION_USER ');
          SELECT cust_no INTO custnum FROM scott.customers
      END;
      /

2) Crear un contexto de la aplicación.

    CREATE OR REPLACE CONTEXT orders_ctx USING orders_cxt_pkg;

3) Crear un inicio de sesión de activación para ejecutar e contexto de aplicación PL/SQL

    CREATE TRIGGER set_custno_ctx_trig AFTER LOGON ON DATABASE
       BEGIN
          sysadmin_vpd.orders_ctx_pkg.set_custnum;
       END;
    /

4) Crear la función PL/SQL que genera el predicado.

    CREATE OR REPPLACE FUNCTION get_user_orders(
          schema_p IN VARCHAR2,
          table_p     IN VARCHAR2)
       RETURN VARCHAR2
       AS
          orders_pred VARCHAR2 (400);
       BEGIN
          orders_pred := ' cust_no = SYS_CONTEXT(' ' orders_ctx' ', ' 'cust_no' ') ';
      RETURN orders_pred;
    END;
    /

5) Crear la política para asociar a la función de la tabla.

    BEGIN
       DBMS_RLS.ADD_POLICY (
          object_schema     => 'scott',
          object_name        => 'orders_tab',
          policy_name        => 'orders_policy',
          function_schema => 'sysadmin_vpd',
          policy_function   => 'get_user_orders',
          statement_types   => 'select');
    END;

martes, 23 de septiembre de 2014

Factores que inciden en la necesidad de mejorar la seguridad de una base de datos.

Requerimientos fundamentales de seguridad

SEGURIDAD INFORMÁTICA

Es la encargada de diseñar normas, procedimientos, métodos y técnicas, para proveer condiciones seguras y confiables en el procesamiento de información. Son los que aseguran los recursos del sistema de información en una organización para ser utilizados de la forma mas propicia.

Para lograr sus objetivos de seguridad se fundamentan en el CIA, que debe cumplir todo sistema informático:


  • Confidencialidad: La información es vista, accedida y utilizada por quienes deben hacerlo.

  • Integridad: La información no debe ser alterada por personas no autorizadas y debe permanecer consistente y verídica.


  • Disponibilidad: La información debe estar en el momento que es necesitada.

    • Desde CIA es evitar que por temas involucrados a la seguridad no se encuentre dicha información.
    • Desde las aplicaciones de negocio debe estar preparado para la capacidad.

Preocupaciones sobre la seguridad de los datos.
  • Amenazas de seguridad: Como espionaje industrial, robo de identidad y amenazas internas.

  • Consolidar datos: Que un usuario pueda visualizar más información de lo que debería.
  • Globalización: Se incrementa las amenazas con las crecientes comunicaciones.

  • Right Sourcing: Trabajos con empresas o aplicaciones externas que pueden caer en malas manos alguna información confidencial.
  • Mandatos de cumplimiento: Estar obligados a cumplir estándares por ley o regulación.

Los siguientes son estándares en los cuales se generan las políticas para evitar dichas amenazas.

  • SOX: Monitorea a las empresas que cotizan bolsa de valores, evitando que las acciones sean alteradas de forma dudosa como por ejemplo Cobit.

  • HIPAA: Protege la privacidad de la información médica personal.

  • PCI: Es un estándar de seguridad de datos para la industria de tarjeta de crédito.

  • Basel II: Fortalece la regulación, supervisión y gestión de riesgos del sector bancario como por ejemplo el Banco de Suiza.

  • GLBA: Protege información financiera de los consumidores.

Niveles que se encuentran en la Constitución:


  • Ley
  • Política
  • Reglamento
  • Procedimiento
  • Actividades
  • Tareas
  • Micro movimientos.


Riesgos de Seguridad


Externos:

  • Usuarios no autorizados
  • Ataques Dos
  • Accesos no autorizados
  • SQL Injection


Internos:

  • Robos de información
  • Corrupción del servicio o de la información
  • Complejidad
  • Omisiones.

Estándares de Seguridad

  • SANS Institut: normas de base de datos, móviles, firewall, etc.
  • Computer Emergency Response Team (CERT/CC)
  • International Standards Organization (ISO 17799/27002)

En Ecuador se usa el ISO 27002

Desarrollo de una Política de Seguridad

  1. Formar el equipo de seguridad
  2. Definir los requerimientos de seguridad partiendo del CIA, aplicando SANS e ISO.
  3. Desarrollar políticas procedimientos y sistemas para cubrir los requerimientos de seguridad. El ISO no dice como se realiza los procesos, se piensa que procesos realizar.
  4. Implementar los procedimientos y sistemas de seguridad.
  5. Auditar el cumplimiento. De todo lo que se haga se debe auditar el cumplimiento.


Técnicas para Enforzar la Seguridad.

  • Autenticación: Responde a la pregunta Quién?. Identificar al usuario que está ingresando a la información.

  • Autorización: Responde a la pregunta que puede hacer el usuario?. Identifica que puede hacer el usuario una vez que se autentico.

  • Control de Acceso:  Responde a la pregunta como lo puede hacer? Que procesos pueden ejecutar. Ejemplo, ACL. Es a un nivel granular a comparación con el de autorización.

  • Auditoría: Es post de una infracción, en el cual se busca saber quien, que hizo, como lo hizo y cuando lo hizo.

  • Encriptación: Convierte el texto norma en texto codificado. Entre los algoritmos que se usan son el md5 y SHA.

Amenazas comunes.

  • Phishing: capturar información poniendo un elemento que reemplaza al que es.

  • Credenciales por defecto:  no cambiar claves.

  • Backdoors: Evita los sistemas de seguridad del algoritmo para acceder al sistema. Este es usado cuando se olvida la clave.

  • Codigo de depuración: Salir de un bucle infinito.

  • Cross-scripting: Aplicaciones en que se puede entender el código malicioso por ejemplo el uso de javascript.

  • SQL injection: Es una técnica utilizada por personas maliciosas que tienen el fin de alterar o atacar un sitio o servidor a través de comandos SQL.

Principios de Seguridad

  • Least Privilege: Darle al usuario los privilegios que estrictamente necesita.

  • Reducing the attack surface: Instalar solo el software que se va a usar. No exponer  recursos que no son necesarios para el usuario.

  • Defense in depth: Poner varias capas de seguridad, llamados filtros de control.

  • Separation of duties: Que una sola persona no realice varias obligaciones.

  • Limitar los privilegios para evitar escalamientos: Tener privilegios separados. Por ejemplo, es mas fácil obtener información a un solo usuario que sepa toda la información de una organización que a varias personas.

  • Diseñar y probar el código para que sea inmune a las amenazas comunes: realizar las prácticas correctas de programación para que no sean susceptibles a las amenazas comunes.

Opciones de Seguridad de Oracle 11g


  • Comunicacion Encriptadas (Oracle Advance Security): Con esto puedo proteger los datos que van en transito, se encripta la información.

  • Enmascaramiento de datos (Data masking): Enmascara la información de una forma que se vea los mas real posible. Permite cambiar datos mientras se esta enviando la información de una forma que no se vean los datos reales.

  • Control de Acceso Granular (Oracle Database Vault): Separación de datos para que el DBA no acceda a los datos. Especifica las tareas que realiza los usuarios correspondientes.

  • Seguridad a Nivel de filas (OLS or VPD): Maquina virtual y seguridad por etiquetas, la diferencia es trabajar con contextos que clasifica los datos, permite acceder al usuario a una fila o no.

  • Encriptación de respaldos (RMAN and OSB): En casos que dichos respaldos se pierdan, no se pueda ver la información.

  • Encriptación de columnas (TDE): físicamente encripta la información.

  • Aseguramiento de las pistas de auditoria (Oracle Audit Vault).