Wie man OIA Microsoft SQL beibringt

Einmal davon abgesehen, dass Oracle bereits seit einiger Zeit plant, das Produkt Oracle Identity Analytics abzuschaffen, erfreut es sich aber noch immer einer erstaunlichen Beliebtheit. Nicht zuletzt sicher deshalb, weil es flexibel ist und sich in alle nur denkbaren Richtungen konfigurieren, erweitern und sogar anpassen lässt.

Besonders wichtig für ein Identity Management Produkt ist dabei der Weg, wie Daten hineingelangen. I.d.R. stammen diese aus vollkommen unterschiedlichen Systemen und oft werden für den Import-Prozess entweder CSV-Dateien eingesetzt, oder direkt Datenbankverbindungen zu Endsystemen genutzt. Eine weitere Alternative sind sog. Provisioning-Server, die im Gesamtprozess des Identitätsmanagement zwei Aufgaben erfüllen:

More...

Bugfix: Glossar Beschreibung im OIA anzeigen

Mit diesem Artikel folgt ein weiteres Deep Dive in die Welt des OIA (Oracle Identity Analytics). Dieses Mal vor dem Hintergrund eines Bugs, dessen Lösung im Folgenden beschrieben wird.

Im letzten Artikel haben wir gezeigt, wie eine Zertifizierung auf der Grundlage lokaler Konten konfiguriert und durchgeführt werden kann. Da es dabei erforderlich ist, Primärschlüssel zusammenzusetzen, entstehen für die Attribute relativ lange Namen. Das macht die Darstellung für den Zertifizierer unübersichtlich.

Zu sehen war deswegen in dem Artikel, wie beispielsweise die Gruppenmitgliedschaft zwar als Kombination zwischen Server, Account und Gruppe importiert wurde (“SRV01 > A000002 > Users”), die Anzeige sich aber während der Zertifizierung auf die Darstellung der Gruppe beschränkt:

image

 

Klickt nun der Zertifizierer auf die Gruppe, können Glossarinformationen angezeigt werden, die in diesem Beispiel im Feld Description eine Beschreibung des Servers mitführt. Das kann dem Zertifizierer dabei helfen, den Kontext besser zu verstehen. Damit das funktioniert, müssen ressourcenabhängig Glossarinformationen importiert werden.

Import Glossary

Datei: …\import\schema\Betriebssystem_glossary.rbx

# @iam:namespace name="Betriebssystem" shortName="OPS"
attributeName,atributeValueValue,endpointName,definition,shortDescription

Datei: …\import\in\Betriebssystem_01_glossary.csv

"groups","SRV01 > D000001 > Users","Windows","Users","Zentraler Entwicklungsserver"
"groups","SRV01 > D000001 > Developers","Windows","Developers","Zentraler Entwicklungsserver"
"groups","SRV01 > A000002 > Administrators","Windows","Administrators","Zentraler Entwicklungsserver"
"groups","SRV01 > A000002 > Users","Windows","Users","Zentraler Entwicklungsserver"

Das Ergebnis des Imports kann nun im Identity Warehouse im Bereich Data Management der jeweiligen Ressource eingesehen werden:

image

Wenn der Zertifizierer während der Zertifizierung nun wie oben dargestellt auf einen Glossareintrag klickt, erhält er aber folgendes Popup:
image

 

Was fehlt, ist die Description. Und der Grund hierfür ist der oben erwähnte Bug in OIA.

Analyse

Bei der Analyse des Datenstroms zwischen Server und Browser mit Hilfe der Internet Explorer Developer Toolbar hat sich gezeigt, dass die Daten für das Popup über den Service dwrIDCService mit der Methode loadBatchUserAccounts gezogen werden. Der Blick in den Quellcode hat zutage gefördert, dass am Ende die Abfrage getIDCAccountAttributesFlatByUser ursächlich für das Problem verantwortlich ist. Da allerdings im OIA das (inzwischen abgemeldete) Produkt iBATIS zum Einsatz kommt, lässt sich die Abfrage leicht einsehen. Sie befindet sich in der Datei IDCAccount.xml im Verzeichnis …\WEB-INF\classes\com\vaau\rbacx\idc\dao\ibatis\maps.

Zunächst wird in der Abfrage ein Defaultdatensatz erzeugt:

