3.5. Direkter Zugriff auf die Datenbank (Variante Azure Cloud)
Die direkte Arbeit auf der Datenbank ist nur für sehr erfahrene Anwender empfohlen. Sie erhalten haben damit sehr umfangreiche Möglichkeiten (eingeschlossen die Möglichkeit alles kaputt zu machen) - stellen Sie daher unbedingt im Vorfeld sicher das Sie per Backup / Restore die Datenbank nach unbeabsichtigten Änderungen zurücksetzen können. Alternativ können Sie Strukturen (Factories / Productlines / Products) zur Sicherheit vorab exportieren.
Sie erhalten für den Zugriff auf die Datenbank einen separaten Benutzer mit separatem Passwort pro Datenbank - er hat keinerlei Verbindung zu den Benutzerkonten, welche im Azure Portal verwendet werden.
Sofern Sie für mehrere Datenbanken User erhalten geben wir Ihnen in diesen den gleichen Usernamen / Passwörter - sie können und müssen diese aber pro Datenbank ändern.
1. Zielstellung
Durch den direkten Zugriff auf die Datenbank werden üblicherweise folgende Ziele verfolgt
Zugriff auf die Daten per SQL Server Managementstudio
Zugriff auf die Daten per PowerBI
Abruf der Daten mit Excel PowerQuery
Abruf der Daten aus allen sonstigen Tools, welche SQL Abfragen unterstützen
Konfiguration der Datenbank durch sehr erfahrene Anwender
2. Sicherheitsmaßnahmen
Notieren Sie vor Änderungen an der Datenbank den exakten Zeitpunkt Ihrer Arbeiten (Stunden / Minuten) - um die Datenbank später ggf. genau auf diesen Stand zurück zu setzen
erledigen Sie Anpassungen zeitnah vollständig - Backup / Restore ist in der Standardkonfiguration der saxess Cloud nur für die jeweils letzten 7 Tage möglich (erweiterte Zeiträume auf Anfrage)
Backup / Restore kann nicht durch Sie selbst durchgeführt werden, wenden Sie sich hierfür bitte an den Saxess Support und erteilen Sie den Auftrag für eine Service Aktion
Der Datenbankuser hat meist weit höhere Rechte als ein normaler Benutzer - speichern Sie dessen Login nicht in Abfragen etc., welche von Endanwendern verwendet werden.
3. Funktionsprinzip
in der Datenbank werden von uns für Sie einer oder mehrere Benutzer angelegt
die Benutzer erhalten einen abgestimmten Rechteumfang (Einzelne Tabellen / Views / Prozeduren ausführen, Alle Daten lesen, Vollzugriff)
je nach Rechteumfang können Sie nachfolgend die Datenbank teilweise oder komplett administrieren
4. Zugriff auf die Azure SQL Server Datenbank
Der Zugriff auf die Azure SQL Server Datenbank ist nur möglich, falls dies bei saxess beauftragt wurde. Im Rahmen dieser Beauftragung wird festgelegt
soll der Zugriff nur von bestimmten, oder von allen IP Adressen möglich sein
sollen im Rahmen des Zugriffs Rechtefilter aktiv sein, oder soll der unbeschränkte Datenzugriff möglich sein
Für den Zugriff müssen folgende Voraussetzungen erfüllt sein
die zugreifende Benutzer muss über Protokoll tcp mit Port 1433 ausgehende Verbindungen nutzen können
https://docs.microsoft.com/de-de/azure/sql-database/sql-database-control-access
in vielen Umgebungen ist das problemlos möglich, in Firmennetzwerken mit Firewallmanagement muss die IT des Kunden dies in der Regel freischalten
der User muss in SSMS / Excel etc. immer als SQL Datenbankbenutzer angegeben werden - nicht als Windows Benutzer
4.1. Verbindung mit der Datenbank im SQL Server Management Studio
Unter Optionen muss der Name der Datenbank angegeben werden
4.2. Verbindung aus Excel
5. FAQ
Kann ich als Datenbankanwender selbst mein Passwort ändern ?
Ja, durch ausführen eines SQL Befehls bei aktiver Verbindung - siehe Abschnitt für Administration
Nach der Passwortänderung per Befehl muss man sich von der Datenbank trennen und neu verbinden, da die Verbindung ja noch das alte Passwort nutzt
Ich habe meine Passwort im Azure Portal geändert - jetzt funktioniert der Login in die Datenbank nicht mehr
das Passwort des Datenbankusers hat sich nicht geändert - der User im Azure Portal hat mit dem Datenbankbenutzer nichts zu tun
Muss ich den Datenbankuser in der OCT Benutzerverwaltung als Benutzer anlegen und berechtigen ?
das kommt darauf an, wie der Datenbankbenutzer berechtigt wurde - ob er ohne oder mit OCT Berechtigungssystem zugreifen soll
wurde der Datenbankbenutzer als db_owner angelegt kann er alle Tabellen direkt lesen und auswerten
ein User mit db_owner Rechte muss auch in der OCT Benutzerverwaltung berechtigt werden, falls er Standardprozeduren ausführen will (da diese immer da OCT Rechtesystem nutzen)
6. Anleitung für die Administration
Der Prozess erfolgt initial durch Saxess und später ggf. durch einen Kundenadministrator.
in der Azure Datenbank muss ein contained User angelegt werden (separater User mit Passwort, keine Beziehung um AD B2C)
in der Azure Datenbank muss in der Datenbankfirewall die IP Adresse / Range des zugreifenden Benutzers freigeben sein
der User muss beim Login den Datebanknamen angeben, das wird oft vergessen
der User kann sein Passwort nur per Script ändern, nicht über die Oberfläche von SQL Server
6.1. Anlage der contained Users in der Datenbank
Rollen vorab entscheiden
/*
Script um einen Contained User in der Datenbank zu erzeugen und diesem Rollen zuzuweisen.
Gerd Tautenhahn für saxess-software
06/2020
*/
-- KONFIGURATION ***************************************************
DECLARE @UserName NVARCHAR(255) = 'Holger_Holz'; -- Generisch für eine Firma z.B."Siemens_Reader" oder persönlich für einen Firmenmitarbeiter "Siemens_HansMeier" definieren
DECLARE @Password NVARCHAR(255) = 'ddre4564_d'; -- Passwort ausreichender Komplexität setzen
-- Rollen aktivieren
DECLARE @SetRole_dbReader_Bool INT = 0 -- falls der User auch direkt auf Tabellen / Views zugreifen sollen
DECLARE @SetRole_dbOwner_Bool INT = 0 -- falls der User komplett als dbowner handeln können soll
-- *****************************************************************
IF @SetRole_dbOwner_Bool = 1
BEGIN
SET @SetRole_dbReader_Bool = 0
PRINT 'Die rolle db_reader wird ignoriert, da die Rolle db_owner diese bereits umfasst.'
END
DECLARE @SQL NVARCHAR(MAX) = '';
-- CREATE User
BEGIN
SET @SQL = 'DROP USER IF EXISTS '+ @Username;
EXEC (@SQL);
SET @SQL = 'CREATE USER [' + @Username + '] WITH Password = ''' + @Password + '''';
EXEC (@SQL);
PRINT 'User ' + @Username + ' wurde erzeugt mit Passwort ' + @Password + ' .';
END;
-- SET Roles
IF @SetRole_dbReader_Bool = 1
BEGIN
EXEC sp_addrolemember 'dbreader', @Username;
PRINT 'User ' + @Username + ' wurde wurde die Rolle db_reader zugewiesen - dieser User kann alle Daten lesen).'
END;
-- SET Roles
IF @SetRole_dbOwner_Bool = 1
BEGIN
EXEC sp_addrolemember 'db_owner', @Username;
PRINT 'User ' + @Username + ' wurde wurde die Rolle db_owner zugewiesen - dieser User kann hat volle Rechte in der Datenbank.'
END;
6.2. Änderung des Passworts eines contained User
das kann der User auch selbst, sobald er es gelernt hat Befehle in SSMS auszuführen
falls der User diesen User in mehreren Datenbanken besitzt, ändert sich das Passwort dadurch nur in dieser Datenbank - auch gleichnamige User sind nicht datenbankübergreifend gültig, sondern isoliert.
-- KONFIGURATION ***************************************************
DECLARE @Username NVARCHAR(255) = 'Demouser';
DECLARE @Password NVARCHAR(255) = 'xx';
-- KONFIGURATION ***************************************************
DECLARE @SQL NVARCHAR(MAX) = '';
SET @SQL = 'ALTER USER [' + @Username + '] WITH password= ''' + @Password + '''';
EXEC (@SQL);
6.3. Löschen eines Contained Users
DROP USER [DemoUser];
6.4. Konfiguration der Firewall
Klären ob bestimmte, oder alle IPs freigegeben werden sollen
Zur Kundendatenbank verbinden
-- Query the database for existing rules
SELECT * FROM sys.database_firewall_rules;
-- Create one or more rules
EXEC sp_set_database_firewall_rule N'Single IP' ,'123.123.123.123' ,'123.123.123.123'; -- einzelne IP
-- EXEC sp_set_database_firewall_rule N'Range of IPs' ,'0.0.0.0' ,'255.255.255.255'; -- das wären alle, oder ein bestimmter Bereich
-- delete a rule
EXEC sp_delete_database_firewall_rule N'Alle IPs';
6.5. Backup / Restore einer Datenbank
Kann nie in Eigenadministration erfolgen, wird immer per Service Auftrag von Saxess übernommen.