20 octubre 2017

Games of Roles (Season 2): Controla a tus super usuarios


Si deseas ver la primera arte de este artículo sigue este enlace.

Realms (Reinos)

Los usuarios con el rol DBA tienen los privilegios SELECT (y UPDATE, DELETE, o INSERT) ANY  TABLE y, por lo tanto, todavía pueden manipular datos en la tabla AHORROS, observa Cersei, preguntándose si hay una manera de evitarlo. Hay, responde Tycho. Implica crear un "círculo de protección" especial conocido como un Realm en Oracle Database Vault y colocar la tabla dentro de él. Solo el usuario administrador de Oracle Database Vault creado anteriormente, DVADMIN, puede crear dominios. Tycho inicia sesión como DVADMIN y ejecuta el SQL que se muestra en el Listado 1 para crear un Realm denominado BRAAVOS Schema Realm. El parámetro AUDIT_OPTIONS muestra qué nivel de auditoría debe habilitarse para las operaciones en el ámbito. Tycho elige crear pistas de auditoría solo para intentos fallidos de controlar la cantidad de información de seguimiento de auditoría generada. Menciona que luego explicará los detalles de la auditoría.


-- Listado1: Como DVADMIN, Crear un Realm
begin
 dbms_macadm.create_realm(
  realm_name    => 'BRAAVOS Schema Realm',
  description   => 'Realm for entire BRAAVOS schema',
  enabled       => dbms_macutl.g_yes,
  audit_options => dbms_macutl.g_realm_audit_fail, 
                  
  realm_type    => 1
 ) ;
end;
/
-- Como DVADMIN, añadir un objeto al Realm 
begin
  dbms_macadm.add_object_to_realm (
    realm_name   => 'BRAAVOS Schema Realm',
    object_owner => 'BRAAVOS',
    object_name  => 'ACCOUNTS',
    object_type  => 'TABLE'
  );
end;

/

A continuación, Tycho agrega la tabla CUENTAS al reino que acaba de crear, usando el SQL que se muestra en el Listado 2, nuevamente como el usuario DVADMIN. Después de eso, inicia sesión como usuario de WEBAPP1 e intenta seleccionar de la tabla:

-- Listado2: Como WEBAPP1
SQL> select * from Braavos.accountss;
select * from Braavos.savings
                   *
ERROR at line 1:
ORA-01031: insufficient privileges

Petyr está perplejo. Refiriéndose a la secuencia de comandos setup.sql, ella señala que el usuario de WEBAPP1 sí tiene privilegios SELECT en la tabla, por lo que la instrucción SELECT no debería haber fallado. El motivo es simple, explica Tycho: la tabla está protegida por el reino, que tiene prioridad sobre los privilegios típicos de la base de datos de Oracle. Tycho luego agrega al usuario WEBAPP1 como un usuario autorizado del reino, usando el SQL, tal y como e muestra a continuación.

-- Listado3: Añadiendo un usuario autorizado
begin
  dbms_macadm.add_auth_to_realm(
    realm_name    => 'BRAAVOS Schema Realm',
    grantee       => 'WEBAPP1',
    auth_options  => dbms_macutl.g_realm_auth_participant
  );
end;
/

Con el usuario de WEBAPP1 permitido dentro del dominio, se respetarán los privilegios típicos de la base de datos Oracle del usuario, como SELECT en la tabla. Debido a que ni siquiera los privilegios SYSDBA están permitidos dentro del reino, el poderoso privilegio del sistema SELECT ANY TABLE no sirve para las tablas dentro de ese reino y, por lo tanto, su instrucción SELECT falla con un error de "privilegios insuficientes",  lo que Cersei, nuestra auditora IT, quería.

Vistas del diccionario de datos de Oracle.


Cersei y Petyr ahora son visiblemente felices; ambos obtuvieron lo que querían. Pero tienen más preguntas: ¿Cómo conocemos los distintos reinos, quiénes son los usuarios autorizados, etc.? Hay varias vistas de diccionario de datos, explica Tycho. Señala algunas importantes que son propiedad de un esquema llamado DVSYS, que se crea cuando Oracle Database Vault está activado:
  • DVSYS.DBA_DV_REALM muestra todos los reinos creados.
  • DVSYS.DBA_DV_REALM_OBJECT muestra los objetos dentro de un reino.
  • DVSYS.DBA_DV_REALM_AUTH muestra a todos los usuarios autorizados para acceder a los objetos en los reinos.