<select id="getIDCAccountAttributesFlatByUser" resultMap="account-attribute-wrapper">
  select
  null as attribute_value_id,
  null as attribute_id,
  null as attribute_value,
  null as glossary_def,
  null as short_description,
  null as attribute_name,
  ,
  

 

Einige Zeilen später findet ein Union statt mit einer Abfrage, die die tatsächlichen Daten aus der Datenbank bezieht. Hier zeigt sich das Problem:

select 
   
  idc_account_attributes.short_description as short_description, 
    
from 
  idc_account_attributes, attributes, idc_user_acct_attrs, idc_accounts, namespaces 
  
  

 

Der Blick in die Datenbank zeigt, dass sich hier schlicht keine Daten befinden. Die Glossarinformationen wurden beim Import nämlich in die Tabelle attribute_value_metadata eingelesen.

Lösung

Die Abfrage muss angepasst werden, so dass die Tabelle attribute_value_metadata mit einbezogen wird. Dabei ist darauf zu achten, über die Where-Klausel die Verknüpfung korrekt zu definieren.

select 
   
  attribute_value_metadata.short_description as short_description, 
   
from 
  idc_account_attributes,attribute_value_metadata, attributes,  
where 
  attributes.attributekey = idc_account_attributes.attribute_id and 
  attribute_value_metadata.attribute_value_id=idc_account_attributes.iam_attr_val_id and 
  attribute_value_metadata.endpoint_id=idc_accounts.endpoint_id and 
  idc_account_attributes.id = idc_user_acct_attrs.account_attribute_id and
   
  

Das war es auch schon.

An dieser Stelle ein leider notwendiger Hinweis: Soweit wir es sagen können, hat diese Änderung keine Auswirkungen auf das restliche Produkt. Da wir den OIA aber nicht entwickelt haben, können wir dafür keine Gewährleistung übernehmen. Sollten Sie daher ebenfalls Änderungen an Ihrem System vornehmen, geschieht das auf eigene Gefahr.

Fazit

Leider zeigt sich beim OIA, dass durch den turbulenten Lebenslauf (entwickelt von vaau, übernommen von Sun, gekauft von Oracle) die eine oder andere Unstimmigkeit entstanden ist. Von außen lässt sich natürlich schwer nachvollziehen, welches Unternehmen nun ursächlich für solche Probleme verantwortlich ist. Das ist aber auch unerheblich. Wichtiger ist, dass man sie lösen kann.

Wir konnten dieses Problem durch den Einsatz verschiedener Analysewerkzeuge inkl. Einsicht in den Quellcode identifizieren und nachhaltig beheben. Da von einem Unternehmen, das den OIA zum Zweck der Zertifizierung von Benutzern, Rollen und Konten einsetzt, natürlich kaum erwartet werden kann, so tief in die Technik einzusteigen wenn etwas nicht funktioniert wie erwartet, gibt es für Kunden i.d.R. nur eine Option: Bei Oracle einen Spezialisten einkaufen.

Oder aber Sie fragen uns. :)

Microsoft goes Linux und ich installiere Oracle Identity Analytics auf einem Windows Server

Zugegeben, die Idee, den OIA auf einem Windows Server zu installieren klingt zunächst einmal hanebüchen. Warum sollte man so etwas tun? Nun, ganz einfach: 1. Weil es sich bei dem OIA um nicht mehr und nicht weniger als eine Web-Anwendung handelt, der es egal sein sollte, auf welchem Betriebssystem sie gehostet wird und 2. Weil es dem OIA tatsächlich egal ist, auf welchem Betriebssystem es gehostet wird.

Außerdem bewege ich mich leichtfüßiger in der Microsoft-Welt im Vergleich zu bspw. Oracle Linux.

Hintergrund ist aber eigentlich das Bedürfnis, völlig frei und unabhängig mit dem OIA experimentieren zu können. Wie lässt sich die Anwendung customizen? Wie können hierarchische Daten importiert werden? Wie funktioniert eine sog. "Open Loop Remediation" und was muss man dazu in der Konfiguration beachten?

Kundenserver haben die Angewohnheit, meist von anderen administriert zu werden. Auf meinem eigenen Hyper-V Windows Server kann ich aber schalten und walten, wie es mir gefällt, Checkpoints erstellen, Daten in den OIA importieren, wieder löschen, Identitäten anlegen, Zertifizierungen nur zum Test durchführen, eigene Java Beans für die Integration OIA-fremder ETL Tools einbauen (und sie wieder ausbauen, weil das vermutlich nicht funktionieren wird), etc. pp.

Und wer denkt, für den Oracle Identity Analytics Server bräuchte es Oracle Experten, um ihn zu installieren, der irrt. Zumindest unter Windows sind die notwendigen Schritte für eine einfache Basis-Installation nicht schwer. Die "Setup-Experience" unterscheidet sich zwar spürbar von der Installation gewohnter Microsoft-Produkte, aber wenn man bestimmte Dinge beachtet, funktioniert alles reibungslos:

  • Installation von Windows Server 2008 R2
  • Installation von Oracle Database 11
  • Einrichten einer Datenbank (rbacx) und Erstellen eines Benutzers (rbacxservice)
  • Vorbereitung der OIA Installation
  • Erstellen des OIA Datenbankschemas
  • Installation des WebLogic Applicationservers
  • Einrichten einer WLS Domain (rbacx)
  • Deployment der OIA Anwendung

Auf dem Weg zur funktionierenden OIA Installation müssen verschiedene Dinge beachtet werden. Einige Konfigurationsdateien beispielsweise verlangen eine Umgebungsvariable, die am sinnvollsten als Systemvariable eingerichtet wird (sonst läuft schon mal gar nichts). Gemeint ist übrigens RBACX_HOME. Das steht aber im Prinzip bereits in der Installationsanleitung. Außerdem wird ein Windows-Administrator bei dem Gedanken schmunzeln, dass so etwas Triviales wie ein Datenbank-Treiber separat heruntergeladen und eingebunden werden muss (ojdbc). Interessant wird es bei Dritt-Abhängigkeiten wie z.B. Jasper-Reports oder CloverETL.

Ersteres ist die OSS Reporting Engine, deren korrekte Version nicht mehr da zu finden ist, wo die Anleitung es behauptet. Selbiges gilt für CloverETL. Die Idee dahinter ist eigentlich pfiffig: Der OIA integriert die Open Source ETL Engine, so dass Transformationen von Quelldaten vor dem eigentlichen Import in den OIA vom OIA selbst automatisiert durchgeführt werden können. Der Haken daran ist lediglich, dass es sich um die so ziemlich älteste Version der Engine handelt, die es gibt: Sie stammt von 2006 und nach zwei Akquisitionen hat es der aktuelle Rechteinhaber Oracle nicht geschafft, das Thema zu aktualisieren (zuvor hieß der OIA noch Sun Role Manager und davor hieß es Vaau RBACx). Unglücklicherweise gibt es die alte Clover GUI nicht mehr, die mit CTL1 in der Lage war, OIA kompatible ETL-Graphen zu erzeugen. Da die in den OIA integrierte CloverETL Engine nicht mit CTL2 kompatibel ist, hilft einem der aktuelle CloverETL Designer auch nicht weiter. Mal abgesehen davon, dass die Anschaffung mit nicht unerheblichen Lizenzkosten verbunden ist.

Es wäre für mich mal interessant zu erfahren, wie andere Unternehmen damit umgehen. Irgendwie müssen die Daten ja vorverarbeitet und qualifiziert werden. Mit Microsoft SSIS? Mit Talend Open Studio? Mit Informatica PowerCenter? Und wie wird das jeweilige Produkt in den OIA Workflow eingebunden?

Mehr dazu vielleicht ein anderes Mal.

Über die Autoren

Christian Jacob ist Leiter des Geschäftsbereiches Softwarearchitektur und -entwicklung und zieht als Trainer im Kontext der .NET Entwicklung sowie ALM-Themen Projekte auf links.

Marcus Jacob fokussiert sich auf die Entwicklung von Office-Addins sowie Windows Phone Apps und gilt bei uns als der Bezwinger von Windows Installer Xml.

Martin Kratsch engagiert sich für das Thema Projektmanagement mit dem Team Foundation Server und bringt mit seinen Java- und iOS-Kenntnissen Farbe in unser ansonsten von .NET geprägtes Team.

Aktuelle Kommentare

Comment RSS