Security-Check-Script & Survey: SQL Server Security - Database-Owners, critical Permissions and role membership / Sicherheitsprüfungs-Script & Umfrage: SQL Server Datenbankbesitzer, kritische Rechte und Rollenmitgliedschaft
Dec 27th
(de) Dabei interessieren vor allem bestimmte serverweite Berechtigungen nicht nur des verwendeten Logins selber, sondern auch, falls er Mitglied einer (custom) Server Role ist, bestimmte, kritische Rechte dieser Rolle. Wer meine Vorträge zum Thema „Sicherheit in SQL Server“ in den letzten Jahren, und insbesondere der im Sommer 2013 gestarteten Reihe „SQL Server Attacked“ verfolgt hat, wird sich vielleicht hat erinnern, wie ich dort auch gezeigt habe, wie man aus einer Datenbank ausbrechen und volle Systemrechte erlangen kann („Privilegien Erweiterung“) – basierend auf einer Kombination von Datenbankbesitzer, -Konfiguration und Impersonierung. Hier stelle ich nun einen T-SQL Script zur Verfügung, welcher
Und hier ist der Script: |
(en) In this instance, particular server-wide permissions both of the used account as well as, in case of membership of a (custom) Server Role, critical permissions of that role, are of interest. Those who have followed my presentations on the topic “Security in SQL Server” in the last years, and especially the „SQL Server Attacked“ series launched in the summer of 2013, may remember how I had also demonstrated there how to break out of a database and be granted full system rights (“Elevation of privileges”), - based on a combination of database owner, configuration and impersonation. Here, I am providing a T-SQL Script which
Here you can find the script: |
Server 1: http://j.mp/13_SQL_DBO_Survey
Server 2: gallery.technet.microsoft.com/scriptcenter/Database-Owners-role-3af181f5/
- Er sollte auf allen SQL Servern ab der Version 2005 funktionieren (getestet 2008-2014). Zum Zwecke der Umfrage bitte ich Euch, die anonymisierten Ergebnisse (am Besten in Excel-Format) an die Email survey@SarpedonQualityLab.com zu senden, oder auch hier in den Kommentaren zu posten. Hier seht ihr ein Beispiel-Ergebnis: |
- It should be working on all SQL Servers since the 2005 version (tested: 2008-2014). For the purpose of the survey, I would like to ask you to send the anonymized results (preferably in excel-format) to the email survey@SarpedonQualityLab.com, or as well post them here in the comments. For anonymization purposes, you can simply leave out the last three columns from the result set – these are not of use to a data collection and only meant for your internal usage :-). Here, you can see a sample result: |
-> click to enlarge
Mehrere Einträge für dieselbe Datenbank entstehen, wenn der Datenbankbesitzer – oder seine Serverrolle(!) über mehrere, der von mir als sicherheitskritisch klassifizierten Rechte verfügt. Diese stehen dann in der Spalte login_permission bzw. role_permission. Hinter den Kürzeln verbergen sich: Die Inhalte der Spalten DatabaseNo, database_owner und external_owner sind absichtlich allgemein gehalten – die exakten Namen sind wie gesagt in den letzten 3 Spalten zu finden. Die Spalte db_owner_valid zeigt an, ob die Datenbank einen gültigen Besitzer hat. In diesem Fall besteht ein match zwischen dem „externen Besitzer“ und dem in der Datenbank selber hinterlegten. In der Spalte external_owner steht nur ob dieser „externe Besitzer“ sa ist oder nicht – der genaue Login steht dann in *External_Owner.Der Script speichert keine Daten dauerhaft im System ab und beseitigt seine temporären Zwischenergebnisse selbst. Ich hoffe, ihr findet die Auswertung hilfreich – und ich hoffe, ihr könnt die (anonymisierten) Ergebnisse mit der Community teilen. Ich werde keine Email speichern oder verwenden, sondern nur die anonymisierten Abfrageergebnisse. Ich bedanke mich für eure Teilnahme und Unterstützung der Community! |
Multiple entries for the same database occur when the database owner – or his serverrole(!) possess multiple of the permissions which I classified as security-wise critical. These are listed in the column login_permission respectively role_permission. The codes stand for: The contents of the columns DatabaseNo, database_owner and external_owner are left general on purpose – the exact names can be found in the last 3 columns s mentioned above. The column db_owner_valid indicates, whether the database has a valid owner. In this case there is a match between the „external owner“ and the one stored within the database itself. The column external_owner only shows whether that „external owner“ is sa or not –the exact Login is shown in *External_Owner. The script does not permanently save any data in the system and removes its temporary intermediary results by itself. I hope you find the report useful and I hope you can share the (anonymized) results with the community. Thank you in advance for your participation and support of the community! |
Andreas
Die Agenda der SQL Server Konferenz 2014 ist online!
Dez 2nd
Vom 10.-12. Februar 2014 findet in Darmstadt die erste Deutsche SQL Server Konferenz statt. Zeitgleich feiert die PASS Deutschland e.V. ihr 10-jähriges Bestehen. Also Geburtstag :-)
Seit heute steht auch die Agenda fest.
Es gibt 4 Tracks:
- Administration (DBA)
- Business Intelligence (BI)
- Entwicklung (DEV)
- Big Data & Information Management (BD)
Ich darf im Admin-Track gleich in der ersten Session In-Memory OLTP mit SQL Server 2014 XTP (Project Hekaton, jetzt "EXtreme Transactional Processing") vorstellen.
- Nachdem ich mich bereits intensiv mit Columnstore Indexes beschäftigt habe, ist das die zweite wichtige und komplett neue Technologie, in die ich mich rechtzeitig zur ersten Präsentation von Hekaton/XTP im November 2013 auf Microsoft’s TechNet Conf eingearbeitet habe. „Mission accomplished“. :-)
An dieser Stelle ein Dankeschön an die Veranstalter für das in mich gesetzte Vertrauen.
Danach geht es gleich weiter mit neuem heißen Content: mein geschätzter Kollegen Niko Neugebauer, hält einen Deep Dive in die neuen Rewritable Columnstore Indexes. Eine In-Memory Analytics Engine & Memory-Optimized Columnstore Index, die die Architektur von künftigen DataWarehouses verändert wird, wie ich schon diesen Sommer „prophezeite“. (The Columnstore Indexes & Batch Mode Processing (R)Evolution in SQL Server 2014)
Am 2. Tag der Hauptkonferenz geht es im Administrationstrack um den Bereich SQL Azure, Virtualisierung und Hochverfügbarkeitsarchitekturen mit AlwaysOn. Hierzu werden sogar Sprecher vom SQL CAT Team präsentieren.
Und auch die Tracks Business Intelligence, Entwicklung und Information Management bieten hochkarätige Themen und international erfahrene Sprecher.
Herausheben möchte ich an dieser Stelle das Gespann der Kollegen Georg Urban & Olivia Klose von Microsoft zu Big Data mit HDInsight oder Tillmann Eitelberg zu SSIS und HDInsight.
Artus Krohn-Grimberghe & Martin Vach stellen mit Predictive Analytics mit SQL Server & Project Passau ein DataMining Projekt vor
Wem die jeweils einstündigen Vorträge nicht genügen, sondern gleich richtig in ein Thema einsteigen möchte, dem empfehle ich eine der 3 PreCons, die am 10.2. stattfinden. – PreCons sind ganztägige Veranstaltungen, die sich intensiv einem bestimmten Themenkomplex widmen.
Und das ist die Auswahl:
Power Workshop 1: Azure Platform Immersion Day: Building Highly Available and Scalable Solutions in a Hybrid World
Trainer: tbd
Power Workshop 2: In-Memory Technologies im SQL Server 2014 – Die Performance Booster
Trainer: Niko Neugebauer & Andreas Wolter
- In diesem “gemischten Doppel” zeigen wir die neuen Storage Engines im SQL Server 2014: ColumnStore Indexes und In-Memory OLTP
Power Workshop 3: Microsoft Self-Service BI Landschaften – Professionell implementiert
Trainer: Kay Unkroth
Die vollständige Agenda findet sich hier: www.sqlkonferenz.de/Agenda.aspx
Ich hoffe man sieht sich in im Februar in Darmstadt
Andreas
Where are the scripts to the session „SQL Attacked/Hacking SQL Server“ ? ;-)
Nov 27th
Wo sind die Scripte zu dem Vortrag „SQL Attacked/Hacking SQL Server“ ? ;-)
(de) |
(en) |
Der Hintergrund, das ich die dafür entwickelten Scripts nicht veröffentliche, ist eigentlich recht einfach: ich zeige darin unter anderem Angriffsvarianten und Techniken, die so noch nicht dokumentiert oder in der „Szene“ bekannt sind(?). Und da ich die frei verfügbaren SQL-Injection- und allgemein „Hacking“/DoS -Tools ein wenig kenne, möchte ich vermeiden, denjenigen, die diese entwickeln, neue Ideen zu geben um Server in die Knie zu zwingen. Das bringt keinem (aus der SQL Server Community) etwas (- höchstens "Auftragshackern", aber "leider" habe ich da keine Aktien drinnen ;-) ). - Die meisten SQL-Injection-Varianten sind übrigens auch wirklich gut im Netz dokumentiert, und eine einfache Suche wird eine Vielfalt an Code-Beispielen zutage bringen. Es macht kaum einen Unterschied, welche Vorlage man verwendet, man muss so und so noch Anpassungen vornehmen. ;-) Im Gegensatz zu landläufiger Meinung, glaube ich nicht daran, dass jeder alle „Hacking“-Techniken selber durchführen können muss. Ich denke das ist häufig ein Vorwand, sicherheitsbedenkliche Aktionen pauschal zu rechtfertigen. Ich bin der Ansicht, dass es genügt, zu wissen/gesehen zu haben, wo man angreifbar sein kann, und das es wichtiger ist, die Zeit darauf zu verwenden, die Skills für die Sicherung zu entwickeln. Um selber zu „Hacken“, ist das übrigens eine gute Voraussetzung (und der Unterschied zum sogenannten „Script-Kiddie“). Nur das man dann einfach noch mehr Kenntnisse benötigt. In aller Regel sehe ich jedoch eher einen Mangel an Kenntnissen über die Zusammenhänge in der Sicherheitsarchitektur von SQL Server, auf den ich mich naturgemäß fokussiere, sowie natürlich dem darunterliegenden Windows-Server und der Domain-Architektur allgemein. |
The background to why I don’t make public the scripts developed for this purpose is actually quite simple: in the scripts, I am showing attack variants and techniques, among others, which have not been documented or are not known within the “scene” (?). And since I am a little familiar with the discretionary SQL injection and “Hacking”/DoS tools in general I would like to avoid giving those parties developing these tools new ideas for bringing servers down. This wouldn’t be of use to anyone (from the SQL Server community) (- except maybe to “contract hackers,” but I’m “afraid” I don’t hold any stocks in there ;-)). - By the way, most of the SQL injection variants are very well documented in the internet, and a simple search will spill out a variety of code examples. It will hardly make a difference which template one is using, as one will need to make adaptions anyway. ;-) In contrast to general opinion, I do not believe that everyone needs to be able to carry out all “hacking” techniques by themselves. I think this is often used as a blanket pretext for justifying security-wise questionable actions. I am of the opinion that it is sufficient to know/have seen where one can be vulnerable, and that it is more important to invest the time into developing skills for protection. And this is a good prerequisite for “hacking” oneself (and the difference to the so-called “script kiddie”). Only that even more knowledge will be required then. In principle, however, I am rather observing a lack of knowledge of the correlations in the security architecture of SQL Server on which I am by nature focusing, as well as, of course, the Windows Server beneath it and the domain architecture in general. To be able to “hack” alone is of no avail. Once one has covered everything known, one can still get to that. If this is necessary, one will end up in the grey area of “penetration testing.” |
Das eigentliche Ziel meiner Vorträge/“Shows“(?) ist die "Awareness/Wahrnehmung", und Verbesserung der Sensibilität für das Thema Sicherheit im Sinne von: „Habe ich das alles schon einmal bedacht?“ „Könnte ich doch noch Lücken haben und ein leichtes Angriffsziel sein, ohne es bislang gemerkt zu haben?“ Nicht: "Um meine SQL Server Umgebung sicherer zu machen, möchte ich mich selber im „Hacken“ versuchen." Ich hoffe das macht Sinn für Euch :-) In jedem Fall ist eine offene Diskussion zu diesem Thema durchaus in meinem Sinne. |
The actual goal of my lectures/ “shows” (?) is the “awareness/perception,” and the enhancement of sensitivity for the topic of security in the sense of: “Have I taken all this into consideration?” “Could I still have gaps and be an easy target without having noticed up to now?” Not: “In order to make my SQL Server environment more secure I would like to dabble in ‘hacking.’” I hope this makes sense to you J Either way, an open discussion on this topic is absolutely along my lines. |
Happy securing
Andreas
PS: Aus diesem Grunde biete ich ja schon seit einigen Jahren immer wieder den Security Essential für die PASS Deutschland an – aber wie wir wissen, zieht das Thema „Sichern“ einfach weniger als „Hacken“ ;-) Und für diejenigen, die die Grundlagen schon beherrschen, aber komplexere Anforderungen oder kritischere Umgebungen haben, kommen dann die Master-Classes zum Thema Sicherheit: www.sarpedonqualitylab.com/SQL_Master-Classes.htm |
PS: For those who already know the basics, but have more complex requirements or critical environments, there are the Master-Classes on Security: en.sarpedonqualitylab.com/SQL_Master-Classes.htm |
Comparing Extended Events vs SQL Trace – or why SQL Trace & Profiler are just a thing of the past :-)
Nov 21st
Extended Events vs SQL Trace im Vergleich – oder warum SQL Trace & Profiler einfach von gestern sind :-)
(de) Für alle, die noch mit dem alten Werkzeug SQL Server Profiler (Profiler ist das Frontend für SQL Trace, gestartet mit sp_trace_create) arbeiten, und sich noch nicht für die neue Technologie entscheiden konnten, hier eine kleine Entscheidungshilfe. Was Extended Events (XEvents) besser als SQLTrace machen: |
(en) For those of you who are still working with the old tool SQL Server Profiler (Profiler is the frontend for SQL Trace, started with sp_trace_create) and have not quite been able to decide for the new technology, here is some decision guidance. What Extended Events (XEvents) do better than SQL Trace: |
|
|
*1
Extended Events vs. SQL trace Events per Version
*2
As an example: For Service Broker there are:
15 Events in SQLTrace vs. 44 Events in XEvents (SQL Server 2012 SP1)
Ich hoffe, das hilft dem einen oder anderen, die alte Gewohnheit abzulegen, und die kleine Lernphase in Kauf zu nehmen. Eine Liste aller Extended Events in SQL Server 2012 SP1 samt Ihrem Gegenstück in SQL Trace, welche man für Migrationszwecke (SQLTrace -> XEvent Trace) verwenden kann findet sich in dieser Seite. (Aufgrund einer Größenbeschränkung passte sie nicht mehr hier hinein.) |
I hope this helps some of you to unlearn the old habit and accept the little learning phase.
A list of all Extended Events in SQL Server 2012 SP1 including its counter piece in SQL Trace that can be used for migration purposes (SQLTrace-> XEvent Trace) is available on this page. (Due to size restriction, it didn’t fit in here anymore.) |
> Mapping Extended Events with sys.trace_xe_event_map to SQL Trace <
Happy better Tracing
Andreas
PS: Für 2014 befindet sich mit den SQL Server Master-Classes zum Thema „Tracing mit Extended Events“ auch die nächste Runde der Trainings zu diesem Thema in der Planung :-) |
P.S. For 2014, the next round of training in this topic is being developed in conjunction with SQL Server Master-Classes on the topic “Tracing with Extended Events” :-) |
SQL Server 2014 CTP2 auf PASS Summit Released / öffentlicher Download / public download
Oct 16th
(de) Hier ist der Link zum Download: |
(en) Here is the link to the download: |
technet.microsoft.com/en-US/evalcenter/dn205290
Ein kurzer Überblick über die Neuheiten im Bereich der Datenbank-Engine in diesem Release – zusätzlich zu den Neuerungen aus CTP1, über die ich hier schon berichtete:
|
A short overview on the New Features in the Database-Engine part in this release – cumulative to the new features from CTP1, which I have listed here already before:
|
|
Security:
|
In Reporting Services und Integration Services gibt es keine Änderungen zu vermelden. Die komplette Liste ist hier zu finden: msdn.microsoft.com/de-de/library/bb510411%28v=sql.120%29.aspx Dazu kommen viele Neuerungen im Zusammenspiel mit SQL Azure und im BI & Information Services Bereich. Über diese in Detail zu Berichten, überlasse ich meinen geschätzten Kollegen. Ich werde hier auf die entsprechenden Blog-Posts verweisen sobald diese fertig sind. Hinweis: Ein Upgrade der CTP1 zur CTP2 ist nicht unterstützt. |
In Reporting Services and Integration Services there are no changes. The complete list can be found here: msdn.microsoft.com/en-us/library/bb510411(v=sql.120).aspx Added to that there are many new enhancements connected with SQL Azure and in the area of BI & Information Services. I will leave detailed reports on those to my valued colleagues and will link to the respective blog-posts once ready. Note: Upgrading from CTP1 to CTP2 is not supported. |
Have fun with SQL Server 2014 CTP2
Andreas