- Einleitung
- ACL anpassen
- Wallet mit orapki erstellen
- Wallet mit Oracle Wallet Manager (own) erstellen
- DBMS_LDAP Anpassungen
- Prüfen dier Konfiguration
- Troubleshooting
Einleitung
In dem Beispiel ist der LDAP-Server ein Windows Server 2019. Der Server ist zugleich auch der Domänen-Controller.
Die Domäne trägt den Namen "DEMO.LOCAL" .
Die Anleitung bezieht sich auf die Verwendung des Packages DBMS_LDAP.
Für die Kommunikation mit dem Active-Directory über LDAPs (SSL) werden die aufgeführten Zertifikate benötigt.
Zertifikate:
# Wir benutzen, da es sehr einfach geht, das Root-Zertifikat von DEMO.LOCAL
demo.local_DER_Codierung.cer
ACL anpassen
Den SQL als SYSTEM oder SYS auführen.
ACL anlegen:
begin
dbms_network_acl_admin.create_acl(
acl => 'ldaps.xml',
description => 'LDAPs Kommunikation zum AD',
principal => 'PUBLIC', -- PARSING SCHEMA der Anwendung
is_grant => true,
privilege => 'connect'
);
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
acl => 'ldaps.xml',
principal => 'PUBLIC', -- PARSING SCHEMA der Anwendung
is_grant => true,
privilege => 'resolve'
);
dbms_network_acl_admin.assign_acl(
acl => 'ldaps.xml',
host => 'demo.local',
lower_port => 636,
upper_port => 636
);
end;
ACL prüfen:
select * from DBA_NETWORK_ACLS;
select * from DBA_NETWORK_ACL_PRIVILEGES;
ACL löschen:
begin
dbms_network_acl_admin.drop_acl(acl => 'ldaps.xml');
end;
/
Wallet mit orapki erstellen
Oracle Doku: Managing Public Key Infrastructure (PKI) Elements
Das Wallet wird unter /app/oracle/ldap_wallet gespeichert.
Wallet erstellen:
# -wallet wallet_loc
# pwd Wallet Passwort
#orapki wallet create -wallet <WALLET_DIR> -auto_login -pwd <PASSWORT>
#Beispiel
orapki wallet create -wallet /app/oracle/ldap_wallet -auto_login -pwd Oracle123
Zertifikate hinzufügen:
# -wallet wallet_loc
# pwd Wallet Passwort
# -cert Zertifikat
#orapki wallet add -wallet <WALLET_DIR> -pwd <PASSWORT> -trusted_cert -cert "<ZERTIFIKAT>"
#Beispiel
orapki wallet add -wallet /app/oracle/ldap_wallet -pwd Oracle123 -trusted_cert -cert "/mnt/hgfs/installs/Zertifikate/demo.local_DER_Codierung.cer"
Zertifikate anzeigen:
# -wallet wallet_loc
# pwd Wallet Passwort
#orapki wallet display -wallet <WALLET_DIR> -pwd <PASSWORT>
#Beispiel:
orapki wallet display -wallet /app/oracle/ldap_wallet -pwd Oracle123
$ orapki wallet display -wallet /app/oracle/ldap_wallet -pwd Oracle123
Oracle PKI Tool Release 21.0.0.0.0 - Production
Version 21.0.0.0.0
Copyright (c) 2004, 2020, Oracle and/or its affiliates. All rights reserved.
Requested Certificates:
User Certificates:
Trusted Certificates:
Subject: CN=demo-DC1-CA,DC=demo,DC=local
[oracle@prod-db1@PROD] /app/oracle/ldap_wallet
Wallet mit Oracle Wallet Manager (owm) erstellen
Oracle Doku: Using Oracle Wallet Manager
Zur Ausführung von "owm" ist ein X-Window System erforderlich.
Der owm wird mit dem Kommando owm gestartet.
Neues Wallet anlegen:
Mit Ja bestätigen:
Passwort vergeben:
Mit „nein“ Antworten, keine Zertifikatsanforderung erstellen:
Die Zertifikate importieren:
Nach dem Import sollten die aufgeführten Zertifikate vorhanden sein:
Das Wallet nun noch speichern:
Die automatische Anmeldung aktivieren und nochmals speichern:
DBMS_LDAP Anpassungen
Das Wallet muss sich auf allen Datenbank-Servern im gleichen Verzeichnis befinden.
Da der Wallet-Path im Quelltext verankert ist.
LDAP:
declare
l_session DBMS_LDAP.session;
l_retval PLS_INTEGER;
begin
l_session := DBMS_LDAP.init(hostname => 'demo.local',
portnum => 389);
l_retval := DBMS_LDAP.simple_bind_s(ld => l_session,
dn => Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!',
passwd => 'Oracle123');
end;
/
LDAPS:
declare
l_session DBMS_LDAP.session;
l_retval PLS_INTEGER;
begin
l_session := DBMS_LDAP.init(hostname => 'demo.local',
portnum => 636);
-- Nur für LDAPs
-- l_retval:= dbms_ldap.open_ssl(l_session, <WALLET_LOC>, <WALLET_PASSWORT>,<MUSS FÜR AD 2 SEIN>);
l_retval:= dbms_ldap.open_ssl(l_session, 'file:/app/oracle/ldap_wallet', 'Change_on_Install',2);
l_retval := DBMS_LDAP.simple_bind_s(ld => l_session,
dn => Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!',
passwd => 'Oracle123');
end;
/
Prüfen der Konfiguration
Hierzug kann das Package "USERMGR" aus dem Schema "USERMGR" genutzt werden.
Was das Package und das Schema USERMGR ist wir in Automatisierte Benutzerverwaltung erklärt.
SQL*Plus:
SQL> col displayname format a30;
SQL> col mail format a30;
SQL> col cn format a30;
SQL> col description format a30;
SQL>
SQL> select
SQL> usermgr.get_user_attributes('333666', 'cn') as cn,
SQL> usermgr.get_user_attributes('333666', 'displayName') as displayname,
SQL> usermgr.get_user_attributes('333666', 'mail') as mail,
SQL> usermgr.get_user_attributes('333666', 'description') as description
SQL> from dual;
CN DISPLAYNAME MAIL DESCRIPTION
------------------------------ ------------------------------ ------------------------------ ------------------------------
333666 Schmitt, Xaver oracle@localhost Testuser
Troubleshooting
Siehe Oracle Support:
How to Enable Client Side DBMS_LDAP Tracing (Doc ID 250256.1)