Oracle ASMFD : plus de sécurité ASM

La version 12.1.0.2 de la Grid Infrastructure fournit un nouveau driver pour les disk ASM : Oracle ASMFD (Oracle Automatic Storage Management Filter Driver).
Ce driver est désormais installé lors de la mise en place de la Grid Infrastructure 12.1.0.2.
Oracle ASMFD renforce la sécurité des données contenues dans les disk ASM ainsi que des disk ASM eux-mêmes.
En effet, lors de l’utilisation d’Oracle AMSLIB, un disk ASM appartient au propriétaire de la Grid Infrastructure.
Tout utilisateur appartenant au groupe OSASM peut lire et écrire sur le disk ASM via des commandes classiques telles que strings, dd, …
Oracle ASMFD n’accepte que les demandes d’I/O effectuées par root.
Toute action du style dd faite par un autre utilisateur ne sera pas commitée sur le disk ASM.
Ce driver n’est disponible actuellement que sur Linux.
Son utilisation reste toutefois facultative lors de la création de vos disk ASM.

Migration de disks ASM de ASMLIB vers ASMFD
Cette démonstration d’Oracle ASMFD s’effectuera sur une Grid Infrastructure standalone 12.1.0.2 où ASMLIB est actuellement configuré et utilisé.

[root@DBNode1 ~] # lsmod | grep oracle
oracleasm              53591  1
[root@DBNode1 ~]# ls -ltr /dev/oracleasm/disks
total 0
brw-rw----. 1 oracle dba 8, 17 Oct 10 11:44 DISK1
brw-rw----. 1 oracle dba 8, 33 Oct 10 11:44 DISK2
brw-rw----. 1 oracle dba 8, 49 Oct 10 11:44 DISK3
brw-rw----. 1 oracle dba 8, 65 Oct 10 11:44 DISK4

Actuellement, tous les utilisateurs appartenant au groupe dba peuvent écrire sur les disk ASM.

[grid@DBNode1 ~] $ asmcmd afd_state
ASMCMD-9526: The AFD state is 'NOT INSTALLED' and filtering is 'DEFAULT' on host 'DBNode1'

Le driver Oracle ASMFD n’est actuellement pas configuré.
Nous allons modifier la chaîne de caractères définissant le chemin des disk ASM.

[grid@DBNode1 ~] $ asmcmd dsset 'ORCL:*','AFD:*'
[grid@DBNode1 ~] $ asmcmd dsget
parameter:ORCL:*, AFD:*
profile:ORCL:*,AFD:*

Nous stoppons les process Oracle (Database, ASM et CRS).

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[root@DBNode1 ~] # srvctl stop asm -f
[root@DBNode1 ~] # crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'DBNode1'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'DBNode1'
CRS-2673: Attempting to stop 'ora.evmd' on 'DBNode1'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'DBNode1' succeeded
CRS-2677: Stop of 'ora.evmd' on 'DBNode1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'DBNode1'
CRS-2677: Stop of 'ora.cssd' on 'DBNode1' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'DBNode1' has completed
CRS-4133: Oracle High Availability Services has been stopped.

Passons désormais à la configuration d’Oracle ASMFD.

[root@DBNode1 ~] # asmcmd afd_configure
Connected to an idle instance.
AFD-627: AFD distribution files found.
AFD-636: Installing requested AFD software.
AFD-637: Loading installed AFD drivers.
AFD-9321: Creating udev for AFD.
AFD-9323: Creating module dependencies - this may take some time.
AFD-9154: Loading 'oracleafd.ko' driver.
AFD-649: Verifying AFD devices.
AFD-9156: Detecting control device '/dev/oracleafd/admin'.
AFD-638: AFD installation correctness verified.
Modifying resource dependencies - this may take some time.
ASMCMD-9524: AFD configuration failed 'ERROR: OHASD start failed'
Modifying resource dependencies - this may take some time.
ASMCMD-9524: AFD configuration failed 'ERROR: OHASD start failed'
[root@DBNode1 ~] # asmcmd afd_state
Connected to an idle instance.
ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'DEFAULT' on host 'DBNode1'

Notons que les disks ASM sont désormais visibles dans le répertoire /dev/oracleafd.
Le propriétaire des disk ASM est root.

[root@DBNode1 ~] # ls -l /dev/oracleasm/*
ls: /dev/oracleasm/*: No such file or directory
[root@DBNode1 ~] # ls -l /dev/oracleafd/disks
total 0
-rw-r--r--. 1 root root 8, 17 Oct 10 11:44 DISK1
-rw-r--r--. 1 root root 8, 33 Oct 10 11:44 DISK2
-rw-r--r--. 1 root root 8, 49 Oct 10 11:44 DISK3
-rw-r--r--. 1 root root 8, 65 Oct 10 11:44 DISK4

Nous allons démarrer la stack du clusterware.

[root@DBNode1 ~] # crsctl start has
CRS-4123: Oracle High Availability Services has been started.

Les disks ASM ont bien été migrés sur Oracle ASMFD.

ASM>  select name, path, total_mb, free_mb from v$asm_disk;
NAME                           PATH                             TOTAL_MB    FREE_MB
------------------------------ ------------------------------ ---------- ----------
RECO_0001                      AFD:DISK4  		           10236       9523
RECO_0000                      AFD:DISK3          		   10236       9523
DATA_0001                      AFD:DISK2          		   10236       8072
DATA_0000                      AFD:DISK1          		   10236       8072

Nous modifions la chaîne de caractères définissant le chemin des disk ASM pour ne prendre en compte qu’Oracle ASMFD.

SQL> ALTER SYSTEM set asm_diskstring = 'AFD:*';
[grid@DBNode1 ~] $ asmcmd dsget
parameter:AFD:*
profile:AFD:*

Désormais, il est impossible pour un utilisateur non-root d’effectuer une action sur les disks ASM.

[grid@DBNode1 ~]$ echo 'test' >  /dev/oracleafd/disks/DISK1
bash: /dev/oracleafd/disks/DISK1: Permission denied

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *