{"id":2707,"date":"2009-04-28T22:35:10","date_gmt":"2009-04-28T20:35:10","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/?p=2707"},"modified":"2009-04-28T22:35:10","modified_gmt":"2009-04-28T20:35:10","slug":"der-admin-soll-die-daten-nicht-sehen-koennen","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2009\/04\/28\/sql-talk\/sql-server\/der-admin-soll-die-daten-nicht-sehen-koennen","title":{"rendered":"Der Admin soll die Daten nicht sehen k&#246;nnen"},"content":{"rendered":"<p>Heute fragte in der deutschen SQL-Server-Newsgroup im Usenet wieder jemand danach, wie man denn verhindern kann, dass der Sysadministrator (SA) des SQL-Servers die Daten in seiner Anwendungsdatenbank lesen bzw. &#228;ndern kann.  Die Frage stellte ich mir auch schon so oft. Die traurige Tatsache ist, dass Microsoft hier eine ganz einfache Linie f&#228;hrt: ein Admin darf alles. Das es in Deutschland Regelungen gibt, die anderes vorschreiben, ist nicht bei Ihnen angekommen.<\/p>\n<p>Das geht &#252;ber mehrere Stufen:<\/p>\n<ul>\n<li>Wer Dom&#228;nen-Admin ist, der ist auch lokaler Administrator.<\/li>\n<li>Wer lokaler Windows-Admin oder Dom&#228;nen-Admin ist, der ist auch SysAdmin im SQL-Server.<\/li>\n<li>Wer SysAdmin im SQL Server ist, der hat auch volle Adminrechte auf jeder Datenbank.<\/li>\n<\/ul>\n<p>Nat&#252;rlich kann man jeden einzelnen Schritt gut begr&#252;nden und sinnvolle Beispiele nennen. Leider gibt es aber auch f&#252;r jeden Schritt exotische Sonderf&#228;lle in denen das nicht so ist. In unserer Firma gibt es zum Beispiel eine personelle Trennung zwischen den Administratoren der Windows-Server und den SQL-Server-Administratoren. Um das zu verhindern, kann man zwar der vordefinierten SQL-Server-Rolle NT-Autorit&#228;t\\Administrator den Zugang zun&#228;chst versperren, aber leider nicht nachhaltig. Durch <a href=\"http:\/\/www.glorf.it\/blog\/2007\/09\/05\/sql-server\/zugang-zum-sql-server-erzwingen\">Start des SQL-Servers im Single-User-Modus<\/a> wird das wieder aufgehoben. Das sollte f&#252;r einen Admin machbar sein&#8230; \ud83d\ude09<\/p>\n<p>Wenn man also verhindern will, dass der Admin die Objektdefinitionen auslesen will, dann muss man die Objekte schon &quot;WITH ENCRYPTION&quot; anlegen. Aber auch dabei sollte man sich nicht zu sicher f&#252;hlen, denn die <a href=\"http:\/\/www.glorf.it\/blog\/2007\/07\/23\/sql-server\/decrypt-sql-server-objects\">Anleitung zur Entschl&#252;sselung<\/a> ist auch nicht so wirklich schwierig. F&#252;r mich ist das in der gleichen Liga wie die Obfuscation bei .Net&#8230; \ud83d\ude09<\/p>\n<p>OK, aber wenigstens kann man verhindern, dass der Admin die Daten lesen kann. Dazu muss man lediglich die Inhalte der Felder verschl&#252;sseln. Ich nehme an, dass ein Admin die mittels der SQL-Server-Encrypt-Funktionen verschl&#252;sselten Felder tats&#228;chlich nicht lesen kann. Wenn es durch Austausch oder Neugenerieren des Database-Master-Key doch gehen sollte, dann kann man immer noch &quot;<a href=\"http:\/\/www.glorf.it\/blog\/2007\/03\/16\/sql-talk\/wie-verschluesselt-encryptbypassphrase\">EncryptByPassphrase<\/a>&quot; verwenden. Hier sollte man allerdings bedenken, dass das Passwort im Klartext &#252;ber die Leitung geht. Und ein Admin, der keinen Netztrace ziehen kann, darf sich wohl kaum Admin nennen. Aber die auf Signaturen basierenden Encrypt-Funktionen halte schon f&#252;r recht sicher, bin hier aber nicht sehr erfahren. \ud83d\ude42<\/p>\n<p>Leider kenne ich keine M&#246;glichkeit, wie man verhindern kann, dass der Admin Datens&#228;tze l&#246;scht oder &#228;ndert. Man kann allenfalls erzeugte Signaturen von S&#228;tzen erstellen und inline speichern, um &#196;nderungen einzelner S&#228;tze zu bemerken. Und die Anzahl von Datens&#228;tzen zu bestimmten Schl&#252;sseln verschl&#252;sselt abspeichern, um das nachtr&#228;gliche Anf&#252;gen oder L&#246;schen zu bemerken. Das d&#252;rfte die g&#228;ngigsten F&#228;lle abdecken. Nur gegen mutwilligen Vandalismus ist man machtlos. Aber daf&#252;r gibt es ja hoffentlich Datensicherungen&#8230; \ud83d\ude41<\/p>\n<p>Das Res&#252;mee ist: Microsoft hat festgelegt, dass man dem Admin vertrauen muss. Wenn das nicht der Fall ist, dann sollte man schleunigst den Vertrag k&#252;ndigen und die Admin-Passw&#246;rter &#228;ndern&#8230; \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heute fragte in der deutschen SQL-Server-Newsgroup im Usenet wieder jemand danach, wie man denn verhindern kann, dass der Sysadministrator (SA) des SQL-Servers die Daten in seiner Anwendungsdatenbank lesen bzw. &#228;ndern kann. Die Frage stellte ich mir auch schon so oft. Die traurige Tatsache ist, dass Microsoft hier eine ganz einfache Linie f&#228;hrt: ein Admin darf [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[484],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/2707"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=2707"}],"version-history":[{"count":3,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/2707\/revisions"}],"predecessor-version":[{"id":2710,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/2707\/revisions\/2710"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=2707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=2707"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=2707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}