20 octubre 2017

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


No hay comentarios:

Publicar un comentario

Por favor deja tu comentario, es valioso.