Megosztás a következőn keresztül:


Az adatbázis hordozhatóvá tétele tárolt adatbázisok használatával

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-adatbázis a Microsoft Fabricben

Tartalmazott adatbázis-felhasználók használata az SQL Server és az Azure SQL Database-kapcsolatok adatbázisszintű hitelesítéséhez. A tartalmazott adatbázisok olyan adatbázisok, amelyek el vannak különítve más adatbázisoktól és az adatbázist üzemeltető SQL Server- vagy SQL Database-példánytól (és az master adatbázistól).

Az SQL Server támogatja a tartalmazott adatbázis-felhasználókat mind Windows-hitelesítés, mind SQL Server-hitelesítés esetén. SQL Database használata esetén egyesítse a tartalmazott adatbázis-felhasználókat adatbázisszintű tűzfalszabályokkal.

Ez a cikk áttekinti a tartalmazott adatbázismodell használatának előnyeit a hagyományos bejelentkezési/felhasználói modellhez és a Windows- vagy kiszolgálószintű tűzfalszabályokhoz képest. Bizonyos forgatókönyvek, kezelhetőség vagy alkalmazás-üzleti logika esetén továbbra is szükség lehet a hagyományos bejelentkezési/felhasználói modell és a kiszolgálószintű tűzfalszabályok használatára.

Hagyományos bejelentkezési és felhasználói modell

A hagyományos kapcsolatmodellben a Windows-felhasználók vagy a Windows-csoportok tagjai a Windows által hitelesített felhasználói vagy csoport hitelesítő adatok megadásával csatlakoznak az adatbázismotorhoz. Vagy a felhasználók megadhatnak egy nevet és egy jelszót, és sql serveres hitelesítéssel csatlakozhatnak. Az adatbázisnak mindkét esetben rendelkeznie kell egy olyan bejelentkezéssel, master amely megfelel a csatlakozó hitelesítő adatoknak.

Miután az adatbázismotor megerősítette a Windows hitelesítési hitelesítő adatait, vagy hitelesíti az SQL Server hitelesítési hitelesítő adatait, a kapcsolat általában megpróbál csatlakozni egy felhasználói adatbázishoz. A felhasználói adatbázishoz való csatlakozáshoz a bejelentkezést le kell képezni (vagyis társítani) egy adatbázis-felhasználóhoz a felhasználói adatbázisban. A kapcsolati sztring adott adatbázishoz való csatlakozást is megadhat, amely az SQL Serverben nem kötelező, de az SQL Database-ben kötelező.

A fontos alapelv, hogy a bejelentkezésnek (az master adatbázisban) és a felhasználónak (a felhasználói adatbázisban) is léteznie kell, és kapcsolatban kell lennie egymással. A felhasználói adatbázishoz való csatlakozás függőséget eredményez az master adatbázisban való bejelentkezéshez. Ez a függőség korlátozza az adatbázis áthelyezését egy másik üzemeltető SQL Server-példányra vagy az Azure SQL Database-kiszolgálóra.

Ha nem érhető el kapcsolat az master adatbázissal (például feladatátvétel van folyamatban), a teljes kapcsolati idő megnő, vagy a kapcsolat időtúllépést eredményezhet. A nem elérhető kapcsolatok csökkenthetik a kapcsolat méretezhetőségét.

Tartalmazott adatbázis-felhasználói modell

A tartalmazott adatbázis-felhasználói modellben az adatbázisba master való bejelentkezés nem jelenik meg. Ehelyett a hitelesítési folyamat a felhasználói adatbázisban történik. A felhasználói adatbázis adatbázis-felhasználója nem rendelkezik társított bejelentkezéssel az master adatbázisban.

A tartalmazott adatbázis-felhasználói modell támogatja a Windows-hitelesítést és az SQL Server-hitelesítést is. Az SQL Serverben és az SQL Database-ben is használható.

Ha tartalmazott adatbázis-felhasználóként szeretne csatlakozni, a kapcsolati sztringnek mindig tartalmaznia kell egy paramétert a felhasználói adatbázishoz. Az adatbázismotor ezt a paramétert használja annak megismeréséhez, hogy melyik adatbázis felelős a hitelesítési folyamat kezeléséért.

