Oracle Database 12cR2 (12.2.0) ACFS Security y ACFS Encryption

Por Y V Ravi Kumar Oracle ACE director, Gavin Soorma Oracle ACE director, Julio César Ayapán Oracle Associate
Publicado en Octubre 2018

Revisado por Francisco Riccio



Introducción


Oracle Automatic Storage Management Cluster File System (ACFS) extiende la funcionalidad de ASM para soportar no solo archivos Oracle como ejecutables, Oracle Data Files, Trace files, Alert log files sino que también otro tipo de archivos como por ejemplo: archivos de texto, video, audio e imágenes.

Oracle ACFS Security provee políticas de acceso de grano fino para usuarios y grupos hacia los sistemas de archivo y directorios a través de ámbitos de seguridad (Security Realms) así como características de encriptación para proteger el contenido de los archivos dentro de estos ámbitos almacenados dentro del file system ACFS.

A muy alto nivel, los siguientes pasos deben ser ejecutados para activar ACFS Security y ACFS Encryption para un sistema de archivos ACFS:

  • Crear ASM disk groups.
  • Crear volumen ADVM (ASM Dynamic Volume Manager).
  • Crear un file system ACFS.
  • Inicializar Security para el file system ACFS.
  • Opcionalmente, inicializar Encryption para el file system ACFS.
  • Preparar el file system ACFS para seguridad.
  • Opcionalmente, activar Encryption para el file system ACFS.
  • Crear uno o más Security Realms para el file system.
  • Crear reglas de seguridad.
  • Crear conjuntos de reglas de seguridad que llamaremos Security Rule Sets.
  • Asignar reglas de seguridad a los Rule Sets.
  • Agregar objetos al Security Realm.
  • Generar una copia de seguridad de la metadata del file system afectado.

Algunos de los pasos listados arriba pueden ser ejecutados usando la interfaz gráfica Oracle 12c Release 2 ASM Configuration Assistant (ASMCA), mientras que los restantes deben ser ejecutados mediante la interfaz de línea de comandos acfsutil.


Veamos el procedimiento mas a detalle:


Iniciar ASMCA desde el home de Oracle 12c Release 2 Grid Infrastructure







Crear el ASM disk group – ACFS_DATA





Para ello damos clic sobre el botón Create…





Seleccionamos los discos que conformaran nuestro disk group y damos clic sobre OK...







Una vez finalizado el disk group, crearemos el volumen ADVM





Clic derecho sobre el directorio Volumes y seleccionamos Create …





Le colocamos un nombre al volumen, seleccionamos el disk group que creamos en el paso anterior y el resto de opciones pueden permanecer con los valores default, clic sobre OK...








Inicializar Security para el file system ACFS

Debemos inicializar el sistema de seguridad como primer paso en la configuración de ACFS Security.





Damos clic derecho sobre el directorio ACFS File Systems y seleccionamos Security and Encryption…

Debemos asignar un usuario de sistema operativo existente como el administrador inicial de ACFS Security, también debemos elegir el grupo de sistema operativo designado como Security Admin.

De ser necesario, el administrador de ACFS Security puede crear Security Admins adicionales.





Opcionalmente, el encriptamiento para ACFS File system puede ser inicializado junto con la opción de Security marcando la opción Configure Encryption y Create Password Protected Wallet. Wallet y passwords serán creados durante el proceso de inicialización de Security.

El password necesitará ser especificado por el administrador cada vez que se utilice un comando mediante el utilitario acfsutil.

Clic sobre Show Command...





Como usuario root, ejecutamos el comando acfsutil sec init para configurar el almacenamiento de credenciales en un secure wallet a la vez que confirmamos el usuario de sistema operativo que será el Securyty Admin. Este comando debe ser ejecutado una sola vez para todo el clúster y puede ser ejecutado desde cualquier nodo.

El comando solicitara la contraseña del security wallet.





Crear el punto de montaje para ACFS en todos los nodos del cluster






Crear el File System ACFS





Clic derecho sobre el directorio ACFS File Systems y seleccionamos create, luego seleccionamos el punto de montaje creado en el paso anterior para el file system ACFS.





Clic sobre Show Command