Informes de auditoría

Cersei recuerda a todos que un requisito muy importante es capturar el historial de los cambios y las infracciones, los rastros de auditoría, de tal manera que el administrador de seguridad, pero no el usuario de DBA, pueda verlos. Es posible, continúa Tycho, a través de dos clases principales de pistas de auditoría (audit trails):

  • Auditoría de configuración Esta ruta de auditoría registra los cambios en varios elementos de configuración, como los reinos creados, los usuarios autorizados y los objetos ubicados en los reinos. El recorrido está disponible como una vista DV $ CONFIGURATION_AUDIT en el esquema DVSYS. Esta política de auditoría no se puede desactivar. Todos los cambios a la configuración de Oracle Database Vault serán capturados.
  • Auditoría de cumplimiento. Esta ruta de auditoría registra las actividades realizadas en la base de datos relacionadas con Oracle Database Vault. Está disponible a través de la vista DV $ ENFORCEMENT_AUDIT en el esquema DVSYS. El Listado 4 muestra la declaración de SQL que Tycho usa para ver las acciones que causaron una violación de dominio en esta pista de auditoría. Apuntando al primer registro en la salida, muestra que el usuario de WEBAPP1 emitió la declaración
  • SELECT * FROM BRAAVOS.ACCOUNTS, el 17-DEC-15 a las 08.11.31.123646 PM y recibió un error ORA-1031 (privilegios insuficientes). Esto es cuando el usuario de WEBAPP1 aún no estaba autorizado para el reino y trató de seleccionar de la tabla AHORROS. Esta vista tiene varias columnas valiosas, incluidas OS_USERNAME, USERHOST e INSTANCE_NUMBER, que muestran el nombre de usuario del sistema operativo que emitió la instrucción, el nombre del sistema del cliente y la Id. De la instancia (para una base de datos Oracle Real Clusters de aplicaciones [Oracle RAC]) respectivamente .
Comprobación de un rastro de auditoría para las vulneraciones de dominio de la base de datos Oracle Vault
-- Listado4: Como DVADMIN
select extended_timestamp, username, action_command, returncode
from dvsys.dv$enforcement_audit
where action_name = 'Realm Violation Audit'
and action_object_name = 'BRAAVOS Schema Realm'
order by 1,2,3
/

Rules (Reglas) 


Una de las políticas permanentes de la operación de TI en Braavos es rechazar cualquier operación de lenguaje de definición de datos (DDL) durante la semana, para evitar problemas de rendimiento y posibles ataques contra la base de datos. Actualmente, esta política se aplica a través de disparadores de DDL después de nivel de esquema que simplemente generan una excepción cuando las sentencias DDL se ejecutan durante los días laborables. Pero estos disparadores son propiedad de SYS, observa Cersei, por lo que los DBA pueden potencialmente manipular el efecto de estos desencadenantes, incluso incluso suprimirlos. Para reducir la posibilidad de que una cuenta poderosa como el DBA provoque un ataque, y con un espíritu de segregación de deberes, Cersei se pregunta si sería posible hacer cumplir esta política, no a través de desencadenantes propios de SYS, y por lo tanto, imposibilitaría que el política a ser influenciada por los DBA.

-- Listado5:Como DVADMIN, Configuración de reglas en Oracle Database Vault
-- Primero crea una regla
begin
   dvsys.dbms_macadm.create_rule (
      rule_name => 'Weekday',
      rule_expr => 'to_char(sysdate,''DY'') not in
             (''MON'',''TUE'',''WED'',''THU'',''FRI'')'
          );
end;
/
-- Luego crea un conjunto de reglas
begin
   dvsys.dbms_macadm.create_rule_set(
      rule_set_name => 'WEEKDAY_RULE_SET',
      description   => 'Weekday',
      audit_options => dbms_macutl.g_ruleset_audit_fail +
                      
      enabled       => dbms_macutl.g_yes,
      eval_options  => dbms_macutl.g_ruleset_eval_any,
      fail_options  => dbms_macutl.g_ruleset_fail_silent,
      fail_message  => 'Security Doesn''t Allow This Operation on a Weekday',
      fail_code        => 20001,
      handler_options  => dbms_macutl.g_ruleset_handler_off,
      handler          => ''
   );

   dvsys.dbms_macadm.add_rule_to_rule_set(
      rule_set_name => 'WEEKDAY_RULE_SET',
      rule_name     => 'Weekday',
      rule_order    => 1
   );