A tárolt adatbázis-felhasználó tevékenysége az adatbázis hitelesítésére korlátozódik. Az adatbázis felhasználói fiókját külön kell létrehozni minden olyan adatbázisban, amire a felhasználónak szüksége van. Az adatbázisok módosításához az SQL Database-felhasználóknak új kapcsolatot kell létrehozniuk. Az SQL Server tárolt adatbázis-felhasználói módosíthatják az adatbázisokat, ha egy azonos felhasználó egy másik adatbázisban található.

Az Azure-ban az SQL Database és az Azure Synapse Analytics támogatja a Microsoft Entra ID (korábbi nevén Azure Active Directory) identitásait mint beágyazott adatbázis-felhasználókat. Az SQL Database támogatja az SQL Server-hitelesítést használó, tartalmazott adatbázis-felhasználókat, de az Azure Synapse Analytics nem. További információ: Csatlakozás az SQL Database-hez Microsoft Entra-hitelesítéssel.

Ha Microsoft Entra-hitelesítést használ, a felhasználók a Microsoft Entra univerzális hitelesítésével létesíthetnek kapcsolatokat az SQL Server Management Studióból. A rendszergazdák úgy konfigurálhatnak univerzális hitelesítést, hogy többtényezős hitelesítést igényeljenek, amely telefonhívással, szöveges üzenettel, PIN-kóddal ellátott intelligens kártyán vagy mobilalkalmazás-értesítésen keresztül ellenőrzi az identitást. További információ: A Microsoft Entra többtényezős hitelesítés használata.

Az SQL Database és az Azure Synapse Analytics esetében mindig szükség van az adatbázis nevére a kapcsolati sztringben. Így nem kell módosítania a kapcsolati sztringet, amikor a hagyományos modellről a tartalmazott adatbázis-felhasználói modellre vált. SQL Server-kapcsolatok esetén az adatbázis nevét hozzá kell adni a kapcsolati sztringhez, ha még nincs jelen.

Important

A hagyományos modell használata esetén a kiszolgálószintű szerepkörök és a kiszolgálószintű engedélyek korlátozhatják az összes adatbázishoz való hozzáférést. A tartalmazott adatbázis-modell használata esetén az adatbázis-tulajdonosok és a ALTER BÁRMELY FELHASZNÁLÓI engedéllyel rendelkező adatbázis-felhasználók hozzáférést biztosíthatnak az adatbázishoz. Ez az engedély csökkenti a magas jogosultsági szintű kiszolgálói bejelentkezések hozzáférés-vezérlését, és kibővíti a hozzáférés-vezérlést, hogy magas jogosultságú adatbázis-felhasználókat is bevonjon.

Firewalls

SQL Server

Az SQL Server esetében a Windows tűzfalszabályok az összes kapcsolatra vonatkoznak, és ugyanolyan hatással vannak a bejelentkezésekre (hagyományos modellkapcsolatokra) és a tartalmazott adatbázis-felhasználókra. További információ a Windows tűzfalról: A Windows tűzfal konfigurálása adatbázismotor-hozzáféréshez.

SQL Database-tűzfalak

Az SQL Database külön tűzfalszabályokat tesz lehetővé a kiszolgálószintű kapcsolatok (bejelentkezések) és az adatbázisszintű kapcsolatok (tartalmazott adatbázis-felhasználók) számára. Amikor az SQL Database egy felhasználói adatbázishoz csatlakozik, először ellenőrzi az adatbázis tűzfalszabályait. Ha nincs olyan szabály, amely lehetővé teszi az adatbázis elérését, az SQL Database ellenőrzi a kiszolgálószintű tűzfalszabályokat. A kiszolgálószintű tűzfalszabályok ellenőrzéséhez hozzá kell férni az SQL Database-kiszolgáló adatbázisához master .

Az adatbázisszintű tűzfalszabályok a tárolt adatbázis-felhasználókkal kombinálva szükségtelenné tehetik a master kiszolgáló adatbázisának elérését a kapcsolat során. Az eredmény a kapcsolatok méretezhetőségének javítása.

Az SQL Database tűzfalszabályairól az alábbi cikkekben talál további információt:

Szintaxisbeli különbségek

Hagyományos modell Tartalmazott adatbázis-felhasználói modell
Amikor csatlakozik az master adatbázishoz:

CREATE LOGIN login_name WITH PASSWORD = 'strong_password';

Ezután, amikor egy felhasználói adatbázishoz csatlakozik:

