Wie verhindere ich, dass das Hauptbenutzerkonto meiner DB-Instance von Amazon RDS für Oracle gesperrt wird?

Lesedauer: 10 Minute
0

Ich möchte verhindern, dass das Hauptbenutzerkonto meiner Instance von Amazon Relational Database Services (Amazon RDS) für Oracle DB gesperrt wird.

Auflösung

Das Hauptbenutzerkonto in Amazon RDS ist für die Überwachung, Verwaltung und Durchführung administrativer Aufgaben für den Betrieb Ihrer DB-Instance von entscheidender Bedeutung. Dieses Konto ist Ihr erstes Datenbankkonto und enthält die erforderlichen administrativen Rollen und Berechtigungen, um Ihre Datenbank zu verwalten und zu betreiben. Eine vollständige Liste der Berechtigungen und Rollen, die der Hauptbenutzer für jede Datenbank-Engine erhält, finden Sie unter Hauptbenutzerkontenberechtigungen. Wenn das Hauptbenutzerkonto gesperrt wird und Sie sich nicht anmelden können, sind Ihre Verwaltungsfunktionen gestört und Ihr wichtiger Geschäftsbetrieb kann beeinträchtigt werden. Sie können die Amazon-RDS-Konsole oder ein anderes Datenbankkonto verwenden, um wieder auf Ihr Hauptkonto zuzugreifen.

Identifizieren der Grundursache

Einer der häufigsten Gründe für die Sperrung des Hauptbenutzerkontos ist das Anwenden von benutzerdefinierten Profileinstellungen auf das Hauptkonto. Einige dieser Einstellungen beinhalten Folgendes:

  • FAILED_LOGIN_ATTEMPTS: Wenn die Anzahl der aufeinanderfolgenden fehlgeschlagenen Anmeldeversuche beim Hauptkonto den für diesen Parameter festgelegten Wert überschreitet, wird das Konto gesperrt.
  • PASSWORD_LIFE_TIME: Wenn die Dauer der Verwendung eines bestimmten Passworts den für diesen Parameter festgelegten Wert überschreitet, können Sie sich nicht mit diesem Passwort beim Konto anmelden und das Konto wird als abgelaufen gekennzeichnet. Sie müssen das Passwort zurücksetzen, um sich erneut anzumelden. Wenn Sie einen Wert für PASSWORD_GRACE_TIME festlegen und das Passwort nicht innerhalb der Übergangsfrist geändert wird, läuft das Passwort ab und weitere Verbindungen werden zurückgewiesen.
  • INACTIVE_ACCOUNT_TIME: Wenn sich das Hauptkonto für die durch diesen Parameter definierte Anzahl aufeinanderfolgender Tage nicht bei der Datenbank anmeldet, wird das Konto gesperrt. Der Mindestwert für diesen Parameter beträgt 15 Tage. Es gibt keinen Maximalwert.

Weitere Informationen zu Passwortparametern finden Sie in der Oracle-Dokumentation für password_parameters.

Führen Sie die folgende Abfrage aus, um die aktuellen Profileinstellungen des Hauptbenutzerkontos zu überprüfen und festzustellen, warum das Konto gesperrt ist:

SELECT
    profile,
    resource_name,
    limit
FROM
    dba_profiles
WHERE
    resource_type = 'PASSWORD'
    AND   profile IN (
        SELECT
            profile
        FROM
            dba_users
        WHERE
            username = 'EXAMPLE-MASTER-USERNAME'
    );

Beispiele:

Angenommen, Sie erstellen ein Profil mit der Einstellung FAILED_LOGIN_ATTEMPTS, das nur eine falsche Passworteingabe zulässt.

SQL> CREATE PROFILE sec_profile LIMIT FAILED_LOGIN_ATTEMPTS 1;
Profile created.

Sie können dieses Profil auf den Hauptbenutzer anwenden, indem Sie die folgende Abfrage ausführen:

SQL> ALTER USER EXAMPLE-MASTER-USERNAME PROFILE sec_profile;
User altered.

Trennen Sie die Verbindung zur Datenbank und beenden Sie SQL*Plus:

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0

Melden Sie sich mit dem falschen Passwort beim Konto an:

bash-4.2$ sqlplus EXAMPLE-MASTER-USERNAME@ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 13:16:33 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied

Weitere Anmeldungen sind nicht zulässig, da FAILED_LOGIN_ATTEMPTS auf 1 gesetzt ist. Stattdessen wird die folgende Fehlermeldung angezeigt:

bash-4.2$ sqlplus EXAMPLE-MASTER-USERNAME@ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 13:16:44 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR:
ORA-28000: The account is locked.

Wenn das Hauptkonto durch den Parameter PASSWORD_LIFE_TIME begrenzt ist und die Dauer der Verwendung desselben Passworts den für diesen Parameter festgelegten Wert überschreitet, wird die folgende Fehlermeldung angezeigt, wenn Sie versuchen, sich anzumelden:

-bash-4.2$ sqlplus EXAMPLE-MASTER-USERNAME@ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 20:14:03 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR:
ORA-28001: the password has expired

Hauptkonto freischalten

Sie können das Hauptkonto auf eine der folgenden Arten entsperren:

Verwenden der Amazon-RDS-Konsole oder der AWS-Befehlszeilenschnittstelle (AWS CLI)

Indem Sie das Passwort zurücksetzen, können Sie das Konto entsperren und das Konto nach Ablauf erneut eröffnen. Weitere Informationen finden Sie unter Wie setze ich das Hauptbenutzerkennwort für meine Amazon-RDS-DB-Instance zurück, um den Hauptbenutzer zu entsperren?

Verwenden eines anderen Datenbankkontos

Wenn Sie bereits ein anderes Datenbankkonto (z. B. EXAMPLE-USER) mit der Berechtigung ALTER USER haben, können Sie dieses Konto verwenden, um das Hauptbenutzerkonto zu entsperren.

Identifizieren Sie Konten mit der Berechtigung ALTER USER, indem Sie die folgende Abfrage ausführen:

SELECT
    grantee,
    privilege
FROM
    dba_sys_privs
WHERE
    privilege = 'ALTER USER'
    AND grantee IN (
        SELECT
            username
        FROM
            dba_users
        WHERE
            oracle_maintained = 'N'
    );

Die Ausgabe sieht ähnlich aus wie die folgende:

GRANTEE                                                                     PRIVILEGE
--------------------------------------------------------------------------------------------------------------------------------
EXAMPLE-USER                                                                ALTER USER

Führen Sie die folgende Abfrage aus, um Konten zu identifizieren, für die die Berechtigung über eine Rolle erteilt wurde:

SELECT DISTINCT
    dba_users.username
FROM
    dba_role_privs
    JOIN dba_users ON dba_role_privs.grantee = dba_users.username
                      AND granted_role IN (
        SELECT
            role
        FROM
            role_sys_privs
        WHERE
            privilege = 'ALTER USER'
    )
        AND dba_users.oracle_maintained = 'N'

Die Ausgabe sieht ähnlich aus wie die folgende:

USERNAME
-----------------------------------------------------------------------------------
EXAMPLE-MASTER-USERNAME
RDSADMIN
USER1
EXAMPLE-USER

Hinweis: Ignorieren Sie RDSADMIN in der Ausgabe, da es sich um ein internes RDS-Konto handelt.

Stellen Sie mit dem Benutzerkonto EXAMPLE-USER eine Verbindung zur Datenbank her:

-bash-4.2$ sqlplus EXAMPLE-USER@ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 13:35:55 2021 Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Last Successful login time: Tue Sep 14 2021 13:33:23 +00:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0

Entsperren Sie das Hauptbenutzerkonto, indem Sie die folgende Abfrage ausführen:

SQL> ALTER USER EXAMPLE-MASTER-USERNAME ACCOUNT UNLOCK;
User altered.

Wenn das Passwort abgelaufen ist, setzen Sie das Passwort zurück, indem Sie die folgende Abfrage ausführen:

SQL> ALTER USER EXAMPLE-MASTER-USERNAME IDENTIFIED BY EXAMPLE-MASTER-USER-NEW-PWD;
User altered.

Trennen Sie die Verbindung zur Datenbank EXAMPLE-USER und beenden Sie SQL*Plus:

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0

Sie können sich erfolgreich mit dem Hauptbenutzerkonto anmelden. Sie erhalten die folgende Meldung:

bash-4.2$ sqlplus EXAMPLE-MASTER-USERNAME@ora
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 14 13:36:36 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Tue Sep 14 2021 13:35:12+00:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0
SQL> SHOW USER;
USER is "EXAMPLE-MASTER-USERNAME"