end;
/

-- Cree una regla de comando que impida que la tabla truncar
begin
   dvsys.dbms_macadm.create_command_rule(
       command=> 'TRUNCATE TABLE',
       rule_set_name => 'WEEKDAY_RULE_SET',
       object_owner => 'BRAAVOS',
       object_name => '%',
       enabled => 'Y'
   );
end;   
/

Es, asegura Tycho, con reglas en Oracle Database Vault. Tycho configura la regla que se muestra en el Listado 5, utilizando los siguientes pasos:

  • Cree una regla que muestre el período permitido. Para el ejemplo, Tycho especifica que el período no es un día laborable.
  • Cree un conjunto de reglas. Tycho especifica que cuando se infringe la regla, el usuario debe obtener un error ORA-20001 con este mensaje personalizado: "La seguridad no permite esta operación en un día laborable".
  • Agregue la regla al conjunto de reglas.
  • Cree una "regla de comando" en Oracle Database Vault que impida una acción específica. Para el ejemplo, Tycho elige evitar TRUNCATE TABLE en todas las tablas del esquema de BRAAVOS.
  • Después de configurar la regla, Tycho inicia sesión como el usuario WEBAPP1. La reunión de hoy es un día laborable, por lo que emite el siguiente SQL:


SQL> truncar la tabla Braavos.t1;
tabla truncada Braavos.t1
                    *
ERROR en la línea 1:
ORA-47306: 20001: la seguridad no permite esta operación en un día laborable


La operación falla y el mensaje de salida proporciona una explicación bastante clara. La aplicación de esta regla se realiza a través de Oracle Database Vault, no desencadenadores, por lo que los usuarios de DBA no pueden alterar la configuración o ignorar esta regla. Solo los administradores de Oracle Database Vault pueden cambiarlo. Las reglas se pueden definir para cualquier tipo de cheque, explica Tycho, como verificar una dirección IP específica. Cersei no podría estar más feliz.

Games of Roles (Season 1): Controla a tus super usuarios

 

Limita la autorización solo a aquellos que lo necesiten y elimina los roles de superusuario de gran alcance con Oracle Database Vault.

Tycho, es el responsable de arquitectura de bases de datos en el banco de Braavos, hoy es día de reuniones “tensas”. En vista de varias leyes, reglamentos y mandatos como:
  •         LOPD
  •         ENS
  •         GDPR
  •         PCI/DSS

Y en menor medida:
  •         Sarbanes-Oxley
  •         HIPAA
  •         GLBA

Cersei, el auditor de TI del banco, quiere asegurarse de que los privilegios asignados a las personas se limiten a lo que realmente necesitan: nada más. Por ejemplo, los DBA de soporte de producción que administran la infraestructura de la base de datos, toman copias de seguridad, etc., deberían tener privilegios para hacer todo eso pero no tener acceso a datos como la información de la cuenta.

El rol de la base de datos "DBA", que se otorga a los DBA de Braavos para administrar la infraestructura de la base de datos, también incluye otros privilegios poderosos como la capacidad de seleccionar y eliminar de cualquier esquema cualquier esquema, incluidos los rastros de auditoría de estas actividades. Esos privilegios no pueden despojarse de ese rol; son partes integrales de la misma. Cersei quiere que los DBA pierdan esos privilegios, pero los DBA no pueden hacer su trabajo sin el rol de DBA, explica Petyr, gerente de DBA. No es que los DBA realmente usen esos privilegios para seleccionar de tablas sensibles o eliminarlos de los rastros de auditoría, por lo que tener esos privilegios no hace ninguna diferencia, argumenta Petyr.