Clic sobre Ok...





Como usuario root, ejecutar el script acfs_script.sh generado por el asistente.

El script acfs_script.sh registrará el file system ACFS con el cluster registry y montará el file system en todos los nodos del clúster automáticamente.





Note que el file system ACFS está ahora montado en todos los nodos del clúster.





Podemos verificar que la operación de montado se ha realizado con éxito mediante el comando df -h de sistema operativo en cada uno de los nodos:





Preparar el file system ACFS para ACFS Security

Este paso debe ser ejecutado antes de correr cualquier otro comando de administración relacionado con security realms.

Note que el usuario root no está asignado como Security Admin y no es capaz de ejecutar ningún comando acfsutil sec – el Security Admin., que fue inicialmente establecido, es el unico capaz de ejecutar comandos acfsutil sec.

El siguiente comando creará automáticamente tres Security realms:

SYSTEM_logs – este Security Realm es para proteger los archivos de registro relacionados con la seguridad de ACFS ubicados en el directorio /mount_point/.Security/realm/logs.

SYSTEM_SecurityMetaData – este Security Realm es para proteger el archivo XML de metadatos de Oracle ACFS almacenado en el directorio .Security/backup/.

SYSTEM_BackupOperators – Este Security Realm permite autorizar a los usuarios que pueden realizar copias de seguridad de archivos y directorios dentro del Security Realm.





Activar Encryption para el File System ACFS

Después de haber inicializado  ACFS Security, opcionalmente podemos habilitar ACFS Encryption. El primer paso para encriptar un sistema de archivos Oracle ACFS es habilitar el sistema de Encriptación.



Nota: se debe ejecutar el siguiente comando como usuario root para inicializar la encriptación del file system ACFS:

# /sbin/acfsutil encr init



También podemos habilitar encriptación para directorios y archivos utilizando el comando acfsutil near on que puede ser ejecutado por el usuario root o por el usuario que definimos como Security Admin.

En el siguiente ejemplo, habilitamos encriptación recursiva sobre todos los archivos dentro del directorio /confidential/topsecret.

/sbin/acfsutil encr on -r /confidential/topsecret -m /confidential




Creando el Security Realm

Ejecutar el comando acfsutil sec realm create para crear un Security Realm para el file system /confidential.

Tenga en cuenta que también podemos habilitar encriptación para el file system /confidential.

[oracle@host02 topsecret]$ /sbin/acfsutil sec realm create myrealm1 -m /confidential -e 
on -a  AES -k 128
ACFS Security administrator password:




Creando Reglas de seguridad (Security Rules)

Crear una regla que denegara el acceso al usuario de Sistema operativo ‘gavin’.

[oracle@host02 topsecret]$ /sbin/acfsutil sec rule  create myrule1 -m /confidential -t 
username gavin -o DENY

ACFS Security administrator password:




Crear Security Role Sets

Crear un Rule Set y después añadir la regla creada en el paso anterior.

[oracle@host02 topsecret]$ /sbin/acfsutil sec ruleset create myruleset1 -m /confidential
ACFS Security administrator password:
  
[oracle@host02 topsecret]$ /sbin/acfsutil sec ruleset edit myruleset1 -m /confidential 
-a myrule1
ACFS Security administrator password:




Añadir objetos al Security Realm

Ejecute el comando acfsutil sec realm add para añadir objetos, como reglas, rule sets y usuarios al Security Realm.

Cuando añadimos un Rule Set a un Security Realm, podemos especificar command rules junto con la regla añadida. Por ejemplo, en la regla añadida anteriormente con la opción DENY. El command rule ALL significa que todas las operaciones de file system sobre archivos y directorios dentro del file system ACFS seguro serán denegadas al usuario de sistema operativo ‘gavin’.

[oracle@host02 topsecret]$ /sbin/acfsutil sec realm add myrealm1 -m /confidential -l 
ALL:myruleset1 -f -r /confidential/topsecret
ACFS Security administrator password:



Ejecute el comando acfsutil sec info para desplegar la información de un Security Realm.

[oracle@host02 topsecret]$ /sbin/acfsutil sec info -m /confidential -n myrealm1
ACFS Security administrator password:

