Oracle Exadata Database Machine: Seguridad a nivel de ASM y de Base de Datos (Parte 2)

Por Deiby Gómez Robles e Yenugula Venkata RaviKumar (OCM)
Publicado en Marzo 2014


Indice:

  1. Oracle Exadata Database Machine: Seguridad a nivel de ASM y de Base de Datos (Parte 1)
  2. Oracle Exadata Database Machine: Seguridad a nivel de ASM y de Base de Datos (Parte 2)
  3. Oracle Exadata Database Machine: Seguridad a nivel de ASM y de Base de Datos (Parte 3)


Introducción:
En la primera parte de este articulo se explicó por qué es muy importante la implementación de la seguridad en un ambiente de "Oracle Exadata Database Machine" para poder restringir el uso de los "Grid Disk" para determinadas bases de datos o clústeres de ASM y así mismo se dio a conocer el procedimiento que se realiza para implementar la seguridad a nivel de ASM. En este nuevo artículo continuaremos con la demostración de cómo implementar la seguridad a nivel de Base de Datos.

Restringir a ciertas bases de datos el acceso a algunos "Exadata Cell" y ciertos "Grid Disk" es la seguridad más utilizada ya que en la mayoría de las organizaciones las bases de datos representan a una unidad de negocio, por ejemplo, el departamento de recursos humanos utiliza una base de datos diferente al departamento de reclutamiento, dejando así el requerimiento de restringir los datos de un departamento con los datos del otro. En otras organizaciones cada departamento tiene cierto presupuesto asignado por lo que no todos los departamentos pueden hacer uso de los discos que deseen para el almacenamiento de sus datos, dejando así el requerimiento de que algunas bases de datos solo puedan usar ciertos discos. La implementación de la seguridad a nivel de la base de datos representa un nivel de granularidad más fino que la seguridad a nivel de ASM puesto que un clúster de ASM puede afectar a varias bases de datos.

Configuración de Seguridad a nivel de Base de Datos

Ambiente utilizado:

  • Una base de datos sencilla llamada "xdbvm" versión 11.2.0.3
  • Una instancia de ASM versión 11.2.0.3
  • Dos "Exadata Cell" llamados "Cell01" y "Cell02", cada uno con 12 "Grid Disk".
  • Versión 11.2.3.2.1 de los "Exadata Cell".

