Pour être capable d'utiliser Kerberos avec une base de données Oracle :
La configuration a été faite sur un serveur Linuz mais sur Solaris c'est la même chose.
Identifier le nom du serveur de base de
données :
oracle@donsuxx:/home/oracle>
cat /etc/hosts
127.0.0.1 localhost
10.103.yy.xxx donsuxx.domain.intra
donsuxx
Créer les comptes dans l’AD selon l’exemple
ci-dessous
Compte de type « User », ce compte représente le nom du serveur :
Name : donsuxx
Full name : donsuxx.domain.intra
User logon : donsuxx
Password : Password!1
Compte de type « User », ce compte sert à renouveler
les jetons :
Name : SVRENOUV
Full name : SVRENOUV
User logon : SVRENOUV
Password : Password!2
Option : User cannot change password et
Password never expires
Compte de type « User », ce compte est l’owner
de la bd :
Name : ORACLE
Full name : ORACLE
User logon : ORACLE
Password : Password!3
Option : User cannot change password et
Password never expires
· Créer le compte «SVRENOUV » sur le
serveur de base de données avec le même mot de passe de l’AD.
DROP USER "SVRENOUV@DOMAIN.INTRA" CASCADE;
CREATE USER "SVRENOUV@DOMAIN.INTRA"
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
GRANT CREATE SESSION TO
"SVRENOUV@DOMAIN.INTRA";
· Le compte « ORACLE » qui existe déjà
sur le serveur doit avoir aussi le même mot de passe que dans l’AD
DROP USER "ORACLE@DOMAIN.INTRA" CASCADE;
CREATE USER "ORACLE@DOMAIN.INTRA"
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
GRANT CREATE SESSION TO
"ORACLE@DOMAIN.INTRA";
·
Dans l’AD, vérifier si de doublons existent sur
le compte qu’on vient de créer (celle qui représente la machine). En théorie il ne doit pas en avoir de
doublons reliés à notre compte.
Commande : setspn –X
·
Dans l’AD, créer le keytab
ktpass -princ
oraevta/donsuxx.domain.intra@DOMAIN.INTRA -crypto all -pass Password!1
-mapuser donsuxx@DOMAIN.INTRA -ptype KRB5_NT_PRINCIPAL -out C:\key\keytab
Dans la commande il faut cibler :
o
Le nom du service « oraevta » est
juste un nom à utiliser qui doit coïncider avec le nom spécifié dans le
sqlnet.ora de la bd.
Il
pourrait être par exemple : ora, ora11, etc.
o
Le paramètre « -pass » correspond au
même mot de passe du compte qui représente la machine qu’on vient de créer.
o
Le paramètre « -mapuser » doit faire
référence au même compte.
·
Envoyer le fichier « keytab » qu’on
vient de créer vers le serveur de bd et le placer à l’endroit indiqué dans le
« sqlnet.ora ».
·
Vérifier le nom du fichier tampon pour les
jetons
·
Valider les privilèges sur les fichiers
-rw-rw---- 1 oracle oinstall 437 2016-04-22 09:37
keytab
-rwxrwx--- 1 oracle oinstall 692 2016-04-21 16:33
krb5.conf
·
Valider que les entrés dans le fichier services
soient comme ça :
oracle@donsuxx:> cat /etc/services | grep
kerberos
kerberos
88/tcp kerberos5 krb5 # Kerberos
kerberos
88/udp kerberos5 krb5 # Kerberos
kerberos-adm 749/tcp
# kerberos administration
kerberos-adm 749/udp
# kerberos administration
kerberos-iv 750/udp
kerberos4 kerberos-sec kdc #
kerberos version iv
kerberos-iv 750/tcp
kerberos4 kerberos-sec kdc
kerberos_master
751/udp # Kerberos authentication
kerberos_master
751/tcp # Kerberos authentication
·
Sur le serveur de BD, détruire les jetons
existants, le nom du fichier .RC sera en fonction du nom du service.
okdstry -c /tmp/tmpevta
rm /tmp/oraevta.RC
·
Sur le serveur de BD, Initialiser les jetons,
fournir le mot de passe demandé.
okinit -c /tmp/tmpevta -e 23 SRV_RENOUV
ou selon le chiffrement
okinit -c /tmp/tmpevta -e
1 -e 3 oracle
Exemple :
oracle@donsuxx:/home/oracle>
okinit -c /tmp/tmpevta -e 23 SVRENOUV
Kerberos Utilities
for Linux: Version 11.2.0.4.0 - Production on 22-APR-2016 10:02:30
Copyright (c) 1996,
2013 Oracle. All rights reserved.
·
Sur le serveur de BD, lister les jetons
oklist
oracle@donsuxx:/home/oracle> oklist
Kerberos Utilities for Linux: Version 11.2.0.4.0 - Production on 22-APR-2016 11:28:16
Copyright (c) 1996, 2013 Oracle. All rights reserved.
Ticket cache: /tmp/tmpevta
Default principal: SVRENOUV@DOMAIN.INTRA
Valid Starting Expires Principal
22-Apr-2016 10:04:08 22-Apr-2016 18:02:30 krbtgt/DOMAIN.INTRA@DOMAIN.INTRA
·
Sur le serveur de BD, tester la connexion
kerberos. Il faut noter que la connexion est faite avec le même utilisateur qui
a fait le renouvellement
sqlplus /@MABD
oracle@donsuxx:~>
sqlplus /@MABD
SQL*Plus: Release 11.2.0.4.0 Production on Fri Apr 22
11:29:03 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release
11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real
Application Testing options
SQL> show user
USER is "SVRENOUV@DOMAIN.INTRA"
Note: Si vous voulez tester la connexion sur une base de données StandBy, elle doit être en Snapshot et non pas en Physical pour que la connexion se fasse.
Le Client Windows 2008 R2
Exemple de "sqlnet.ora"
# sqlnet.ora Network Configuration File:
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN
# Generated by Oracle configuration tools.
NAMES.DEFAULT_DOMAIN = votredomain.ca
################################################################
# Methodes Authentifications utilises sont TCPS and
Kerberos5
################################################################
NAMES.DIRECTORY_PATH=(TNSNAMES)
SQLNET.AUTHENTICATION_SERVICES=(BEQ,KERBEROS5)
################################################################
# Ajoute pour la
configuration Kerberos 5 -
################################################################
SQLNET.KERBEROS5_CONF=C:\Logiciels\oracle\ora1120\kerberos\krb5.conf
SQLNET.KERBEROS5_CONF_MIT=true
SQLNET.KERBEROS5_CC_NAME = OSMSFT://
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=ora
SQLNET.EXPIRE_TIME=0
Le Client Windows 2012 R2
Exemple de "sqlnet.ora"
# sqlnet.ora Network Configuration File: C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN
# Generated by Oracle configuration tools.
NAMES.DEFAULT_DOMAIN = votredomain.ca
################################################################
# Methodes Authentifications utilises sont TCPS and Kerberos5
################################################################
NAMES.DIRECTORY_PATH=(TNSNAMES)
SQLNET.AUTHENTICATION_SERVICES=(NTS)
################################################################
# Ajoute pour la configuration Kerberos 5 -
################################################################
SQLNET.KERBEROS5_CONF=C:\Logiciels\oracle\ora1120\kerberos\krb5.conf
SQLNET.KERBEROS5_CONF_MIT=true
SQLNET.KERBEROS5_CC_NAME = OSMSFT://
SQLNET.AUTHENTICATION_KERBEROS5_SERVICE=ora
SQLNET.EXPIRE_TIME=0