Realm status: ENABLED

Users present in realm 'myrealm1' are as follows : 
Groups present in realm 'myrealm1' are as follows : 
Filters present in realm 'myrealm1' are as follows : 
        ALL : myruleset1

Encryption status : ON 
Encryption algorithm : AES 
Encryption key length : 128 

Realm description : ''


Nota – recuerde que el usuario root no puede ejecutar ningún comando acfsutil sec. Todos estos comandos deben ser ejecutados con el usuario asignado como Security Admin.

[root@host02 topsecret]# /sbin/acfsutil sec info -m /confidential
acfsutil sec info: ACFS-10662: Current user 'root' does not have security 
administrator privileges.
acfsutil sec info: ACFS-10606: User 'root' is not a security administrator.




Probando ACFS Security y ACFS Encryption

Nos conectaremos con el usuario de sistema operativo ‘gavin’ e intentaremos acceder a cualquier archivo almacenado en el file system securo ACFS dentro del directorio /confidential/topsecret.

[gavin@host02 ~]$ cd /confidential/topsecret/
[gavin@host02 topsecret]$ ls -l
ls: cannot open directory .: Permission denied

[gavin@host02 topsecret]$ cd ..



Sin embargo, el mismo usuario si puede acceder al directorio raíz /confidential.

[gavin@host02 confidential]$ ls -l
total 116
drwx------. 2 root   root 65536 May  4 11:30 lost+found
drwxr-xr-x. 2 oracle dba  20480 May  4 13:02 topsecret



El usuario root tampoco tendrá acceso al directorio /confidential/topsecret.

[root@host02 topsecret]# pwd
/confidential/topsecret

[root@host02 topsecret]# ls -l
ls: cannot open directory .: Permission denied



Podemos usar el comando acfsutil encr info para ver la configuración de la encriptación a nivel de directorio así como para archivos individuales dentro de ese directorio.

[oracle@host02 topsecret]$ /sbin/acfsutil encr info -m /confidential -r 
/confidential/topsecret
Path: /confidential/topsecret
        Encryption status: ON
        Algorithm: AES 128-bits
        Key length: 16 bytes
Path: /confidential/topsecret/secret1.txt
        Encryption status: ON
        Algorithm: AES 128-bits
        Key length: 16 bytes



A continuación, vamos a modificar la regla de seguridad myrule1 que pasara de DENY hacia ALLOW para el usuario de sistema operativo ‘gavin’.

[oracle@host02 ~]$ acfsutil sec rule edit myrule1 -m /confidential -t 
username gavin -o ALLOW
ACFS Security administrator password:



Nos reconectamos como usuario ‘gavin’ y esta vez seremos capaces de ver y acceder a los contenidos no solo del file system seguro ACFS /confidential/topsecret sino tambien al archivo secret1.txt ubicado en ese directorio. Anteriormente no había sido posible, pero ahora la regla de seguridad ALLOW otorga el acceso junto al command rule ALL que le da al usuario ‘gavin’ privilegios completos sobre todo el file system seguro ACFS. 

[root@host02 trace]# su – gavin
[gavin@host02 ~]$ cd /confidential/topsecret/
[gavin@host02 topsecret]$ ls -l
total 4
-rw-r--r--. 1 oracle dba 13 May  4 13:06 secret1.txt

[gavin@host02 topsecret]$ vi secret1.txt 
[gavin@host02 topsecret]$ cat secret1.txt 
TOP SECRET!!



Cámbienos ahora el command rule ALL y colóquemelo como READ para el rule set myruleset1.

[oracle@host02 ~]$ acfsutil sec realm add myrealm1 -m /confidential -l 
READ:myruleset1
ACFS Security administrator password:
[oracle@host02 ~]$ exit



Verificando los usuarios que forman parte del Security Realm y los filtros presentes para un Rule Set en particular que son parte de un mismo Security Realm.

[oracle@host02 ~]$ /sbin/acfsutil sec info -m /confidential -n myrealm1
ACFS Security administrator password:
Realm status: ENABLED

Users present in realm 'myrealm1' are as follows : 
        root
        oracle
        gavin

Groups present in realm 'myrealm1' are as follows : 

