Delen via


Geïsoleerde toegang tot een hyperscale benoemde replica configureren

Van toepassing op: Azure SQL Database

In dit artikel wordt de procedure beschreven voor het verlenen van toegang tot een azure SQL Hyperscale benoemde replica zonder toegang te verlenen tot de primaire replica of andere benoemde replica's. In dit scenario is resource- en beveiligingsisolatie van een benoemde replica mogelijk, omdat de benoemde replica wordt uitgevoerd met behulp van een eigen rekenknooppunt. Dit is handig wanneer alleen-lezentoegang tot een Azure SQL Hyperscale-database nodig is. Geïsoleerde, in deze context, betekent dat CPU en geheugen niet worden gedeeld tussen de primaire en de benoemde replica, query's die op de benoemde replica worden uitgevoerd, geen rekenresources van de primaire of van andere replica's gebruiken, en principals die toegang hebben tot de benoemde replica, hebben geen toegang tot andere replica's, inclusief de primaire.

Notitie

Microsoft Entra-id is de nieuwe naam voor Azure Active Directory (Azure AD). Op dit moment wordt de documentatie bijgewerkt.

Een aanmelding maken in de hoofddatabase op de primaire server

Voer in de master database op de logische server die als host fungeert voor de primaire database het volgende uit om een nieuwe aanmelding te maken.

Gebruik uw eigen sterke en unieke wachtwoord.

create login [third-party-login] with password = 'Just4STRONG_PAZzW0rd!';

Haal de HExadecimale SID-waarde op voor de gemaakte aanmelding vanuit de sys.sql_logins systeemweergave:

select sid from sys.sql_logins where name = 'third-party-login';

Schakel de aanmelding uit. Hierdoor wordt voorkomen dat deze aanmelding toegang heeft tot een database op de server die als host fungeert voor de primaire replica.

alter login [third-party-login] disable;

Een gebruiker maken in de primaire database voor lezen/schrijven

Zodra de aanmelding is gemaakt, maakt u verbinding met de primaire lees-/schrijfreplica van uw database, bijvoorbeeld WideWorldImporters (u vindt hier een voorbeeldscript om het te herstellen: Database herstellen in Azure SQL) en maakt u een databasegebruiker voor die aanmelding:

create user [third-party-user] from login [third-party-login];

Als optionele stap kunt u, zodra de databasegebruiker is gemaakt, de serveraanmelding verwijderen die u in de vorige stap hebt gemaakt als er zich zorgen maken over het opnieuw inschakelen van de aanmelding. Verbinding maken naar de master database op de logische server die als host fungeert voor de primaire database en voer het volgende uit:

drop login [third-party-login];

Een benoemde replica maken op een andere logische server

Maak een nieuwe logische Azure SQL-server die wordt gebruikt om de toegang tot de benoemde replica te isoleren. Volg de instructies die beschikbaar zijn op Servers en individuele databases maken en beheren in Azure SQL Database. Als u een benoemde replica wilt maken, moet deze server zich in dezelfde Azure-regio bevinden als de server die als host fungeert voor de primaire replica.

Met behulp van bijvoorbeeld AZ CLI:

az sql server create -g MyResourceGroup -n MyNamedReplicaServer -l MyLocation --admin-user MyAdminUser --admin-password MyStrongADM1NPassw0rd!

Maak vervolgens een benoemde replica voor de primaire database op deze server. Bijvoorbeeld met behulp van AZ CLI:

az sql db replica create -g MyResourceGroup -n WideWorldImporters -s MyPrimaryServer --secondary-type Named --partner-database WideWorldImporters_NR --partner-server MyNamedReplicaServer

Een aanmelding maken in de hoofddatabase op de benoemde replicaserver

Verbinding maken naar de master database op de logische server die als host fungeert voor de benoemde replica, gemaakt in de vorige stap. Voeg de aanmelding toe met behulp van de SID die is opgehaald uit de primaire replica:

create login [third-party-login] with password = 'Just4STRONG_PAZzW0rd!', sid = 0x0...1234;

Op dit moment kunnen gebruikers en toepassingen verbinding maken met third-party-login bob@contoso.com de benoemde replica, maar niet met de primaire replica.

Machtigingen op objectniveau verlenen in de database

Zodra u aanmeldingsverificatie hebt ingesteld zoals beschreven, kunt u reguliere GRANTinstructies DENY REVOKE gebruiken voor het beheren van autorisatie of machtigingen op objectniveau in de database. In deze instructies verwijst u naar de naam van de gebruiker die u hebt gemaakt in de database of naar een databaserol die deze gebruiker als lid bevat. Vergeet niet deze opdrachten uit te voeren op de primaire replica. De wijzigingen worden doorgegeven aan alle secundaire replica's, maar ze zijn alleen van kracht op de benoemde replica waar de aanmelding op serverniveau is gemaakt.

Houd er rekening mee dat aan een zojuist gemaakte gebruiker standaard een minimale set machtigingen is verleend (bijvoorbeeld dat deze geen toegang heeft tot gebruikerstabellen). Als u gegevens in een tabel wilt toestaan third-party-user of bob@contoso.com lezen, moet u expliciet de SELECT machtiging verlenen:

GRANT SELECT ON [Application].[Cities] to [third-party-user];

Als alternatief voor het afzonderlijk verlenen van machtigingen voor elke tabel, kunt u de gebruiker toevoegen aan de db_datareadersdatabaserol om leestoegang tot alle tabellen toe te staan, of u kunt schema's gebruiken om toegang te verlenen tot alle bestaande en nieuwe tabellen in een schema.

Toegang testen

U kunt deze configuratie testen met behulp van elk clienthulpprogramma en verbinding maken met de primaire en de benoemde replica. U kunt bijvoorbeeld sqlcmdproberen verbinding te maken met de primaire replica met behulp van de third-party-login gebruiker:

sqlcmd -S MyPrimaryServer.database.windows.net -U third-party-login -P Just4STRONG_PAZzW0rd! -d WideWorldImporters

Dit resulteert in een fout omdat de gebruiker geen verbinding mag maken met de server:

Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'third-party-login'. Reason: The account is disabled.

De poging om verbinding te maken met de benoemde replica slaagt:

sqlcmd -S MyNamedReplicaServer.database.windows.net -U third-party-login -P Just4STRONG_PAZzW0rd! -d WideWorldImporters_NR

Er worden geen fouten geretourneerd en query's kunnen worden uitgevoerd op de benoemde replica, zoals is toegestaan door machtigingen op objectniveau.

Zie voor meer informatie