CREATE USER 'user_name' FOR LOGIN 'login_name';
Ha felhasználói adatbázishoz csatlakozik:

CREATE USER user_name WITH PASSWORD = 'strong_password';
Hagyományos modell Tartalmazott adatbázis-felhasználói modell
Jelszó módosítása az master adatbázis kontextusában:

ALTER LOGIN login_name WITH PASSWORD = 'strong_password';
Jelszó módosítása a felhasználói adatbázis környezetében:

ALTER USER user_name WITH PASSWORD = 'strong_password';

SQL Managed Instance

Az Azure SQL Managed Instance a helyszíni SQL Serverhez hasonlóan viselkedik a tárolt adatbázisok kontextusában. A tárolt felhasználó létrehozásakor mindenképpen módosítsa az adatbázis környezetét az master adatbázisról a felhasználói adatbázisra. Emellett az elszigetelési beállítás beállításakor nem lehet aktív kapcsolat a felhasználói adatbázissal. Útmutatóként használja az alábbi kódot.

Warning

Az alábbi példaszkript utasítással kill zárja be az adatbázis összes felhasználói folyamatát. A szkript futtatása előtt győződjön meg arról, hogy tisztában van a szkript következményeivel, és hogy illeszkedik-e a vállalkozásához. Győződjön meg arról is, hogy más kapcsolatok nem aktívak a felügyelt SQL-példányok adatbázisában, mert a szkript megzavarja az adatbázisban futó egyéb folyamatokat.

USE master;

SELECT * FROM sys.dm_exec_sessions
WHERE database_id  = db_id('Test')

DECLARE @kill_string varchar(8000) = '';
SELECT @kill_string = @kill_string + 'KILL ' + str(session_id) + '; '
FROM sys.dm_exec_sessions
WHERE database_id  = db_id('Test') and is_user_process = 1;

EXEC(@kill_string);
GO

sp_configure 'contained database authentication', 1;
GO

RECONFIGURE;
GO

SELECT * FROM sys.dm_exec_sessions
WHERE database_id  = db_id('Test')

ALTER DATABASE Test
SET containment=partial

USE Test;
GO

CREATE USER Carlo
WITH PASSWORD='Enterpwdhere*'

SELECT containment_desc FROM sys.databases
WHERE name='Test'

Remarks

  • A tartalmazott adatbázis-felhasználókat engedélyezni kell az SQL Server minden egyes példányához. További információ: Tartalmazott adatbázis-hitelesítés (kiszolgálókonfigurációs lehetőség).
  • A tartalmazott adatbázis-felhasználók és a nem visszacsatoló névvel rendelkező bejelentkezések együtt létezhetnek az alkalmazásokban.
  • Tegyük fel, hogy az master adatbázisban van egy bejelentkezés, amelynek a neve name1. Ha egy név1 nevű, elkülönített adatbázis-felhasználót hoz létre, és a kapcsolati sztringben meg van adva egy adatbázisnév, akkor az adatbázishoz való csatlakozáskor az adatbázis-felhasználó környezetét választja a rendszer a bejelentkezési környezet helyett. Ez azt jelzi, hogy a tárolt adatbázis-felhasználó elsőbbséget élvez az azonos nevű bejelentkezésekkel szemben.
  • Az SQL Database-ben a tárolt adatbázis felhasználójának neve nem lehet ugyanaz, mint a kiszolgálói rendszergazdai fiók neve.
  • Az SQL Database kiszolgáló rendszergazdai fiókja sohasem lehet önálló adatbázis-felhasználó. A kiszolgáló rendszergazdája rendelkezik a tárolt adatbázis felhasználóinak létrehozásához és kezeléséhez szükséges engedélyekkel. A kiszolgáló rendszergazdája engedélyeket adhat a felhasználói adatbázisokban tárolt adatbázis-felhasználók számára.
  • Mivel a tartalmazott adatbázis-felhasználók adatbázisszintű tagok, minden olyan adatbázisban létre kell hoznia a tartalmazott adatbázis-felhasználókat, ahol használni szeretné őket. Az identitás az adatbázisra korlátozódik. Az identitás független (minden szempontból) egy olyan felhasználótól, aki ugyanazzal a névvel és jelszóval rendelkezik egy másik, ugyanazon kiszolgálón található adatbázisban.
  • Használja ugyanazt a jelszóerősséget, amelyet általában a bejelentkezésekhez használna.