Das Passwort für Ihr Hauptkonto kann nicht zurückgesetzt werden: Ihr Hauptkonto kann in bestimmten Situationen durch das Zurücksetzen des Passworts gesperrt sein:

Beispiel 1:

Wenn Sie dasselbe Passwort für das Hauptkonto öfter als die durch den Parameter PASSWORD_REUSE_MAX definierte Anzahl verwenden, wird in der Amazon-RDS-Konsole das folgende Ereignis angezeigt:

Unable to reset your password. Error information: ORA-28007: the password cannot be reused ORA-06512: at line 1

Informationen zu den neuesten Ereignissen für Ihre RDS-Instance finden Sie unter Anzeigen von Amazon-RDS-Ereignissen.

Um dieses Problem zu beheben, setzen Sie das Passwort für Ihr Hauptkonto auf ein neues Passwort zurück, das in der Vergangenheit nicht mit der Amazon-RDS-Konsole verwendet wurde. Wenn Sie ein anderes Datenbankkonto mit der Berechtigung ALTER USER haben, können Sie sich bei diesem Konto anmelden und das Passwort ändern. Aktualisieren Sie, falls zulässig, das PASSWORD_REUSE_MAX des Profils des Hauptkontos auf UNLIMITED, damit Sie das Passwort beliebig oft wiederverwenden können.

Beispiel 2:

Angenommen, das Hauptkonto verfügt über die Parametereinstellung PASSWORD_VERIFY_FUNCTION, die strenge Passwortrichtlinien überprüft, z. B. die Mindestlänge des Passworts oder die Anforderung, die Mindestanzahl von Zeichen zu verwenden. Möglicherweise wird der folgende Fehler angezeigt, wenn Sie versuchen, das Passwort zurückzusetzen, und das Passwort nicht den definierten Regeln entspricht:

ORA-28003: password verification for the specified password failed.

Um dieses Problem zu beheben, stellen Sie sicher, dass die in Ihrer PASSOWRD_VERIFY_FUNCTION definierten Regeln für das neue Passwort erfüllt sind.

Verhindern, dass das Hauptbenutzerkonto gesperrt wird

Wenn die Sicherheitsrichtlinien Ihrer Organisation dies zulassen, vermeiden Sie es, benutzerdefinierte Profile für Ihr RDS-Hauptbenutzerkonto festzulegen, und behalten Sie das DEFAULT-Profil bei. Mit dem DEFAULT-Profil wird Ihr Hauptbenutzerkonto mit unbegrenzten fehlgeschlagenen Anmeldeversuchen versehen. Außerdem läuft das Passwort des Hauptbenutzerkontos niemals ab oder wird aufgrund von Inaktivität deaktiviert. Es empfiehlt sich jedoch, das Passwort regelmäßig mithilfe der Amazon-RDS-Konsole zurückzusetzen.

Sie können die Grenzwerte des DEFAULT-Profils anzeigen, indem Sie die folgende Abfrage ausführen:

SELECT
   resource_name,
   limit
FROM
   dba_profiles
WHERE
   resource_type = 'PASSWORD'
   AND profile = 'DEFAULT'
   AND resource_name IN
   (
      'FAILED_LOGIN_ATTEMPTS',
      'PASSWORD_LIFE_TIME',
      'PASSWORD_VERIFY_FUNCTION',
      'INACTIVE_ACCOUNT_TIME',
      'PASSWORD_REUSE_TIME',
      'PASSWORD_REUSE_MAX'
   );

Die Ausgabe sieht ähnlich aus wie die folgende:

RESOURCE_NAME                    LIMIT
-------------------------------- --------------------------------------------------------------------------------------------------------------------------------
FAILED_LOGIN_ATTEMPTS            UNLIMITED
PASSWORD_LIFE_TIME               UNLIMITED
PASSWORD_REUSE_TIME              UNLIMITED
PASSWORD_REUSE_MAX               UNLIMITED
PASSWORD_VERIFY_FUNCTION         NULL
INACTIVE_ACCOUNT_TIME            UNLIMITED

6 rows selected.

Wenn Ihr Hauptkonto über ein benutzerdefiniertes Profil verfügt, wechseln Sie das Konto, um das DEFAULT-Profil zu verwenden.

