Logo Oracle Deutschland   DBA Community  -  April 2015
Cloud Control 12c: Datenbank-Passwörter mit EMCLI regelmäßig ändern
von Ralf Durben, Oracle Deutschland B.V. & Co. KG

Zum sicheren Betrieb einer Datenbank gehört das regelmäßige Ändern von Administrations-Passwörtern. Im Falle einer Oracle Datenbank betrifft dieses nicht nur die Datenbankbenutzer SYS und SYSTEM, sondern alle DBA-Benutzer und auch DBSNMP, der ja vom EM-Agenten für das Monitoring benutzt wird.

Die Nutzung von Datenbank-Passwörtern sollte in Cloud Control immer mittels Named Credentials erfolgen. Dabei wird das Tupel Benutzer/Passwort sicher unter einem Namen abgespeichert. Dieses sollte ein Superuser vornehmen, der das Recht zur Verwendung dieses Credentials dann an EM-Benutzer vergibt (direkt oder indirekt über private Rollen). Der Vorteil von Named Credentials besteht unter anderem darin, dass das Passwort nur einmal in Cloud Control gespeichert ist und ein EM-Benutzer das Passwort nutzen kann, ohne es zu kennen. Damit kann zum Beispiel sichergestellt werden, dass ein DBA sich nur per EM an eine Datenbank anmelden und Aktionen vornehmen kann. Über das Auditing von Cloud Control können fehlerhafte Aktionen später nachvollzogen werden.

Die Verwendung von Named Credentials steigert also die Sicherheit von Passwörtern, da diese nicht anderweitig bekannt sind. Der nächste Schritt in einem Sicherheitskonzept ist aber das regelmäßige Ändern dieser Passwörter. Dazu gibt es Tools, die zentral diese Änderungen für alle Systeme in einem Unternehmen initiieren. Ich bekomme immer wieder die Anfrage, inwieweit man Oracle Datenbanken an diese Systeme anbinden kann und dann die neuen Passwörter auch in Cloud Control hinterlegt.

Für derartige Anbindungen bietet sich immer das Enterprise Manager Command Line Interface (EMCLI) an. Sie finden Informationen zur Inbetriebnahme von EMCLI und verschiedene Beispiele im Oracle Dojo #3. In diesem konkreten Anforderungsfall können Sie nicht nur das Hinterlegen der neuen Datenbank-Passwörter, sondern auch das Ändern der Passwörter in den Ziel-Datenbanken EMCLI überlassen. Die Auslösung einer Passwortänderung (ad hoc oder geplant) erfolgt dabei außerhalb von EMCLI.

Das korrekte Vorgehen zeigt das folgende kleine Beispiel:

Sie melden sich bei EMCLI an mit

$ emcli login -username=sysman
Enter password : 

Login successful
Der gewählte Benutzername muß natürlich das Recht haben die Named Credentials zu ändern. Sie können mit EMCLI auch ein neues Named Credential erstellen. Das folgende Beispiel erstellt ein Named Credential für den Datenbankbenutzer SYSTEM der Datenbank radu151. Dabei wird das vorhandene Passwort angegeben (Achtung: Sie geben diese Syntax in einer Zeile an! In den folgenden Beispielen wurde der Zeilenumbruch nur der Übersichtlichkeit wegen verwendet.):
$ emcli create_named_credential -cred_name=db_radu151_system -auth_target_type=oracle_database 
                                -cred_type=DBCreds -cred_scope=instance 
                                -target_name=radu151 -target_type=oracle_database 
                                -attributes="DBUserName:SYSTEM;DBPassword:welcome1"
Credential DB_RADU151_SYSTEM created.
Mit dem EMCLI-Kommando (auch "Verb" genannt) update_db_password können Sie ein Passwort in den Named Credentials neu setzen. Sollte es für einen Datenbankbenutzer in einer Datenbank mehrere passende Named Credentials geben, werden diese alle angepasst. Mit der Option change_at_target="yes" wird das neue Passwort auch in der Datenbank gesetzt. Mit der Option change_all_references="yes" stellen Sie sicher, dass Cloud Control das neue Passwort nutzt. Beispielsweise wird im Falle des Datenbankbenutzers DBSNMP das neue Passwort aktiv an den Agenten geschickt, damit dieser das neue Passwort auch sofort verwendet. Das folgende Beispiel zeigt den einfachen Aufruf. Sie werden dann nach dem alten und neuen Passwort gefragt:
$ emcli update_db_password -target_name=radu151 -user_name=SYSTEM 
                           -change_all_references="yes" -change_at_target="yes"
Enter value for old_password : 
Enter value for new_password : 
Enter value for retype_new_password : 
Successfully submitted a job to change the password in Enterprise Manager and on the target database: "radu151" 
Execute "emcli get_jobs -job_id=13200A5F8C2F6964E053B538A8C0246F" to check the status of the job. 
Search for job name "CHANGE_PWD_JOB_13200A5F8C2E6964E053B538A8C0246F" on the Jobs home page to check job 
 execution details.
Sie können das alte und neue Passwort aber auch per Dateiinhalt mitgeben. Dazu werden zwei Dateien erstellt, eine hat als Inhalt das alte Passwort (hier w1.txt), die andere das neue Passwort (hier w2.txt). Wenn Sie solche Dateien verwenden, sollten diese natürlich nach ihrer Verwendung sofort wieder gelöscht werden:
$ emcli update_db_password -target_name=radu151 -user_name=SYSTEM 
                           -change_all_references="yes" -change_at_target="yes" 
                           -input_file="old_password:w1.txt" 
                           -input_file="new_password:w2.txt" 
                           -input_file="retype_new_password:w2.txt"
Successfully submitted a job to change the password in Enterprise Manager and on the target database: "radu151" 
Execute "emcli get_jobs -job_id=13200A5F8C426964E053B538A8C0246F" to check the status of the job. 
Search for job name "CHANGE_PWD_JOB_13200A5F8C416964E053B538A8C0246F" on the Jobs home page to check job 
 execution details.
Sie können Named Credentials auch generell aktualisieren, zum Beispiel für Passwortänderungen bei Betriebssystembenutzern. Diese können Sie mit dem Verb modify_named_credential durchführen, wobei damit aber keine Änderung des Passworts auf dem Zielserver selbst verbunden ist, sondern nur die Hinterlegung des neuen Passworts im Named Credential. Ein Beispiel zeigt die einfache Nutzung:
$ emcli modify_named_credential -cred_name=host_serv151_oracle -attributes="HostUserName:oracle;HostPassword:welcome1"
Credential updated.

Handbücher

Enterprise Manager Command Line Interface Guide

Lizenzhinweis

Die hier beschriebene Lösung ist Bestandteil der Basisfunktionalität von Cloud Control.


Zurück zum Anfang des Artikels

Zurück zur Community-Seite