A continuación se demostrará como se realiza una implementación de seguridad a nivel de Base de Datos, proporcionando accesos a los "Grid Disk" de los "Exadata Cell" Cell01 y Cell02.

  1. Bajar la instancia de Base de Datos y la instancia de ASM:
  2. [oracle@exadb01  ~]$ . oraenv
    ORACLE_SID  = [xdbvm] ?+ASM
    The Oracle base remains  unchanged with value /u01/app/oracle
    [oracle@exadb01 ~]$ ps -ef | greppmon
    oracle    2666  3392  0 08:32 pts/2    00:00:00 greppmon oracle   32261     1  0 06:20 ?        00:00:00 asm_pmon_+ASM oracle   32520     1  0 06:21 ?        00:00:00 ora_pmon_xdbvm [oracle@exadb01 ~]$ srvctl stop database -d xdbvm [oracle@exadb01 ~]$ srvctl stop diskgroup -g DATA [oracle@exadb01 ~]$ srvctl stop diskgroup -g RECO [oracle@exadb01 ~]$ srvctl stop asm [oracle@exadb01 ~]$ ps -ef | greppmon oracle    3167  3392  0 08:34 pts/2    00:00:00 greppmon

  3. Crear la llave para cada base de datos en un clúster de ASM únicamente una vez:
  4. [celladmin@cell01 ~]$  servicecelld status
    Password:
             rsStatus:               running
             msStatus:               running
             cellsrvStatus:          running
    [celladmin@cell01 ~]$  cellcli
    CellCLI: Release 11.2.3.2.1  - Production on Tue Dec 03 08:36:23 GMT+00:00 2013
    
    Copyright (c) 2007, 2012, Oracle.  All rights reserved.
    Cell Efficiency Ratio: 510
    
    CellCLI> create key
             5d961433bf2f41e4a7ed77db1b14d3a7

  5. Para cada base de datos crear un archivo "cellkey.ora" (este archivo contiene la misma información que el archivo que se utilizó en la seguridad a nivel de ASM) usando la llave nueva creada en el paso 2 y moverlo al directorio "$ORACLE_HOME/admin/db_unique_name/pfile". Cambiar los permisos del archivo:
  6. [oracle@exadb01 pfile]$ pwd
    /u01/app/oracle/admin/xdbvm/pfile
    [oracle@exadb01 pfile]$ vicellkey.ora
    [oracle@exadb01 pfile]$  catcellkey.ora
    xdbvm=5d961433bf2f41e4a7ed77db1b14d3a7
    asm=+ASM
    [oracle@exadb01 pfile]$  chmod 640 cellkey.ora
    

  7. Realizar "Login" en el  "Exadata Cell Cell01" y asignar la llave:
  8. CellCLI> assign key for
    xdbvm='5d961433bf2f41e4a7ed77db1b14d3a7'
    Key for xdbvm successfully  created
    CellCLI> list key
             +ASM     8804b0e5bb8f6a4d10a0e17843e60c1
    xdbvm   5d961433bf2f41e4a7ed77db1b14d3a7

  9. Modificar el "Grid Disk" desde el "Exadata Cell Cell01" y cambiar el atributo llamado "availableTo":
  10. CellCLI> alter griddisk  DATA_CD_disk01_cell01,DATA_CD_disk02_cell01,DATA_CD_disk03_cell01,
    DATA_CD_disk04_cell01,DATA_CD_disk05_cell01,DATA_CD_disk06_cell01,
    DATA_CD_disk07_cell01,DATA_CD_disk08_cell01,DATA_CD_disk09_cell01,
    DATA_CD_disk10_cell01,DATA_CD_disk11_cell01,DATA_CD_disk12_cell01,
    RECO_CD_disk01_cell01,RECO_CD_disk02_cell01,RECO_CD_disk03_cell01,
    RECO_CD_disk04_cell01,RECO_CD_disk05_cell01,RECO_CD_disk06_cell01,
    RECO_CD_disk07_cell01,RECO_CD_disk08_cell01,RECO_CD_disk09_cell01,
    RECO_CD_disk10_cell01,RECO_CD_disk11_cell01,RECO_CD_disk12_cell01  availableTo='+ASM,xdbvm'
    
    GridDisk  DATA_CD_disk01_cell01 successfully altered
    GridDisk  DATA_CD_disk02_cell01 successfully altered
    GridDisk  DATA_CD_disk03_cell01 successfully altered
    GridDisk  DATA_CD_disk04_cell01 successfully altered
    GridDisk  DATA_CD_disk05_cell01 successfully altered
    GridDisk  DATA_CD_disk06_cell01 successfully altered
    GridDisk  DATA_CD_disk07_cell01 successfully altered
    GridDisk  DATA_CD_disk08_cell01 successfully altered
    GridDisk  DATA_CD_disk09_cell01 successfully altered
    GridDisk  DATA_CD_disk10_cell01 successfully altered
    GridDisk  DATA_CD_disk11_cell01 successfully altered
    GridDisk  DATA_CD_disk12_cell01 successfully altered
    GridDisk  RECO_CD_disk01_cell01 successfully altered
    GridDisk  RECO_CD_disk02_cell01 successfully altered
    GridDisk  RECO_CD_disk03_cell01 successfully altered
    GridDisk  RECO_CD_disk04_cell01 successfully altered
    GridDisk  RECO_CD_disk05_cell01 successfully altered
    GridDisk  RECO_CD_disk06_cell01 successfully altered
    GridDisk  RECO_CD_disk07_cell01 successfully altered
    GridDisk  RECO_CD_disk08_cell01 successfully altered
    GridDisk  RECO_CD_disk09_cell01 successfully altered
    GridDisk  RECO_CD_disk10_cell01 successfully altered
    GridDisk  RECO_CD_disk11_cell01 successfully altered
    GridDisk  RECO_CD_disk12_cell01 successfully altered

  11. Revisar la propiedad "availableTo" en el "Exadata Cell Cell01":
  12. CellCLI> list griddisk  attributes name, availableTo
    DATA_CD_disk01_cell01   +ASM,xdbvm
    DATA_CD_disk02_cell01   +ASM,xdbvm                                                 
    DATA_CD_disk03_cell01   +ASM,xdbvm
             DATA_CD_disk04_cell01   +ASM,xdbvm
             DATA_CD_disk05_cell01   +ASM,xdbvm
             DATA_CD_disk06_cell01   +ASM,xdbvm
             DATA_CD_disk07_cell01   +ASM,xdbvm
             DATA_CD_disk08_cell01   +ASM,xdbvm
             DATA_CD_disk09_cell01   +ASM,xdbvm
             DATA_CD_disk10_cell01   +ASM,xdbvm
             DATA_CD_disk11_cell01   +ASM,xdbvm
             DATA_CD_disk12_cell01   +ASM,xdbvm
             RECO_CD_disk01_cell01   +ASM,xdbvm
             RECO_CD_disk02_cell01   +ASM,xdbvm
             RECO_CD_disk03_cell01   +ASM,xdbvm
             RECO_CD_disk04_cell01   +ASM,xdbvm
             RECO_CD_disk05_cell01   +ASM,xdbvm
             RECO_CD_disk06_cell01   +ASM,xdbvm
             RECO_CD_disk07_cell01   +ASM,xdbvm
             RECO_CD_disk08_cell01   +ASM,xdbvm
             RECO_CD_disk09_cell01   +ASM,xdbvm
             RECO_CD_disk10_cell01   +ASM,xdbvm
             RECO_CD_disk11_cell01   +ASM,xdbvm
             RECO_CD_disk12_cell01   +ASM,xdbvm

  13. Realizar "Login" en el "Exadata Cell Cell02" y revisar el estado de los servicios:
  14. [celladmin@cell02 ~]$  servicecelld status
    Password:
    	rsStatus:               running
    	msStatus:               running
    	cellsrvStatus:          running

  15. Asignar la llave a la base de datos "xdbvm" para que pueda tener acceso a los "Grid Disk":
  16. [celladmin@cell02 ~]$  cellcli
    CellCLI: Release 11.2.3.2.1  - Production on Tue Dec 03 08:50:19 GMT+00:00 2013
    
    Copyright (c) 2007, 2012,  Oracle.  All rights reserved.
    Cell Efficiency Ratio: 508
    
    CellCLI> list key
    			+ASM     8804b0e5bb8f6a4d10a0e17843e60c1
    
    CellCLI> assign key for  
    xdbvm='5d961433bf2f41e4a7ed77db1b14d3a7'
    Key for xdbvm successfully  created
    
    CellCLI>  list key
    	+ASM     8804b0e5bb8f6a4d10a0e17843e60c1
    	xdbvm   5d961433bf2f41e4a7ed77db1b14d3a7

  17. Modificar el "Grid Disk" desde el "Exadata Cell Cell02"
  18. CellCLI> alter griddisk  DATA_CD_disk01_cell02, 
    DATA_CD_disk02_cell02, DATA_CD_disk03_cell02,
    DATA_CD_disk04_cell02, DATA_CD_disk05_cell02,  
    DATA_CD_disk06_cell02, DATA_CD_disk07_cell02, 
    DATA_CD_disk08_cell02, DATA_CD_disk09_cell02,
    DATA_CD_disk10_cell02, DATA_CD_disk11_cell02,  
    DATA_CD_disk12_cell02, RECO_CD_disk01_cell02, 
    RECO_CD_disk02_cell02, RECO_CD_disk03_cell02,
    RECO_CD_disk04_cell02, RECO_CD_disk05_cell02,  
    RECO_CD_disk06_cell02, RECO_CD_disk07_cell02, 
    RECO_CD_disk08_cell02, RECO_CD_disk09_cell02,
    RECO_CD_disk10_cell02, RECO_CD_disk11_cell02,  
    RECO_CD_disk12_cell02 availableTo='+ASM,xdbvm'
    GridDisk DATA_CD_disk01_cell02 successfully altered GridDisk DATA_CD_disk02_cell02 successfully altered GridDisk DATA_CD_disk03_cell02 successfully altered GridDisk DATA_CD_disk04_cell02 successfully altered GridDisk DATA_CD_disk05_cell02 successfully altered GridDisk DATA_CD_disk06_cell02 successfully altered GridDisk DATA_CD_disk07_cell02 successfully altered GridDisk DATA_CD_disk08_cell02 successfully altered GridDisk DATA_CD_disk09_cell02 successfully altered GridDisk DATA_CD_disk10_cell02 successfully altered GridDisk DATA_CD_disk11_cell02 successfully altered GridDisk DATA_CD_disk12_cell02 successfully altered GridDisk RECO_CD_disk01_cell02 successfully altered GridDisk RECO_CD_disk02_cell02 successfully altered GridDisk RECO_CD_disk03_cell02 successfully altered GridDisk RECO_CD_disk04_cell02 successfully altered GridDisk RECO_CD_disk05_cell02 successfully altered GridDisk RECO_CD_disk06_cell02 successfully altered GridDisk RECO_CD_disk07_cell02 successfully altered GridDisk RECO_CD_disk08_cell02 successfully altered GridDisk RECO_CD_disk09_cell02 successfully altered GridDisk RECO_CD_disk10_cell02 successfully altered GridDisk RECO_CD_disk11_cell02 successfully altered GridDisk RECO_CD_disk12_cell02 successfully altered

  19. Revisar la propiedad "availableTo" en el "Exadata Cell Cell01"
  20. CellCLI> list griddisk  attributes name, availableTo
    DATA_CD_disk01_cell02   +ASM,xdbvm
    DATA_CD_disk02_cell02   +ASM,xdbvm
    DATA_CD_disk03_cell02   +ASM,xdbvm
    DATA_CD_disk04_cell02   +ASM,xdbvm
    DATA_CD_disk05_cell02   +ASM,xdbvm
    DATA_CD_disk06_cell02   +ASM,xdbvm
    DATA_CD_disk07_cell02   +ASM,xdbvm
    DATA_CD_disk08_cell02   +ASM,xdbvm
    DATA_CD_disk09_cell02   +ASM,xdbvm
    DATA_CD_disk10_cell02   +ASM,xdbvm
    DATA_CD_disk11_cell02   +ASM,xdbvm
    DATA_CD_disk12_cell02   +ASM,xdbvm
    RECO_CD_disk01_cell02   +ASM,xdbvm
    RECO_CD_disk02_cell02   +ASM,xdbvm
    RECO_CD_disk03_cell02   +ASM,xdbvm
    RECO_CD_disk04_cell02   +ASM,xdbvm
    RECO_CD_disk05_cell02   +ASM,xdbvm
    RECO_CD_disk06_cell02   +ASM,xdbvm
    RECO_CD_disk07_cell02   +ASM,xdbvm
    RECO_CD_disk08_cell02   +ASM,xdbvm
    RECO_CD_disk09_cell02   +ASM,xdbvm
    RECO_CD_disk10_cell02   +ASM,xdbvm
    RECO_CD_disk11_cell02   +ASM,xdbvm
    RECO_CD_disk12_cell02   +ASM,xdbvm

    Nota: Também podemos utilizar a ferramenta DCLI para as configurações.


  21. Iniciar la instancia de ASM y la instancia de Base de Datos:
  22. [oracle@exadb01  ~]$ . oraenv
    ORACLE_SID  = [xdbvm] ?+ASM
    The Oracle base remains  unchanged with value /u01/app/oracle
    [oracle@exadb01 ~]$ ps -ef |  greppmon
    oracle    3344   3392  0 08:54 pts/2    00:00:00 greppmon
    [oracle@exadb01 ~]$ srvctl  start asm
    [oracle@exadb01 ~]$ srvctl  start diskgroup -g DATA
    [oracle@exadb01 ~]$ srvctl  start diskgroup -g RECO
    [oracle@exadb01 ~]$ srvctl  start database -d xdbvm
    [oracle@exadb01 ~]$ ps -ef |  greppmon
    oracle    3441      1  0 08:55 ?        00:00:00 asm_pmon_+ASM
    oracle    3704      1  0 08:55 ?        00:00:00 ora_pmon_xdbvm
    oracle    4000   3392  0 08:56 pts/2    00:00:00 greppmon

  23. Realizar "Login" en la base de datos y revisar el estado:
  24. [oracle@exadb01  ~]$ . oraenv
    ORACLE_SID  = [+ASM] ?xdbvm
    
    The Oracle base remains  unchanged with value /u01/app/oracle
    [oracle@exadb01 ~]$ sqlplus  /nolog
    
    SQL*Plus: Release 11.2.0.3.0  Production on Tue Dec 3 08:57:06 2013
    Copyright (c) 1982, 2011,  Oracle.  All rights reserved.
    
    SQL> connect  sys/welcome1@xdbvm as sysdba
    
    SQL> select  open_mode,database_role from v$database;
    
    OPEN_MODE                DATABASE_ROLE
    -------------------      -----------------   
    READ WRITE               PRIMARY


Deiby Gómez es un DBA con experiencia en Oracle Exadata Database Machine y Soluciones de Alta Disponibilidad. Frecuentemente da conferencias en distintos eventos de Oracle en Guatemala tales como "Oracle Technology Network Tour", "Java Day", "Primer Simposio de Oracle" y en varias Universidades de su país de residencia (Guatemala). Deiby es el primer Oracle ACE de Guatemala. Deiby es "Oracle RAC 11g and Grid Infraestructure Administrator" y "Exadata Database Machine X3 Administrator". Constantemente publica artículos en su blog www.oraclefromguatemala.com.gt.

Yenugula Venkata RaviKumar es un DBA con más de 13 años de experiencia, especializado en ambientes de Alta Disponibilidad de Bases de Datos (RAC, Data Guard, Golden Gate, entre otras),  afinación del rendimiento para Bases de Datos, Migraciones y Respaldos, Oracle Exadata X2 y X3, experto en Sistemas operativos como AIX, HP-UX y Linux . Ha participado como conferencista en varios eventos Oracle en la India donde actualmente reside. Obtuvo el título de Oracle Certified Master 10g en el año 2009.Constantemente publica artículos en su blog http://yvrk1973.blogspot.in.