Ha habido muchas instancias de un atacante malintencionado que usa privilegios de DBA para robar datos confidenciales e incluso de DBA falsos que roban datos y borran los rastros de auditoría, usando los privilegios de rol de DBA todopoderosos. ¿Y no suelen ser los DBA los que tienen más probabilidades de ser investigados cuando ocurre una violación de datos? le pregunta a Cersei. Sin esos privilegios, explica, su responsabilidad se reducirá drásticamente. Petyr considera esta lógica y ve de inmediato el valor de la solicitud de Cersei, pero explica que sin el rol de DBA, los DBA no pueden hacer su trabajo. Así que aquí están, preguntándose si el sabio Tycho tiene una solución.

Sí, asegura Tycho, las necesidades de Petyr y Cersei se pueden cumplir con una opción de costo adicional llamada Oracle Database Vault en Oracle Database 12c.

Separación de tareas

Es necesario abordar varios tipos de usuarios y actividades. Nuestra auditora de TI identifica cinco tipos distintos de usuarios de bases de datos y sus actividades:
  • DBA. Usuario que realiza la gestión de la infraestructura de la base de datos, como inicio / apagado, copia de seguridad, etc.
  • Gestor de seguridad: Usuario que realiza actividades como crear usuarios y cambiar contraseñas. Actualmente, los DBA realizan la administración de cuentas, y Cersei desea que alguien en seguridad de TI, no un DBA, la administre.
  • Auditor: Usuario que establece la separación de funciones y controles de las actividades realizadas por varios usuarios. Esto debería ser realizado por el departamento de cumplimiento de TI, insiste Cersei.
  • Usuario del esquema empresarial. Cuenta de usuario que contiene tablas de datos reales y otros objetos que son compatibles con la empresa.
  • Usuario regular Cuenta de usuario conectada a la base de datos desde aplicaciones o un usuario humano especificado que permite ver y manipular datos en esquemas, pero no los posee.


Es vital, insiste Cersei, que los privilegios que disfrutan estos usuarios no se solapan. Por ejemplo, el usuario de DBA debería poder iniciar y detener la base de datos, pero no crear usuarios ni seleccionarlos de ninguna tabla en los esquemas comerciales. De manera similar, el usuario del administrador de la cuenta debería poder crear usuarios, pero no iniciar y detener la base de datos y no seleccionar ningún dato de una tabla (a menos que, por supuesto, se lo autorice explícitamente). El usuario del auditor debe ser el único que vea los datos de auditoría pero no pueda crear usuarios. En otras palabras, a todos se les deben otorgar precisamente los privilegios que necesitan para hacer su trabajo y no un poco más, sea o no sea su intención usar los privilegios.

Configuración

Es muy fácil separar los usuarios y las actividades con Oracle Database Vault, asegura Tycho, mientras comienza a configurar una demostración para los visitantes de su oficina. Primero, elige a los usuarios para diversos tipos de actividades. Para la primera categoría, los usuarios de DBA como SYS, SYSTEM y otros DBA nombrados ya están presentes. Para crear los tipos de usuario 4 y 5, el esquema empresarial y los usuarios normales, ejecuta el script en setup.sql. El esquema que contiene todos los datos de usuario del banco se denomina BRAAVOS. El usuario que se conecta a la base de datos para realizar transacciones es WEBAPP1. La tabla CUENTAS en el esquema BRAAVOS almacena los datos en las cuentas de ahorro. Tycho rompe la configuración restante en nueve pasos, para cubrir situaciones en las que Oracle Database Vault puede o no estar actualmente instalado o configurado y donde puede usarse en bases de datos convencionales y conectables.
  • Paso 1. Para las otras dos categorías de usuarios, administrador de cuentas y auditor, Tycho crea dos usuarios especiales para su uso por Oracle Database Vault, denominados DVACCMGR y DVADMIN, respectivamente. El usuario de DVADMIN administrará la instalación completa de Oracle Database Vault.
-- Como SYSDBA
create user dvadmin identified by dvadmin; 
create user dvaccmgr identified by dvaccmgr; 
grant create session to dvaccmgr, dvadmin;
  • Paso 2 En caso de que Oracle Database Vault no se haya configurado, Tycho comprueba mediante el siguiente SQL:

-- Como SYSDBA
SQL> select * from dba_dv_status; 

  • Paso 3. La salida confirma que la opción no se ha configurado. Durante la instalación de algunas bases de datos, es posible que los DBA hayan instalado la opción Oracle Database Vault pero nunca la hayan configurado. Para aquellas bases de datos en las que Oracle Database Vault nunca estuvo instalado, Tycho usa el siguiente comando para instalar no solo la opción Oracle Database Vault sino también para configurarla en un solo paso.

