Konfigurera isolerad åtkomst till en hyperskala med namnet replik

Gäller för:Azure SQL Database

I den här artikeln beskrivs hur du beviljar åtkomst till en Azure SQL Hyperskala med namnet replik utan att ge åtkomst till den primära repliken eller andra namngivna repliker. Det här scenariot tillåter resurs- och säkerhetsisolering av en namngiven replik – eftersom den namngivna repliken körs med sin egen beräkningsnod – och det är användbart när isolerad skrivskyddad åtkomst till en Azure SQL Hyperscale-databas behövs. Isolerad innebär i det här sammanhanget att PROCESSOR och minne inte delas mellan den primära och den namngivna repliken, frågor som körs på den namngivna repliken använder inte beräkningsresurser för den primära eller andra repliker, och huvudnamn som har åtkomst till den namngivna repliken kan inte komma åt andra repliker, inklusive den primära.

Kommentar

Microsoft Entra-ID är det nya namnet för Azure Active Directory (Azure AD). Vi uppdaterar dokumentationen just nu.

Skapa en inloggning i huvuddatabasen på den primära servern

I databasen master på den logiska servern som är värd för den primära databasen kör du följande för att skapa en ny inloggning.

Använd ditt eget starka och unika lösenord.

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

Hämta sid-hexadecimalt värde för den skapade inloggningen sys.sql_logins från systemvyn:

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

Inaktivera inloggningen. Detta förhindrar att inloggningen kommer åt någon databas på servern som är värd för den primära repliken.

alter login [third-party-login] disable;

Skapa en användare i den primära skrivskyddade databasen

När inloggningen har skapats ansluter du till den primära skrivskyddade repliken av databasen, till exempel WideWorldImporters (du hittar ett exempelskript för att återställa den här: Återställa databasen i Azure SQL) och skapa en databasanvändare för inloggningen:

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

Som ett valfritt steg kan du när databasanvändaren har skapats släppa den serverinloggning som skapades i föregående steg om det finns problem med att inloggningen återaktiveras på något sätt. Anslut till master databasen på den logiska servern som är värd för den primära databasen och kör följande:

drop login [third-party-login];

Skapa en namngiven replik på en annan logisk server

Skapa en ny logisk Azure SQL-server som ska användas för att isolera åtkomsten till den namngivna repliken. Följ anvisningarna i Skapa och hantera servrar och enkla databaser i Azure SQL Database. Om du vill skapa en namngiven replik måste den här servern finnas i samma Azure-region som servern som är värd för den primära repliken.

Använd till exempel AZ CLI:

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

Skapa sedan en namngiven replik för den primära databasen på den här servern. Du kan till exempel använda AZ CLI:

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

Skapa en inloggning i huvuddatabasen på den namngivna replikservern

Anslut till master databasen på den logiska servern som är värd för den namngivna repliken, som skapades i föregående steg. Lägg till inloggningen med sid som hämtats från den primära repliken:

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

I det här läget kan användare och program som använder third-party-login eller bob@contoso.com kan ansluta till den namngivna repliken, men inte till den primära repliken.

Bevilja behörigheter på objektnivå i databasen

När du har konfigurerat inloggningsautentisering enligt beskrivningen kan du använda vanliga GRANTinstruktioner DENY och REVOKE instruktioner för att hantera auktorisering eller behörigheter på objektnivå i databasen. I dessa instruktioner refererar du till namnet på den användare som du skapade i databasen eller en databasroll som innehåller den här användaren som medlem. Kom ihåg att köra dessa kommandon på den primära repliken. Ändringarna sprids till alla sekundära repliker, men de kommer endast att gälla på den namngivna repliken där inloggningen på servernivå skapades.

Kom ihåg att som standard har en nyskapade användare en minimal uppsättning behörigheter som beviljats (till exempel kan den inte komma åt några användartabeller). Om du vill tillåta third-party-user eller bob@contoso.com läsa data i en tabell måste du uttryckligen bevilja behörigheten SELECT :

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

Som ett alternativ till att bevilja behörigheter individuellt i varje tabell kan du lägga till användaren i databasrollen db_datareadersför att tillåta läsåtkomst till alla tabeller, eller så kan du använda scheman för att tillåta åtkomst till alla befintliga och nya tabeller i ett schema.

Testa åtkomst

Du kan testa den här konfigurationen med alla klientverktyg och försöka ansluta till den primära och den namngivna repliken. Med hjälp av sqlcmdkan du till exempel försöka ansluta till den primära repliken med hjälp av third-party-login användaren:

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

Detta resulterar i ett fel eftersom användaren inte får ansluta till servern:

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

Försöket att ansluta till den namngivna repliken lyckas:

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

Inga fel returneras och frågor kan köras på den namngivna repliken enligt tillåtna behörigheter på objektnivå.

Mer information: