28.04.2014 Nr. 7 MSSQL

User für Azure-Datenbank mit eingeschränkten Berechtigungen erstellen

SQL-Server-201233Bei veröffentlichten Anwendungen, die einen Azure Datenbankzugriff benötigen, möchte man im Verbindungsstring nur ungern das Administrator-Password verraten.

Deshalb ist es ratsam, für die Anwendung einen User zu erstellen, der nur die benötigten Rechte hat.

Da die Berechtigungen bestimmten Rollen zugeordnet werden, braucht man zuerst eine Rolle:

sql
CREATE ROLE MyRole;
 GO;
 GRANT SELECT ON dbo.MyTable TO MyRole;
 GO;

Mögliche Berechtigungen für Tabellen sind: DELETE, INSERT, REFERENCES, SELECT, EXECUTE und UPDATE

Jetzt darf die Rolle MyRole in MyTable Selecten.

Fehlt noch der Benutzer:

Zuerst erstelle ich ein Login (dazu mit der MASTER Datenbank connecten):

sql
CREATE LOGIN MyLogin WITH password='?MyPassword?';

Dann zurück zur Datenbank, in der die Rolle angelegt wurde:

sql
CREATE USER MyUser FROM LOGIN MyLogin;

Jetzt noch den User MyUser zur Rolle MyRole hinzufügen:

sql
EXEC sp_addrolemember N'MyRole', N'MyUser';

Möchte ich der Rolle noch die Berechtigung erteilen eine bestimme gespeicherte Prozedur auszuführen führen, führe ich folgenden Befehl aus:

sql
GRANT EXECUTE ON OBJECT::sp_irgendEineProzedur TO MyRole;

Achtung:

Im Verbindungsstring das Login angeben, nicht den User :-)

csharp
SqlConnection con2 = new SqlConnection("Server=tcp:{server}.database.windows.net,1433;Database={datenbank};User ID=MyLogin@{server};Password=?MyPassword?;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;");

Voila ;-)