Cloud Control: DBSNMP Accounts entsperren und neue Passwörter setzen
von Ralf Durben, Oracle Deutschland B.V. & Co. KG
|
|
Der Datenbankbenutzer DBSNMP wird in der Datenbank angelegt und benutzt, um dem Oracle Management Agent einen Zugriff für ein Monitoring zu ermöglichen. Das Passwort dieses Benutzers wird in Cloud Control für die jeweilige Datenbank als "Monitoring Credential" hinterlegt. Problematisch in der Handhabung dieses Datenbankbenutzers wird es immer dann, wenn dessen Passwort aufgrund der Passwort-Policy in der Datenbank abläuft. Der Agent versucht weiterhin, sich als DBSNMP anzumelden und so dauert es nicht lange, bis der Benutzer DBSNMP in der Datenbank gesperrt ist, also den Status "LOCK" hat.
Es ergeben in diesem Zusammenhang zwei Herausforderungen:
- Einfaches Entsperren von DBSNMP Benutzern über Cloud Control
- Vorsorgliches und regelmäßiges Ändern der Passwörter von DBSNMP Benutzern
In einer Umgebung mit vielen Zielsystemen ist dabei die GUI nicht praktikabel und so bietet sich EMCLI, das Kommandozeilen-Tool von Cloud Control an. In der Skripting Variante von EMCLI wird die Sprache Jython verwendet. Eine einfache Einführung in Jython für Anwender mit PL/SQL Kenntnissen wurde schon in einem älteren Tipp gegeben.
Auch das Ändern von Passwörtern für Datenbankbenutzer wurde schon in einem Tipp beschrieben. Der Einsatzfall für den Datenbankbenutzer DBSNMP ist aber besonders, da im Hintergrund der Agent kontinuierlich Anmeldeversuche unternimmt und dabei während des Prozesses der Passwortänderung den Benutzer DBSNMP wieder sperrt. Die Lösung besteht in einem mehrschrittigen Verfahren:
- Temporäres Setzen eines Passworts für DBSNMP
- Entsperren des Benutzers DBSNMP
- Monitoring Credential auf neues Passwort setzen
- Neues Passwort für Benutzer DBSNMP setzen, inklusive von Named Credentials in Cloud Control
- Entsperren des Benutzers DBSNMP
Der erste Schritt des Setzens eines temporären Passworts ist notwendig, weil das endgültige Setzen des neuen Passworts inklusive Anpassung aller Named Credentials die Angabe des alten Passworts benötigt, und das ist typischerweise nicht zur Hand, wenn die Passwörter ständig verändert werden. Grundsätzlich ist es auch ratsam, dass die Passwörter von DBSNMP möglichst zufällig generiert werden, denn schließlich muß nur der jeweilige Agent das Passwort kennen. Aus diesem Grund stelle ich gleich ein Skript für EMCLI vor, in dem ein Zufallsstring als neues Passwort erzeugt wird. Dabei bekommt das temporäre Passwort immer das Zeichen "A" vorangestellt, damit im Kommando "ALTER USER..." das Passwort auch ohne Gänsefüsschen angegeben werden kann (bei einer führenden Ziffer gäbe es Probleme).
Das Skript unlock_dbsnmp_single.py entsperrt einen DBSNMP Account einer Datenbank, die sie angeben. Das Passwort wird zufällig neu gesetzt mit einer Zufallszeichenkette bestehend aus 15 Zeichen.
Die Länge des Passworts können Sie im Skript sehr leicht anpassen. Suchen Sie die Zeile "pwdlen = 15" und geben Sie eine neue Passwortlänge statt 15 an.
Zur besseren Darstellung sind im unteren Listing Zeilenumbrüche enthalten. Laden Sie das Skript hier herunter, um es nutzen zu können.
Sie können ein solches Skript natürlich auch vorsorglich über alle Zielsysteme laufen lassen. Dann entfällt die Eingabe einer einzelnen Datenbank im unteren Teil des Skripts und der Aufruf von "set_pwd_dbsnmp" wird in einer Schleife für alle Targets ausgeführt. Als weitere Änderung wird überprüft, in welchem Status die Datenbank ist, und ob ein Zugriff überhaupt möglich ist. Auch werden alle ausgeführten Kommandos ausgedruckt, inklusive der Passwörter. Diese Zeilen dienen der Nachvollziehbarkeit dieses Skripts und sollten in der Produktion entfernt werden!
Wenn Sie dieses Skript regelmäßig ausführen, und das auch innerhalb der Gültigkeit von Passwörtern, haben Ihre DBSNMP Benutzer immer sichere Passwörter und werden nie gesperrt. Das Skript unlock_dbsnmp_all.py sieht wie folgt aus (wobei auch hier zur besseren Lesbarkeit einige Zeilenumbrüche eingebaut wurden. Eine lauffähige Version laden Sie hier herunter):
Fazit
Mit dem oben geschilderten Weg können Sie schnell alle gesperrten DBSNMP Accounts entsperren, sowie neue Passwörter setzen.
Zurück zum Anfang des Artikels
Zurück zur Community-Seite
|