Por Deiby Gómez Robles e Yenugula Venkata RaviKumar (OCM)
Publicado en marzo 2014
Indice:
Introducción: La seguridad en el acceso a los datos es un tema muy importante que toda organización debería implementar y no descuidar. En un ambiente de "Oracle Exadata Database Machine" bien se sabe que se tienen varios servidores, unos dedicados a las instancias de base de datos (Database Servers) y otros dedicados al almacenamiento de la información (Storage Servers), por ejemplo, en un "Half Rack" se tiene 4 servidores para base de datos y 7 servidores para almacenamiento, esto da lugar a las preguntas: ¿Qué servidores de base de datos pueden acceder a cuales servidores de almacenamiento? ¿Cuales Clústeres de ASM pueden acceder qué discos? Pues bien, esa es la meta de este articulo, adentrarnos un poco más en el amplio camino que todo Administrador de Bases de Datos Oracle debe recorrer y de esta manera llegar a conocer cómo se implementa la seguridad dentro de un "Oracle Exadata Database Machine".
La seguridad en los "Exadata Cell" se encarga de identificar quienes pueden acceder los "Exadata Cell" y sus respectivos "Grid Disks", esta seguridad puede ser implementada desde dos perspectivas:
Como buena práctica se recomienda planificar la seguridad a nivel de ASM antes que la seguridad a nivel de base de datos.
Seguridad a nivel de ASM : Usando seguridad a nivel de ASM, todas las bases de datos usando el mismo clúster de ASM tendrán acceso a específicos "Grid Disk", esto es una manera de poder agrupar varias bases de datos.
Seguridad a nivel de base de datos: Usando Seguridad a nivel de base de datos, especificas bases de datos tienen acceso a determinados "Grid Disk". Se debe usar un archivo "cellkey.ora" por cada una de las bases de datos. Este método provee una granularidad más fina de poder restringir el acceso a los "Grid Disk".
Por defecto "Oracle Exadata Database Machine" permite que todos los clústeres de ASM y bases de datos en el sistema puedan acceder a todos los "Grid Disk" en cualquier "Exadata Cell", esto también es llamado por Oracle como "Seguridad Abierta".
¿Cuándo se debe implementar la seguridad en un "Oracle Exadata Database Machine"?
Ejemplo de Seguridad a nivel de ASM y base de datos:
Configuración de Seguridad a nivel de ASM
Utilizar el usuario root (Esto bajará todos los servicios):
[root@exadb01 ~]# crsctl stop crs
Utilizar el usuario oracle (Si no se tiene acceso al usuario root):
[oracle@exadb01 ~]$ ps -ef | grep pmon
oracle 3490 1 0 04:49 ? 00:00:00 asm_pmon_+ASM oracle 3739 1 0 04:50 ? 00:00:00 ora_pmon_xdbvm oracle 3912 3392 0 04:50 pts/2 00:00:00 grep pmon
[oracle@exadb01 ~]$ srvctl stop database -d xdbvm
[oracle@exadb01 ~]$ ps -ef | grep pmon oracle 3490 1 0 04:49 ? 00:00:00 asm_pmon_+ASM oracle 4139 3392 0 04:51 pts/2 00:00:00 grep pmon
[oracle@exadb01 ~]$ srvctl stop diskgroup -g DATA [oracle@exadb01 ~]$ srvctl stop diskgroup -g RECO [oracle@exadb01 ~]$ srvctl stop asm
[oracle@exadb01 ~]$ ps -ef | grep pmon oracle 4215 3392 0 04:52 pts/2 00:00:00 grep pmon
Exadata Cell Cell01:
login as: celladmin celladmin@192.168.56.101's password: Last login: Tue Dec 3 04:41:31 2013 [celladmin@cell01 ~]$ service celld status Password: rsStatus: running msStatus: running cellsrvStatus: running [celladmin@cell01 ~]$ cellcli CellCLI: Release 11.2.3.2.1 - Production on Tue Dec 03 04:53:25 GMT+00:00 2013 Copyright (c) 2007, 2012, Oracle. All rights reserved.
Cell Efficiency Ratio: 510 CellCLI> create key 8804b0e5bb8f6a4d10a0e17843e60c1
Exadata Cell Cell02:
login as: celladmin celladmin@192.168.56.102's password: Last login: Tue Dec 3 04:42:17 2013 [celladmin@cell02 ~]$ service celld status Password: rsStatus: running msStatus: running cellsrvStatus: running
Exadata Cell Cell01:
CellCLI> alter cell realmName=my_realm Cell cell01 successfully altered CellCLI> assign key for +ASM='8804b0e5bb8f6a4d10a0e17843e60c1' Key for +ASM successfully created
Exadata Cell Cell02:
CellCLI> alter cell realmName=my_realm Cell cell02 successfully altered CellCLI> assign key for +ASM='8804b0e5bb8f6a4d10a0e17843e60c1' Key for +ASM successfully created
Nota: También se puede usar comandos de DCLI para ejecutar la sentencia en todos los "Exadata Cell" requeridos:
dcli -c cell01,cell02 "cellcli -e assign key for +ASM='8804b0e5bb8f6a4d10a0e17843e60c1'
CellCLI> list griddisk DATA_CD_disk01_cell01 active DATA_CD_disk02_cell01 active DATA_CD_disk03_cell01 active DATA_CD_disk04_cell01 active DATA_CD_disk05_cell01 active DATA_CD_disk06_cell01 active DATA_CD_disk07_cell01 active DATA_CD_disk08_cell01 active DATA_CD_disk09_cell01 active DATA_CD_disk10_cell01 active DATA_CD_disk11_cell01 active DATA_CD_disk12_cell01 active RECO_CD_disk01_cell01 active RECO_CD_disk02_cell01 active RECO_CD_disk03_cell01 active RECO_CD_disk04_cell01 active RECO_CD_disk05_cell01 active RECO_CD_disk06_cell01 active RECO_CD_disk07_cell01 active RECO_CD_disk08_cell01 active RECO_CD_disk09_cell01 active RECO_CD_disk10_cell01 active RECO_CD_disk11_cell01 active RECO_CD_disk12_cell01 active
[oracle@exadb01 ~]$ dcli -g ./cell_group "cellcli -e \alter griddisk all availableTo=\'+ASM\'"
The authenticity of host 'cell01 (192.168.56.101)' can't be established. RSA key fingerprint is 39:e3:37:14:23:4c:6e:eb:08:9f:c6:07:d7:55:7e:e0. Are you sure you want to continue connecting (yes/no)? The authenticity of host 'cell02 (192.168.56.102)' can't be established. RSA key fingerprint is 39:e3:37:14:23:4c:6e:eb:08:9f:c6:07:d7:55:7e:e0. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'cell01,192.168.56.101' (RSA) to the list of known hosts. celladmin@cell01's password: Please type 'yes' or 'no': Warning: Permanently added 'cell02,192.168.56.102' (RSA) to the list of known hosts. celladmin@cell02's password: cell01: GridDisk DATA_CD_disk01_cell01 successfully altered cell01: GridDisk DATA_CD_disk02_cell01 successfully altered cell01: GridDisk DATA_CD_disk03_cell01 successfully altered cell01: GridDisk DATA_CD_disk04_cell01 successfully altered cell01: GridDisk DATA_CD_disk05_cell01 successfully altered cell01: GridDisk DATA_CD_disk06_cell01 successfully altered cell01: GridDisk DATA_CD_disk07_cell01 successfully altered cell01: GridDisk DATA_CD_disk08_cell01 successfully altered cell01: GridDisk DATA_CD_disk09_cell01 successfully altered cell01: GridDisk DATA_CD_disk10_cell01 successfully altered cell01: GridDisk DATA_CD_disk11_cell01 successfully altered cell01: GridDisk DATA_CD_disk12_cell01 successfully altered cell01: GridDisk RECO_CD_disk01_cell01 successfully altered cell01: GridDisk RECO_CD_disk02_cell01 successfully altered cell01: GridDisk RECO_CD_disk03_cell01 successfully altered cell01: GridDisk RECO_CD_disk04_cell01 successfully altered cell01: GridDisk RECO_CD_disk05_cell01 successfully altered cell01: GridDisk RECO_CD_disk06_cell01 successfully altered cell01: GridDisk RECO_CD_disk07_cell01 successfully altered cell01: GridDisk RECO_CD_disk08_cell01 successfully altered cell01: GridDisk RECO_CD_disk09_cell01 successfully altered cell01: GridDisk RECO_CD_disk10_cell01 successfully altered cell01: GridDisk RECO_CD_disk11_cell01 successfully altered cell01: GridDisk RECO_CD_disk12_cell01 successfully altered cell02: GridDisk DATA_CD_disk01_cell02 successfully altered cell02: GridDisk DATA_CD_disk02_cell02 successfully altered cell02: GridDisk DATA_CD_disk03_cell02 successfully altered cell02: GridDisk DATA_CD_disk04_cell02 successfully altered cell02: GridDisk DATA_CD_disk05_cell02 successfully altered cell02: GridDisk DATA_CD_disk06_cell02 successfully altered cell02: GridDisk DATA_CD_disk07_cell02 successfully altered cell02: GridDisk DATA_CD_disk08_cell02 successfully altered cell02: GridDisk DATA_CD_disk09_cell02 successfully altered cell02: GridDisk DATA_CD_disk10_cell02 successfully altered cell02: GridDisk DATA_CD_disk11_cell02 successfully altered cell02: GridDisk DATA_CD_disk12_cell02 successfully altered cell02: GridDisk RECO_CD_disk01_cell02 successfully altered cell02: GridDisk RECO_CD_disk02_cell02 successfully altered cell02: GridDisk RECO_CD_disk03_cell02 successfully altered cell02: GridDisk RECO_CD_disk04_cell02 successfully altered cell02: GridDisk RECO_CD_disk05_cell02 successfully altered cell02: GridDisk RECO_CD_disk06_cell02 successfully altered cell02: GridDisk RECO_CD_disk07_cell02 successfully altered cell02: GridDisk RECO_CD_disk08_cell02 successfully altered cell02: GridDisk RECO_CD_disk09_cell02 successfully altered cell02: GridDisk RECO_CD_disk10_cell02 successfully altered cell02: GridDisk RECO_CD_disk11_cell02 successfully altered cell02: GridDisk RECO_CD_disk12_cell02 successfully altered
CellCLI> list griddisk attributes name, availableTo DATA_CD_disk01_cell01 +ASM DATA_CD_disk02_cell01 +ASM DATA_CD_disk03_cell01 +ASM DATA_CD_disk04_cell01 +ASM DATA_CD_disk05_cell01 +ASM DATA_CD_disk06_cell01 +ASM DATA_CD_disk07_cell01 +ASM DATA_CD_disk08_cell01 +ASM DATA_CD_disk09_cell01 +ASM DATA_CD_disk10_cell01 +ASM DATA_CD_disk11_cell01 +ASM DATA_CD_disk12_cell01 +ASM RECO_CD_disk01_cell01 +ASM RECO_CD_disk02_cell01 +ASM RECO_CD_disk03_cell01 +ASM RECO_CD_disk04_cell01 +ASM RECO_CD_disk05_cell01 +ASM RECO_CD_disk06_cell01 +ASM RECO_CD_disk07_cell01 +ASM RECO_CD_disk08_cell01 +ASM RECO_CD_disk09_cell01 +ASM RECO_CD_disk10_cell01 +ASM RECO_CD_disk11_cell01 +ASM RECO_CD_disk12_cell01 +ASM
CellCLI> list griddisk attributes name, availableTo DATA_CD_disk01_cell02 +ASM DATA_CD_disk02_cell02 +ASM DATA_CD_disk03_cell02 +ASM DATA_CD_disk04_cell02 +ASM DATA_CD_disk05_cell02 +ASM DATA_CD_disk06_cell02 +ASM DATA_CD_disk07_cell02 +ASM DATA_CD_disk08_cell02 +ASM DATA_CD_disk09_cell02 +ASM DATA_CD_disk10_cell02 +ASM DATA_CD_disk11_cell02 +ASM DATA_CD_disk12_cell02 +ASM RECO_CD_disk01_cell02 +ASM RECO_CD_disk02_cell02 +ASM RECO_CD_disk03_cell02 +ASM RECO_CD_disk04_cell02 +ASM RECO_CD_disk05_cell02 +ASM RECO_CD_disk06_cell02 +ASM RECO_CD_disk07_cell02 +ASM RECO_CD_disk08_cell02 +ASM RECO_CD_disk09_cell02 +ASM RECO_CD_disk10_cell02 +ASM RECO_CD_disk11_cell02 +ASM RECO_CD_disk12_cell02 +ASM
[oracle@exadb01 ~]$ pwd /home/oracle [oracle@exadb01 ~]$ touch cellkey.ora [oracle@exadb01 ~]$ vi cellkey.ora [oracle@exadb01 ~]$ cat cellkey.ora key=8804b0e5bb8f6a4d10a0e17843e60c1 asm=+ASM #realm=my_realm [oracle@exadb01 ~]$
Copiar al directorio deseado (/etc/oracle/cell/network-config/)
[oracle@exadb01 ~]$ cp cellkey.ora /etc/oracle/cell/network-config/ [oracle@exadb01 ~]$ cd /etc/oracle/cell/network-config [oracle@exadb01 network-config]$ chmod 640 cellkey.ora [oracle@exadb01 network-config]$ vi cellkey.ora [oracle@exadb01 ~]$ cat cellkey.ora key=8804b0e5bb8f6a4d10a0e17843e60c1 asm=+ASM realm=my_realm
[oracle@exadb01 ~]$ ps -ef | grep pmon oracle 32175 3392 0 06:20 pts/2 00:00:00 grep pmon [oracle@exadb01 ~]$ srvctl start asm [oracle@exadb01 ~]$ ps -ef | grep pmon oracle 32261 1 0 06:20 ? 00:00:00 asm_pmon_+ASM oracle 32346 3392 0 06:20 pts/2 00:00:00 grep pmon [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 | grep pmon oracle 423 3392 0 06:24 pts/2 00:00:00 grep pmon 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 ~]$
[oracle@exadb01 ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.3.0 Production on Tue Dec 3 06:25:25 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. SQL> connect sys/welcome1@xdbvm as sysdba Connected. SQL> select open_mode,database_role from v$database; OPEN_MODE DATABASE_ROLE ------------------- ---------------- READ WRITE PRIMARY
Exadata Cell Cell01:
CellCLI> list key +ASM 8804b0e5bb8f6a4d10a0e17843e60c1
Exadata Cell Cell02:
CellCLI> list key +ASM 8804b0e5bb8f6a4d10a0e17843e60c1
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.