Filters present in realm 'myrealm1' are as follows : 
        READ : myruleset1

Encryption status : ON 
Encryption algorithm : AES 
Encryption key length : 128 



Nuevamente, nos reconectaremos con el usuario de sistema operativo ‘gavin’ y ahora notaremos que el usuario puede leer el contenido del archivo secret1.txt, pero no podrá realizar ningún otro tipo de operación como renombrar o editar el archivo así como tampoco crear un nuevo archivo en el directorio protegido.

[root@host02 bin]# su - gavin
[gavin@host02 ~]$ cd /confidential/topsecret/
[gavin@host02 topsecret]$ cat secret1.txt 
TOP SECRET!!
[gavin@host02 topsecret]$ mv secret1.txt secretnew.txt
mv: cannot move `secret1.txt' to `secretnew.txt': Permission denied

[gavin@host02 topsecret]$ touch xyz
touch: cannot touch `xyz': Permission denied



¿Que pasaría si tratáramos de copiar el archivo encriptado hacia otro servidor utilizando el comando scp?

[oracle@host02 topsecret]$ scp -rp secret1.txt oracle@host01:/home/oracle
secret1.txt                                     0%    0     0.0KB/s   --:-- ETA
secret1.txt: Permission denied



Si creamos un archivo en la raíz del directorio /confidential, podremos ver que este archivo si es posible copiarlo hacia otro servidor.

[oracle@host02 topsecret]$ cd ..

[oracle@host02 confidential]$ echo "TOP SECRET" > not_a_secret_file.txt
[oracle@host02 confidential]$ scp -rp not_a_secret_file.txt oracle@host01:/home/oracle
not_a_secret_file.txt                         100%   11     0.0KB/s   00:00





Conclusión: Oracle ACFS Security provee seguridad para File Systems Oracle ACFS basado en ambientes (Security Realms) y proporciona un control de acceso de grano fino en una capa superior a la del control de acceso proporcionado por el sistema operativo.
Oracle ACFS Encryption permite a los usuarios encriptar datos almacenados en disco y protege los datos en un file system Oracle ACFS previniendo el uso no autorizado de datos en caso de perdida o robo.



YV Ravi Kumar es un Oracle ACE Director y Oracle Certified Master (OCM) con 20 años de experiencia en Banca, Servicios financieros y seguros (BFSI) y ha ocupado varios puestos como Vise Presidente (IT), Senior Database Architect y Production DBA. Tambien es OCP en Oracle 8i, 9i, 10g, 11g y 12c y posee certificaciones en Golden Gate, RAC, Performance Tuning y Oracle Exadata.
Ha publicado mas de 100 articulos para OTN-Español, OTN-Portugues, OTN-Ingles, TOAD World, UKOUG, OTech Magazine y Redgate.
Ha sido speaker en @OOW, @NYOUG, @OTN, @AIOUG, Samgam y @IOUG. Diseñó, arquitectó e implementó la Base de Datos del Sistema Bancario Central (CBS) para los Bancos Centrales de dos países: India y Mahe, Seychelles.
Es cofundador de OraWorld (www.oraworld.com). Aprenda mas sobre su perfil en LaseSoft.

Gavin Soorma es un Oracle ACE Director, Oracle Certified Master (10g, 11g y 12c), Oracle Certified Specialist (GoldenGate, Exadata 11g, Exadata Database Machine 2014) y Oracle OCP (8i a 12c).

Julio Ayapán es ingeniero en Ciencias y Sistemas, Administrador de base de datos Oracle con más de 4 años de experiencia en proyectos de infraestructura, Bases de Datos Oracle 10g, 11g y 12c sobre Linux y Solaris. Posee la certificación “Oracle Certified Professional 11g y 12c” y Oracle ACE Associate. Ha sido Conferencista en OTN Tour Latinoamericano 2016 y 2017 en Guatemala. Es parte de la junta directiva del Grupo de Usuarios Oracle de Guatemala (GOUG). Actualmente es Consultor de Bases de datos Oracle en eProseed Central America. Publica artículos frecuentemente en su blog http://oraclehomegt.blogspot.com. Twitter @jayapangt.

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.