Prüfen Sie das aktuelle Profil Ihres Hauptkontos, indem Sie die folgende Abfrage ausführen:

SELECT PROFILE FROM dba_users WHERE USERNAME = 'EXAMPLE-MASTER-USERNAME';

Ändern Sie das Profil Ihres Hauptkontos in DEFAULT, indem Sie die folgende Abfrage ausführen:

SQL> ALTER USER EXAMPLE-MASTER-USERNAME PROFILE default;
User altered.

Hinweis: Wenn Sie die Passwortparameter Ihres DEFAULT-Profils geändert haben, setzen Sie das DEFAULT-Profil für Parameter zurück, die sich auf die Anmeldung auswirken könnten. Verwenden Sie den folgenden Befehl:

SQL> ALTER PROFILE default LIMIT
  failed_login_attempts UNLIMITED password_life_time UNLIMITED
  inactive_account_time UNLIMITED;
Profile altered.

Wenn Ihre Organisation über Richtlinien verfügt, die das Zurücksetzen des Hauptkontopassworts mit eingeschränkten Einstellungen erfordern, befolgen Sie unbedingt die folgenden bewährten Methoden:

  • Setzen Sie das Passwort regelmäßig mit der Amazon-RDS-Konsole zurück, bevor es aufgrund der Einstellung PASSWORD_LIFE_TIME abläuft.
  • Wenn Sie eine PASSWORD_VERIFY_FUNCTION mit strengen Anforderungen für die Passwortverifizierung haben, halten Sie sich bei der Einrichtung des neuen Passworts an diese Anforderungen.
  • Verwenden Sie Ihr Hauptbenutzerkonto basierend auf der Einstellung INACTIVE_ACCOUNT_TIME, damit das Konto aktiviert bleibt.

Verfolgen fehlgeschlagener Anmeldeversuche

Sie können die ungültigen Anmeldeversuche bei Ihrem Hauptkonto mithilfe der Überwachungsfunktion in Oracle verfolgen. Sie können dies tun, indem Sie den Oracle-Initialisierungsparameter audit_trail in db für Ihre RDS-für-Oracle-Instance ändern. Sie können diesen Parameter in der benutzerdefinierten Parametergruppe der DB-Instance ändern.

Wenn Ihre RDS-for-Oracle-Instance eine Standardparametergruppe verwendet, können Sie die Parameterwerte nicht ändern. Sie müssen eine neue benutzerdefinierte Parametergruppe erstellen, den Parameterwert festlegen und die neu erstellte Parametergruppe an Ihre Instance anhängen. Starten Sie anschließend die Instance neu, um die neue Parametergruppe der Instance zuzuordnen. Weitere Informationen finden Sie unter Wie ändere ich die Werte einer Amazon-RDS-DB-Parametergruppe?

Sie müssen Ihre RDS-Instance neu starten, nachdem Sie den Parameter in der Gruppe mit benutzerdefinierten Parametern geändert haben. Dies liegt daran, dass der Parameter audit_trail statisch ist und einen Neustart der RDS-für-Oracle-Datenbank erfordert, um wirksam zu werden. Weitere Informationen finden Sie unter Neustart einer DB-Instance.

Nachdem der Status Ihrer RDS-Instance verfügbar geworden ist, melden Sie sich mit dem Hauptkonto oder einem beliebigen Konto mit der Berechtigung audit bei der Datenbank an. Wenn Sie die Überwachung erfolgloser Versuche noch nicht konfiguriert haben, führen Sie den folgenden Befehl aus, um die Überwachung auf erfolglose Anmeldeversuche zu aktivieren:

AUDIT SESSION WHENEVER NOT SUCCESSFUL;

Führen Sie dann die folgende Abfrage aus, um die erfolglosen oder fehlgeschlagenen Anmeldeversuche Ihres Hauptkontos nachzuverfolgen.

Hinweis: Sie können diese Daten für jedes Datenbankkonto nachverfolgen, indem Sie den EXAMPLE-USER aus der WHERE-Klausel entfernen.

SELECT username,
       os_username,
       userhost,
       TO_CHAR(timestamp, 'MON-DD-YYYY HH24:MI:SS') what_time
FROM   dba_audit_trail
WHERE  returncode = 1017
       AND username = 'EXAMPLE-USER';

Oracle-Dokumentation für CREATE PROFILE


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren