User für Azure-Datenbank mit eingeschränkten Berechtigungen erstellen
Bei 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:
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):
CREATE LOGIN MyLogin WITH password='?MyPassword?';
Dann zurück zur Datenbank, in der die Rolle angelegt wurde:
CREATE USER MyUser FROM LOGIN MyLogin;
Jetzt noch den User MyUser zur Rolle MyRole hinzufügen:
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:
GRANT EXECUTE ON OBJECT::sp_irgendEineProzedur TO MyRole;
Achtung:
Im Verbindungsstring das Login angeben, nicht den User 🙂
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 😉