Translate

samedi 7 mai 2016

Kerberos - Oracle (Serveur) 11g


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
    Option             : Password never expire





      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 les comptes dans la bases de données 

·       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.

Password for SVRENOUV@DOMAIN.INTRA:


·        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