Archiv

Posts Tagged ‘SQL Azure’

Useranlage “Azure SQL Database” (a.k.a. SQL Azure)

Problemstellung

Bei der Anlage einer neuen SQL Database über das Azure Portal, egal ob dies über das Preview Portal oder über das seit längerem existierende Silverlight basierte Verwaltungsportal durchgeführt wird, muss ein Login Name mit angegeben werden.

Der bei der Anlage verwendete User hat ähnliche Datenbank Rechte wie der “sa” User bei einer On-Premise SQL Server Installationen.

Deshalb sollte aus grundlegenden Sicherheitsüberlegungen vermieden werden, dass Applikationen oder Dienste diesen Login für die alltägliche Arbeit mit der Datenbank verwenden. Leider ist die Anlange von zusätzlichen Usern zum jetzigen Zeitpunkt nicht so intuitiv gelöst wie bei einer On-Premise Installation.

Anlage eines Users im SQL Server Management Studio

imageDie Anlage eines entsprechenden Logins wird innerhalb des Microsoft SQL Server Management Studio (SSMS) durch einen leicht zu bedienenden Wizard stark vereinfacht.

Im unteren Bereich des Wizards besteht die Möglichkeit dem neu angelegten Login eine Default Datenbank zuzuweisen. Durch diese Auswahl wird ein entsprechender Datenbankuser für die ausgewählte Datenbank ebenfalls mit erzeugt.

Leider erscheint dieser Wizard nur bei einer Verbindung mit einem On-Premise SQL Server.

 

Bei der Verbindung mit einer Azure SQL Database erscheint nur ein vordefiniertes Script Template.

image

Durch das Script wird ein Login für die SQL Database bzw. den Azure SQL Database Server erzeugt, jedoch kein Datenbankuser für die spezifische Datenbank.

Useranlage SQL Database und spezifische Datenbank

Um nun einen User für die Datenbank anzulegen müssen folgende Schritte durchgeführt werden:

  • Erzeugung Login SQL Database/Azure SQL Database Server (falls noch nicht erfolgt)
  • Erzeugung Datenbankuser
  • Neu erzeugtem Datenbankuser Rechte zuordnen
    Erzeugung Login SQL Database bzw. Azure SQL Database Server

Um einen Login für die SQL Database bzw. den Azure SQL Database Server zu erzeugen muss sich mit der “master” Datenbank des jeweiligen Datenbankserver verbunden und ein Query Fenster geöffnet werden. Innerhalb dieses Fensters kann nun ein Login erzeugt werden:

— MASTER DB

CREATE LOGIN DefaultUser WITH PASSWORD=’xxxx‘

 

    Erzeugung Datenbankuser
    Der nächste Schritt ist die Erzeugung des Datenbankuser in der jeweiligen Datenbank. Hierzu ein Query Fenster mit Verbindung zur spezifischen Datenbank öffnen und folgendes T-SQL Command ausführen:

    — Neu angelegte DB

    CREATE USER DefaultUser FROM LOGIN DefaultUser

    Rechte zuordnen
    Um dem neu erzeugten User Rechte für die spezifische Datenbank zuzuordnen können in dem gleichen Query Fenster folgende T-SQL Kommandos durchgeführt werden:

    EXEC sp_addrolemember ‚db_datawriter‘, ‚DefaultUser‘

    EXEC sp_addrolemember ‚db_datareader‘, ‚DefaultUser‘

    — EXEC sp_addrolemember ‚db_ddladmin‘, ‚DefaultUser‘

    — EXEC sp_addrolemember ‚db_owner‘, ‚DefaultUser‘

    Die Zuweisung der Rollen “db_ddladmin” sowie “db_owner” sollte nur durchgeführt werden, wenn diese Rechte auch explizit benötigt werden. I. d. R. reicht es aus, dem Datenbankuser die Rollen “db_datawriter” und  “db_datareader” zuzuweisen.

      Achtung:

    Da die Verwendung von “use” bei SQL Database nicht erlaubt ist, muss sehr stark darauf geachtet werden, mit welcher Datenbank (“master” oder spezifische Datenbank) das jeweilige Query Fenster verbunden ist, bevor ein SQL Statement zur Erzeugung eines Login bzw. eines Datenbankusers durchgeführt wird.

    image

      Ebenso muss darauf geachtet werden, dass der neu erzeugte Login und Datenbankuser nur noch über eingeschränkte Rechte verfügt. Deshalb muss bei einer Verbindung mit Visual Studio bzw. dem SQL Server Management Studio zur Datenbank mit dem neu angelegten Login immer die entsprechende Datenbank mit angegeben werden:

    Kategorien:Azure Schlagwörter: , ,