Muss das SA-Konto "SA" heißen oder kann ich es sicher umbenennen?

7

Wir haben einige Anwendungen in unserem Netzwerk (vor meiner Zeit), die ein SA-Konto in ihrer SQL Server-Verbindungszeichenfolge verwenden. Es ist im Quellcode fest codiert, und aus irgendeinem Grund können wir es nicht ändern - meine Frage ist nicht, warum wir es ändern sollten, sondern darum, es zu umgehen.

Ich denke darüber nach, das SA-Konto in etwas anderes umzubenennen (wie "SysAccount" oder ähnliches und ihm ein neues Passwort zu geben) und dann ein neues Konto mit dem Namen "SA" mit dem alten Passwort zu erstellen und ihm die für die Anwendung geeigneten Rechte zu gewähren (offensichtlich keine Mitgliedschaft in der Sysadmin-Rolle). Gibt es irgendwelche Fallstricke dabei? Gibt es bekannte Probleme, die SQL Server haben wird, wenn das Konto mit dem Namen SA kein Systemadministrator ist?

Ich gehe davon aus, dass ich, da ich das Konto gerade umbenenne, sicher bin - es wird immer noch eine UID von 0x01 haben, und ich habe dies getestet und es ist physikalisch möglich und scheint beim Testen richtig zu funktionieren, aber ich möchte sichergehen Ich übersehen nichts, was dadurch eindeutig kaputt geht. Wenn es kaputt geht, kann ich jederzeit die neue SA löschen und die alte wieder umbenennen, um den Schaden rückgängig zu machen, aber ich hoffe, dass ich es nicht versuche und versage.

Ich verwende SQL Server 2012, obwohl ich vermute, dass die gleiche Antwort für jede moderne Version gilt. Ich habe den Fehler gesehen, bei dem das Upgrade von 2005 auf 2008 brechen kann, wenn Sie dies getan haben , aber ich kann mir vorstellen, dass dies längst behoben ist.

SqlRyan
quelle
Überprüfen Sie, ob Jobs oder DBs ebenfalls Eigentum des Unternehmens sind.
Ali Razeghi
1
Was bringt Ihnen das Umbenennen des Kontos?
Aaron Bertrand
1
@AaronBertrand Normalerweise würde es nichts gewinnen, aber in diesem Fall gibt es Anwendungen, die mit dem SA-Konto ausgeführt werden, aber keine SA-Rechte benötigen (frühere schlechte Gewohnheiten von Entwicklern), und ich möchte ihnen eine "SA" geben. Konto mit dem Passwort, das sie erwarten, aber eingeschränkte Rechte, und verschieben Sie das tatsächliche Systemadministratorkonto auf einen neuen Namen, wo ich es deaktivieren kann. Ich kann das Konto mit dem Namen SA einfach nicht deaktivieren, da dann die bereitgestellten Anwendungen nicht mehr funktionieren (dies zu beheben ist ein weiterer Kampf, aber ich suche nach dem, was unter meiner Kontrolle steht).
SqlRyan
Korrigieren Sie die Verbindungszeichenfolge in der Anwendung. Ein sa-Konto mit dem Namen sa zu haben, das jedoch nicht über ausreichende Berechtigungen verfügt, ist das Nest einer Ratte, das darauf wartet, dass es passiert. Dunkelheit ist KEINE Sicherheit.
Aaron Bertrand
1
@AaronBertrand Einverstanden, das ist das Beste, aber der Code ist nicht unter meiner Kontrolle und das verantwortliche Team zieht seine Füße hoch, um ihn zu reparieren (aus ihrer Sicht ist nichts falsch und es funktioniert jetzt). Ich versuche sicherzustellen, dass die Dinge nicht kaputt gehen, wenn wir auf einen neuen Server wechseln, sondern dass ich die Kontrolle über Sicherheit und Stabilität erhalte, die ich mir schon seit einiger Zeit gewünscht habe.
SqlRyan

Antworten:

8

Es kann umbenannt werden. Es wird oft als Best Practice für die Sicherheit angesehen, aber es kann zu SQL Agent-Ausfällen kommen, wenn Sie den Agent-Dienst nicht bouncen oder den Jobbesitzer wechseln. Außerdem kann ich Berichte darüber finden, die Server 2008-Upgrades beeinträchtigen .

Das reicht aus, damit ich mich nicht darum kümmern möchte, es umzubenennen. Ich sage, es reicht aus, ein komplexes Passwort zuzuweisen und die Anmeldung zu deaktivieren, und es ist im Allgemeinen eine bessere Option, da es die Sicherheitsanfälligkeit tatsächlich schließt, anstatt sie nur zu verschleiern. Durch die Verschleierung erhalten Sie nur sehr wenig Sicherheit. Wenn Sie in Zukunft wirklich einen SQL-Autorisierungssystemadministrator benötigen, erstellen Sie ein neues Konto dafür. Das ist nicht besonders schwierig. Sie haben dieselbe Angriffsfläche wie das Umbenennen, ohne sich daran erinnern zu müssen, dass SID 0x01 nicht mehr sa ist (obwohl es immer noch sa ist). Und da sich die SID nie wirklich ändert, ist es natürlich nicht schwierig zu finden, welches Konto die SID 0x01 ist (oder ein Mitglied der Sysadmin-Rolle). Verwenden Sie nach Möglichkeit nicht einmal den gemischten Modus.

Speckwürfel
quelle
3

Ja, das Problem von 2005 bis 2008 ist behoben. Jetzt können Sie das SA-Konto deaktivieren, es in SomethingElse umbenennen, ihm ein chinesisches Passwort geben oder es mischen und abgleichen.

Siehe: http://www.mssqltips.com/sqlservertip/2221/different-ways-to-secure-the-sql-server-sa-login/

Beachten Sie, dass der neue Name wie folgt ermittelt werden kann, da die SID von SA (unabhängig davon, wie Sie sie umbenennen) weiterhin besteht:

SELECT * FROM sys.syslogins WHERE sid = 0x01

Natürlich können Sie das integrierte Administrator-Login natürlich nicht loswerden. Sie müssen sich also nur entscheiden, ob die geringfügigen Nebenwirkungen für Sie ein Problem darstellen.

Ich verwende niemals "SA" für meine Arbeit, sondern mein eigenes spezielles Domain-Konto mit Sysadmin-Berechtigungen.

RLF
quelle
0

Ich kann mir eine Sache vorstellen, die Probleme verursachen kann: Wird die Anwendung aufgerufen IS_SRVROLEMEMBER('sysadmin'), um zu überprüfen, ob das Konto Mitglied der festen Serverrolle "sysadmin" ist? Wenn ja, funktioniert dies nicht, wenn 'sa' ein anderes Konto wird.

Ubercoder
quelle
Nein, sie haben so etwas nicht weiterentwickelt - es war nur Code, der von einem faulen Entwickler übrig geblieben ist, der SA für alles verwendet hat, sodass sie keine Berechtigungen einrichten mussten. Zurück in SQL 2000 war das vermutlich viel häufiger als jetzt und der neue Code verwendet schließlich benannte Konten, damit Sie wissen, in welcher Anwendung eine Sitzung geöffnet ist :) Ich kann berichten, dass diese Änderung überhaupt keine anderen negativen Auswirkungen hatte und ihr Code war nicht der klügere über den Tausch.
SqlRyan