la confidentialité

Adapter ces3  mécanismes avec prudence totale :

1.1 L’authentification :
Est le processus qui permet de vérifier qu’un utilisateur réclamant un accès est bien celui qu’il prétend être, ou plus simplement le processus qui contrôle l’identité de l’utilisateur. Cette action (login) se fait en général via la fourniture du couple nom d’utilisateur / mot de passe.
Conseil :
-         Sécuriser les comptes par défaut après installation.
-         Utiliser des mots de passe sécurises complexe, renouveler régulièrement.
-         S’assurer que remote_os _authentification=FALSE (pour empêcher les mutilateurs a distant de connecter sans mot de passe).
-         Pour renforcer le processus d’identification on peut :
1. ajouter l’@IP au couple nom d’utilisateur / mot de passe (pour connue @IP du user sur le réseau en utilise la fonction système sys_context ou la vue v_$session pour l’hôte).
2. autoriser l’utilisation de certain applicatifs qu’a certain comptes.
Voici un exemple de déclencheur sur connexion qui  filtre les @IP et n’autorise qu’a certain, et permet de  n’autoriser l’utilisation de certains applicatifs qu’a certains compte :













create or replace TRIGGER "SYS"."BLOCK_USER_ACCESS"
AFTER LOGON ON DATABASE

DECLARE
v_prog sys.v_$session.program%TYPE;
v_dbuser sys.v_$session.username%TYPE;
v_osuser sys.v_$session.osuser%TYPE;
v_db sys.v_$database.name%TYPE;
v_terminal  sys.v_$session.terminal%TYPE;
v_ausid  sys.v_$session.audsid%TYPE;
ip_add  varchar2(256);

BEGIN
/* Récupération des informations utiles dans v$sessios */

SELECT upper(program), upper(username), upper(osuser),upper(terminal)
INTO   v_prog, v_dbuser, v_osuser,v_terminal
FROM sys.v_$session
WHERE  audsid = USERENV('SESSIONID')
AND  audsid != 0  -- N'impacte pas la connexion SYS
AND  rownum = 1;

SELECT upper(name)
INTO   v_db
from v$database;

/*récupérer l’@ip */

SELECT UTL_INADDR.get_host_address(v_terminal) INTO ip_add FROM dual;

/* le filtrage */

IF  v_dbuser NOT IN ('SYSTEM', 'SYS')
AND (ip_add !='192.168.0.2')
AND(v_prog not LIKE 'SQLPLUS%')

THEN
RAISE_APPLICATION_ERROR(-20000,  'ORACLE  n''est pas autorisé à connecté puisque vous ete étranger' ||' sur l''environnement '||v_db);

END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
END;


-         Sans oublier la sécurité du SE pour les fichiers, et la sécurité ”Physique“ des serveurs.


1.2 Les droits, privilèges et les rôles :
 Une fois correctement identifié l’utilisateur doit pouvoir accéder aux informations
et ressources auxquelles il a droit (et uniquement à celle là!) Ce problème est résolu le plus simplement avec la gestion de droits élémentaires accordé à un individu, ou plus efficacement avec des rôles affectés à des groupes d’individus.

Conseil :
-          Toujours accorder le minimum de privilèges aux utilisateurs
-         Ensembles de privilèges, pour simplifier leur gestion :
Pour que votre travail soit bien organisé, travailler seulement avec  les rôles :
-Attribuer aux rôles utilisateurs des rôles d’application : Pas de privilèges individu
-Diviser vos personnels sur des groupes (Administrateurs, Développeurs, utilisateurs de saisie,..) puis créer des rôles aux nombre des groupes.

Exemple :

Rôle pour les agents de saisie: Les privilèges système assignés a ce  rôle sont : CREATE SESSION  pour se connecté et SELECT, INSERT, UPDATE, DELETE  sur certains tables.

Rôle pour les développeurs: Les privilèges système assignés a ce  rôle sont : CREATE SESSION  pour se connecté et CREATE TABLE, CREATE CLUSTER, CREATE SYNONYM, CREATE VIEW, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE PROCEDURE, CREATE TRIGGER, CREATE TYPE… (Qui sont regroupé dans le rôle RESOURCE).
1.3 Les profils :
Afin d'augmenter la sécurité de la base de données il peut être très intéressant de mettre en place une gestion des mots de passe comme le nombre maximal de tentatives de connexion à la base, le temps de verrouillage d’un compte, etc....

Il peut parfois aussi être intéressant de limiter les ressources système allouées à un utilisateur afin d'éviter une surcharge inutile du serveur.

Oracle nous propose une solution efficace et pratique pour mettre en place ce type d'action : les PROFILS.
Conseil :
-         c’est très important de créer des profils aux nombre des groupes, pas moins importance que les rôles.
Exemple : profile pour un utilisateur :
CREATE PROFILE   prof_admin
LIMIT
FAILED_LOGIN_ATTEMPTS     3
SESSIONS_PER_USER     1 
CONNECT_TIME             30 
              ……………………………..….……… 
               ……………………………..….……… ;