dbca -silent -configureDatabase -sourceDB ACMEDB -addDBOption OMS,DV -olsConfiguration true -dvConfiguration true -dvUserName dvadmin -dvUserPassword dvadmin -dvAccountManagerName dvaccmgr -dvAccountManagerPassword dvaccmgr

Tycho realiza los cambios apropiados a las opciones, como el nombre de la base de datos en las bases de datos en las que ejecuta este comando. Aquí está el resultado: 

Preparing to Configure Database
1% complete
3% complete
18% complete
Adding Oracle Label Security
19% complete
20% complete
21% complete
54% complete
Adding Oracle Database Vault
90% complete Completing Database Configuration
100% complete
Look at the log file "C:\app\oracle\cfgtoollogs\dbca\ACMEDB\ ACMEDB.log" for further details. 

La última línea muestra la ubicación del archivo donde se registrarán los detalles de la salida. Si la opción ya estaba instalada en la base de datos, explica Tycho, el comando habría salido sin hacer nada y la salida lo habría hecho referencia. 

  •  Paso 4. Algunas bases de datos ya tenían Oracle Database Vault instalado pero no configurado. Para ellos, Tycho configura los dos usuarios especiales para administrar Oracle Database Vault y las cuentas de usuario DVADMIN y DVACCMGR, ejecutando el siguiente SQL como usuario de SYS:

begin dvsys.configure_dv ( dvowner_uname => 'dvadmin', dvacctmgr_uname => 'dvaccmgr' ); end; /
  • Paso 5. A continuación, Tycho ejecuta el script utlrp.sql en el directorio rdbms / admin bajo Oracle Home como SYS.

SQL> @ utlrp.sql
  • Paso 6. Para aquellas bases de datos en las que Oracle Database Vault se instaló pero no se configuró, Tycho se conecta como usuario de DVADMIN y habilita Oracle Database Vault.

SQL> exec dbms_macadm.enable_dv
  • Paso 7. Tycho reinicia cada base de datos. 
  • Paso 8. Confirma que la opción Oracle Database Vault está configurada y habilitada, ejecutando el siguiente SQL:

SQL> select * from dba_dv_status;

  • Paso 9. Para las bases de datos multitenant, Tycho ejecuta todos los pasos anteriores en el contenedor raíz (la base de datos del contenedor). Ejecuta los pasos 4, 5 y 6 en cada base de datos conectable donde se necesita Oracle Database Vault, y cierra y vuelve a abrir todas las bases de datos conectables habilitadas para Oracle Database Vault.

Gestión de usuarios


Con Oracle Database Vault habilitado, Tycho demuestra el primer efecto para Cersei y Petyr. Como el usuario SYS (Tycho enfatiza que SYS debe usarse solo cuando se demuestran los controles, no en el día a día), intenta crear un usuario llamado TEST:



create user test identified by test;
                              *
ERROR at line 1:
ORA-01031: insufficient privileges



El usuario SYS, que tenía todos los privilegios para crear un nuevo usuario antes, falla con un error ORA-1031. SYS ahora puede realizar actividades típicas de administración de bases de datos pero no administrar ningún usuario. Para administrar a los usuarios, Tycho inicia sesión como el usuario de Oracle Database Vault para la gestión de cuentas-DVACCMGR-y ejecuta este SQL:



SQL> conn dvaccmgr/dvaccmgr
SQL> create user test identified by test;

User created.


Además, el usuario de DVACCMGR puede realizar otras funciones de administración de usuarios, como cambiar contraseñas y otorgar privilegios de CREATE SESSION. Sin embargo, DVACCMGR no puede seleccionar de ninguna tabla ni cerrar la base de datos. Este usuario de DVACCMGR debe ser controlado por el equipo del administrador de cuentas y no por el equipo de DBA, por lo que los DBA no pueden administrar a los usuarios, exactamente lo que Cersei quería. Un requisito satisfecho, quedan más por abordar, en nuestra segunda parte del artículo:

Games of Roles (Season 2): Controla a tus super usuarios


18 octubre 2017

Oracle y Principales Regulaciones de datos en España (Parte I)


Ley Orgánica de Protección de Datos (España)

Tiene por objeto garantizar y proteger, en lo concerniente al tratamiento de los datos personales, las libertades públicas y los derechos fundamentales de las personas físicas, y especialmente su honor e intimidad personal y familiar. (Art. 1 LOPD).
Existen leyes similares en otros países, a los que se pueden aplicar estas políticas:

  • México: LFPDPPP
  • Colombia: Ley estatutaria 1581

Esquema Nacional de Seguridad (España)

Su finalidad es la creación de las condiciones necesarias de confianza en el uso de los medios electrónicos, a través de medidas para garantizar la seguridad de los sistemas, los datos, las comunicaciones, y los servicios electrónicos.

Los sistemas de información prestarán sus servicios y custodiarán la información de acuerdo con sus especificaciones funcionales,sin interrupciones o modificaciones fuera de control, y sin que la información pueda llegar al conocimiento de personas no autorizadas.





Nivel básico

Artículo 91. Control de acceso. (Nivel básico)

  • Los usuarios tendrán acceso únicamente a aquellos recursos que necesiten para el desarrollo de sus funciones.
  • El responsable del fichero establecerá mecanismos para evitar que un usuario pueda acceder a recursos con derechos distintos de los autorizados.

Artículo 93. Identificación y autenticación. (Nivel básico)

  • …adoptar las medidas que garanticen la correcta identificación y autenticación de los usuarios.
  • …establecerá un mecanismo que permita la identificación de forma inequívoca y personalizada de todo aquel usuario que intente acceder al sistema de información y la verificación de que está autorizado.
  • …establecerá la periodicidad, que en ningún caso será superior a un año, con la que tienen que ser cambiadas las contraseñas…

Artículo 94. Copias de respaldo y recuperación. (Nivel básico)

  • Las pruebas anteriores a la implantación o modificación de los sistemas de información que traten ficheros reales no se realizará con datos reales, …

Nivel Alto

Artículo 101. Gestión y distribución de soportes. (Nivel alto)

  • La distribución de los soportes que contengan datos de carácter personal se realizará cifrando dichos datos…

Artículo 103. Registro de accesos (Nivel alto)

  • De cada intento de acceso se guardarán, como mínimo, la identificación del usuario, la fecha y hora en que se realizó, el fichero accedido, el tipo de acceso y si ha sido autorizado o denegado.
  • En el caso de que el acceso haya sido autorizado, será preciso guardar la información que permita identificar el registro accedido.

Artículo 104. Telecomunicaciones. (Nivel alto)

  •  …la transmisión de datos de carácter personal a través de redes públicas o redes inalámbricas de comunicaciones electrónicas se realizará cifrando dichos datoso utilizando cualquier otro mecanismo que garantice que la información no sea inteligible ni manipulada por terceros.


Ley Orgánica de Protección de Datos

Requerimientos vs Oracle


Esquema Nacional de Seguridad

Requerimientos vs Oracle




Securización de BBDD Remotas

Principales problemáticas de seguridad en las Sedes Remotas
  • Acceso a dispositivos físicos
    • Evitar posibles robos de información
  • Acceso a los datos
    • Evitar fugas/robos
    • Segregar funciones de los Usuarios Privilegiados
  • Registro y control
    • Todo lo que pasan en las BBDD quedará registrado
  • Cumplimiento LOPD-ENS
  • Escenarios similares a los productivos

Soluciones seleccionadas e implantadas
  • Oracle Data Masking and Subsetting Pack
    • Reemplazo de la información sensible de los entornos productivos, de forma que datos similares a los que se manejan por el usuario final, puedan ser utilizados de forma segura en otros entornos.
  • Oracle Advance Security
    • Cifrado de datos, gestión de claves multinivel, autenticación fuerte contra la BBDD.
  • Oracle Database Vault
    • Separación de funciones y dominios de seguridad; Establecimiento de controles robustos sobre qué puede hacer quién dentro de la base de datos.
  • Oracle Audit Vault and Database Firewall
    • Recopilación de datos de actividad en las BBDD, firewall de BBDD para monitorear y bloquear sentencias SQL.
Continua en la segunda parte de este artículo, aquí.