Använd tjänstslutpunkter och regler för virtuella nätverk för servrar i Azure SQL Database
gäller för:Azure SQL DatabaseAzure Synapse Analytics
Regler för virtuellt nätverk är en brandväggssäkerhetsfunktion som styr om servern för dina databaser och elastiska pooler i Azure SQL Database eller för dina dedikerade SQL-pooldatabaser (tidigare SQL DW) i Azure Synapse Analytics accepterar kommunikation som skickas från vissa undernät i virtuella nätverk. Den här artikeln förklarar varför regler för virtuella nätverk ibland är det bästa alternativet för att på ett säkert sätt tillåta kommunikation till databasen i SQL Database och Azure Synapse Analytics.
Not
Den här artikeln gäller både SQL Database och Azure Synapse Analytics. För enkelhetens skull refererar termen databas till både databaser i SQL Database och Azure Synapse Analytics. På samma sätt refererar alla referenser till server till den logiska servern som är värd för SQL Database och Azure Synapse Analytics.
Om du vill skapa en regel för virtuellt nätverk måste det först finnas en tjänstslutpunkt för virtuellt nätverk för regeln att referera till.
Anteckning
Microsoft Entra ID tidigare kallades Azure Active Directory (Azure AD).
Skapa en regel för virtuellt nätverk
Om du bara vill skapa en regel för virtuellt nätverk kan du gå vidare till stegen och förklaringen senare i den här artikeln.
Information om regler för virtuellt nätverk
Det här avsnittet beskriver flera detaljer om regler för virtuella nätverk.
Endast en geografisk region
Varje tjänstslutpunkt för virtuellt nätverk gäller endast för en Azure-region. Slutpunkten gör det inte möjligt för andra regioner att acceptera kommunikation från undernätet.
Alla regler för virtuella nätverk är begränsade till den region som dess underliggande slutpunkt gäller för.
Servernivå, inte databasnivå
Varje regel för virtuellt nätverk gäller för hela servern, inte bara för en viss databas på servern. Med andra ord gäller regler för virtuella nätverk på servernivå, inte på databasnivå.
IP-regler kan däremot tillämpas på båda nivåer.
Roller för säkerhetsadministration
Det finns en uppdelning av säkerhetsroller i administrationen av tjänstslutpunkter för virtuella nätverk. Åtgärden krävs från var och en av följande roller:
- Nätverksadministratör (nätverksdeltagare roll): Aktivera slutpunkten.
- Database Admin (SQL Server-deltagare roll): Uppdatera åtkomstkontrollistan (ACL) för att lägga till det angivna undernätet på servern.
Alternativ för Azure RBAC
Rollerna nätverksadministratör och databasadministratör har fler funktioner än vad som behövs för att hantera regler för virtuella nätverk. Endast en delmängd av deras funktioner behövs.
Du kan använda rollbaserad åtkomstkontroll (RBAC) i Azure för att skapa en enda anpassad roll som bara har den nödvändiga delmängden funktioner. Den anpassade rollen kan användas i stället för att involvera antingen nätverksadministratören eller databasadministratören. Säkerhetsexponeringens yta är lägre om du lägger till en användare i en anpassad roll jämfört med att lägga till användaren i de andra två större administratörsrollerna.
Not
I vissa fall finns databasen i SQL Database och undernätet för det virtuella nätverket i olika prenumerationer. I dessa fall måste du säkerställa att följande konfigurationer:
- Användaren har de behörigheter som krävs för att initiera åtgärder, till exempel att aktivera tjänstslutpunkter och lägga till ett virtuellt nätverksundernät till den angivna servern.
- Båda prenumerationerna måste ha Microsoft.Sql-providern registrerad.
Begränsningar
För SQL Database har funktionen regler för virtuella nätverk följande begränsningar:
- I brandväggen för databasen i SQL Database refererar varje regel för virtuella nätverk till ett undernät. Alla dessa refererade undernät måste finnas i samma geografiska region som är värd för databasen.
- Varje server kan ha upp till 128 ACL-poster för valfritt virtuellt nätverk.
- Regler för virtuella nätverk gäller endast för virtuella Azure Resource Manager-nätverk och inte för klassisk distributionsmodell nätverk.
- Om du aktiverar tjänstslutpunkter för virtuella nätverk till SQL Database kan du även aktivera slutpunkterna för Azure Database for MySQL och Azure Database for PostgreSQL. När slutpunkterna är inställda på ONkan försök att ansluta från slutpunkterna till din Azure Database for MySQL- eller Azure Database for PostgreSQL-instanser misslyckas.
- Den underliggande orsaken är att Azure Database for MySQL och Azure Database for PostgreSQL sannolikt inte har någon konfigurerad regel för virtuellt nätverk. Du måste konfigurera en regel för virtuellt nätverk för Azure Database for MySQL och Azure Database for PostgreSQL.
- Om du vill definiera brandväggsregler för virtuella nätverk på en logisk SQL-server som redan har konfigurerats med privata slutpunkter anger du Neka åtkomst till offentligt nätverk till Nej.
- I brandväggen gäller IP-adressintervall för följande nätverksobjekt, men regler för virtuella nätverk gör det inte:
- Båda prenumerationerna måste finnas i samma Microsoft Entra-klientorganisation.
Överväganden när du använder tjänstslutpunkter
När du använder tjänstslutpunkter för SQL Database, granska följande aspekter:
- Utgående trafik till Azure SQL Databases offentliga IP-adresser krävs. Nätverkssäkerhetsgrupper (NSG:er) måste öppnas för SQL Database-IP-adresser för att tillåta anslutning. Du kan göra detta med hjälp av NSG-tjänsttaggar för SQL Database.
ExpressRoute
Om du använder ExpressRoute från dina lokaler för offentlig eller Microsoft-peering måste du identifiera de NAT IP-adresser som används. För offentlig peering använder varje ExpressRoute-krets som standard två NAT IP-adresser som tillämpas på Azure-tjänsttrafik när trafiken kommer in i Microsoft Azure-nätverkets stamnät. För Microsoft-peering tillhandahålls de NAT IP-adresser som används antingen av kunden eller av tjänstleverantören. Om du vill tillåta åtkomst till dina tjänstresurser måste du tillåta dessa offentliga IP-adresser i resursens IP-brandväggsinställning. Om du vill hitta ExpressRoute-kretsens IP-adresser för offentlig peering, öppna ett supportärende med ExpressRoute via Azure-portalen. Mer information om NAT för offentlig ExpressRoute- och Microsoft-peering finns i NAT-krav för offentliga Azure-peering-.
Om du vill tillåta kommunikation från din krets till SQL Database måste du skapa IP-nätverksregler för de offentliga IP-adresserna på din NAT.
Effekten av att använda tjänstslutpunkter för virtuellt nätverk med Azure Storage
Azure Storage har implementerat samma funktion som gör att du kan begränsa anslutningen till ditt Azure Storage-konto. Om du väljer att använda den här funktionen med ett Azure Storage-konto som SQL Database använder kan du stöta på problem. Nästa är en lista och diskussion om SQL Database- och Azure Synapse Analytics-funktioner som påverkas av detta.
Azure Synapse Analytics PolyBase- och COPY-instruktion
PolyBase och COPY-instruktionen används ofta för att läsa in data i Azure Synapse Analytics från Azure Storage-konton för datainmatning med högt dataflöde. Om Azure Storage-kontot som du läser in data från begränsar åtkomsten endast till en uppsättning virtuella nätverksundernät bryts anslutningen när du använder PolyBase och COPY-instruktionen till lagringskontot. Följ stegen i det här avsnittet för att aktivera import- och exportscenarier med COPY och PolyBase med Azure Synapse Analytics som ansluter till Azure Storage som är skyddat i ett virtuellt nätverk.
Förutsättningar
- Installera Azure PowerShell. Mer information finns i Installera Azure Az PowerShell-modulen.
- Om du har ett v1- eller Azure Blob Storage-konto för generell användning måste du först uppgradera till generell användning v2 genom att följa stegen i Uppgradera till ett allmänt v2-lagringskonto.
- Du måste ha Tillåt betrodda Microsoft-tjänster att komma åt det här lagringskontot aktiverad under Azure Storage-kontot i inställningsmenyn för brandväggar och virtuella nätverk. Om du aktiverar den här konfigurationen kan PolyBase och COPY-instruktionen ansluta till lagringskontot med hjälp av stark autentisering där nätverkstrafiken finns kvar i Azure-stamnätet. Mer information finns i den här guiden.
Viktig
Modulen för PowerShell Azure Resource Manager (AzureRM) blev föråldrad den 29 februari 2024. All framtida utveckling bör använda Az.Sql-modulen. Användare rekommenderas att migrera från AzureRM till Az PowerShell-modulen för att säkerställa fortsatt support och uppdateringar. AzureRM-modulen underhålls inte längre eller stöds inte längre. Argumenten för kommandona i Az PowerShell-modulen och i AzureRM-modulerna är i stort sätt identiska. Mer information om deras kompatibilitet finns i Introduktion till den nya Az PowerShell-modulen.
Steg
Om du har en fristående dedikerad SQL-pool (tidigare SQL DW) registrerar du DIN SQL-server med Microsoft Entra-ID med hjälp av PowerShell:
Connect-AzAccount Select-AzSubscription -SubscriptionId <subscriptionId> Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-SQL-servername -AssignIdentity
Det här steget krävs inte för de dedikerade SQL-poolerna i en Azure Synapse Analytics-arbetsyta. Den systemtilldelade hanterade identitet (SA-MI) för arbetsytan är medlem i Synapse-administratörsrollen och har därmed förhöjda behörigheter på arbetsytans dedikerade SQL-pooler.
Skapa ett allmänt v2-lagringskonto genom att följa stegen i Skapa ett lagringskonto.
- Om du har ett v1- eller Blob Storage-konto för allmänt bruk måste du först uppgradera till v2 genom att följa stegen i Uppgradera till ett allmänt v2-lagringskonto.
- Kända problem med Azure Data Lake Storage Gen2 finns i Kända problem med Azure Data Lake Storage Gen2.
På lagringskontosidan väljer du Åtkomstkontroll (IAM).
Välj Lägg till>Lägg till rolltilldelning för att öppna sidan Lägg till rolltilldelning.
Tilldela följande roll. Detaljerade steg finns i Tilldela Azure-roller med hjälp av Azure-portalen.
Inställning Värde Roll Storage Blob Data-deltagare Tilldela åtkomst till Användaren, gruppen eller tjänstens huvudnamn Medlemmar Server eller arbetsyta som är värd för din dedikerade SQL-pool som du har registrerat med Microsoft Entra-ID Not
Endast medlemmar med ägarbehörighet på lagringskontot kan utföra det här steget. För olika inbyggda Azure-roller, se Azure-roller.
Så här aktiverar du PolyBase-anslutning till Azure Storage-kontot:
Skapa en databas huvudnyckel om du inte har skapat en tidigare.
CREATE MASTER KEY [ENCRYPTION BY PASSWORD = 'somepassword'];
Skapa en databasomfattande autentiseringsuppgift med IDENTITY = "Hanterad tjänstidentitet".
CREATE DATABASE SCOPED CREDENTIAL msi_cred WITH IDENTITY = 'Managed Service Identity';
Du behöver inte ange SECRET med en åtkomstnyckel för Azure Storage eftersom den här mekanismen använder Hanterad Identitet i bakgrunden. Det här steget krävs inte för de dedikerade SQL-poolerna i en Azure Synapse Analytics-arbetsyta. Den systemtilldelade hanterade identiteten (SA-MI) för arbetsytan är medlem i Synapse-administratörsrollen och har därmed höjda rättigheter på arbetsytans dedikerade SQL-pooler.
Identitetsnamnet måste vara "Hanterad tjänstidentitet" för att PolyBase-anslutningen ska fungera med ett Azure Storage-konto som är skyddat i ett virtuellt nätverk.
Skapa en extern datakälla med
abfss://
-schemat för att ansluta till ditt allmänna v2-lagringskonto med hjälp av PolyBase.CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss WITH (TYPE = hadoop, LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net', CREDENTIAL = msi_cred);
- Om du redan har externa tabeller som är associerade med ett allmänt v1- eller Blob Storage-konto bör du först släppa de externa tabellerna. Släpp sedan motsvarande externa datakälla. Skapa sedan en extern datakälla med
abfss://
-schemat som ansluter till ett allmänt v2-lagringskonto, som tidigare visats. Återskapa sedan alla externa tabeller med hjälp av den här nya externa datakällan. Du kan använda guiden Generera och publicera skript för att skapa skript för alla externa tabeller enkelt. - Mer information om
abfss://
-schemat finns i Använda Azure Data Lake Storage Gen2-URI:n. - Mer information om T-SQL-kommandona finns i CREATE EXTERNAL DATA SOURCE.
- Om du redan har externa tabeller som är associerade med ett allmänt v1- eller Blob Storage-konto bör du först släppa de externa tabellerna. Släpp sedan motsvarande externa datakälla. Skapa sedan en extern datakälla med
Utför frågor som vanligt genom att använda externa tabeller.
GRANSKNING av SQL Database-blob
Azure SQL-granskning kan skriva SQL-granskningsloggar till ditt eget lagringskonto. Om det här lagringskontot använder funktionen för tjänstslutpunkter för virtuellt nätverk kan du se hur du kan skriva en granskning till ett lagringskonto som ligger bakom VNet och brandvägg.
Lägga till en brandväggsregel för virtuellt nätverk på servern
För länge sedan, innan den här funktionen förbättrades, var du skyldig att aktivera tjänstslutpunkter för virtuella nätverk innan du kunde implementera en regel för virtuellt nätverk i brandväggen. Slutpunkterna relaterade ett visst virtuellt nätverksundernät till en databas i SQL Database. Från och med januari 2018 kan du kringgå det här kravet genom att ange flaggan IgnoreMissingVNetServiceEndpoint. Nu kan du lägga till en brandväggsregel för virtuellt nätverk till servern utan att aktivera tjänstslutpunkter för virtuella nätverk.
Att bara ange en brandväggsregel hjälper inte till att skydda servern. Du måste också aktivera tjänstslutpunkter för virtuella nätverk för att säkerheten ska börja gälla. När du aktiverar tjänstslutpunkter upplever ditt virtuella nätverksundernät driftstopp tills övergången har slutförts från inaktiverad till på. Den här stilleståndstiden gäller särskilt i samband med stora virtuella nätverk. Du kan använda flaggan IgnoreMissingVNetServiceEndpoint för att minska eller eliminera nertid under övergången.
Du kan ange flaggan IgnoreMissingVNetServiceEndpoint med hjälp av PowerShell. Mer information finns i PowerShell för att skapa en tjänstslutpunkt och regel för virtuellt nätverk för SQL Database.
Notera
Liknande instruktioner i Azure Synapse Analytics finns i IP-brandväggsregler för Azure Synapse Analytics
Använda Azure-portalen för att skapa en regel för virtuellt nätverk
Det här avsnittet visar hur du kan använda Azure-portalen för att skapa en regel för virtuellt nätverk i databasen i SQL Database. Regeln instruerar databasen att acceptera kommunikation från ett visst undernät som har taggats som en tjänstslutpunkt för virtuellt nätverk.
Not
Om du tänker lägga till en tjänstslutpunkt i brandväggsreglerna för det virtuella nätverket på servern kontrollerar du först att tjänstslutpunkter är aktiverade för undernätet.
Om tjänstslutpunkter inte är aktiverade för undernätet ber portalen dig att aktivera dem. Välj knappen Aktivera i samma fönster där du lägger till regeln.
Förutsättningar
Du måste redan ha ett undernät som har taggats med en specifik virtuell nätverkstjänstslutpunktstyp namn som är relevant för SQL-databasen.
- Det relevanta namnet på slutpunktstypen är Microsoft.Sql.
- Om det är möjligt att ditt undernät inte är taggat med typnamnet, se för att kontrollera att ditt undernät är en slutpunkt.
Steg att följa i Azure-portalen
Logga in på Azure-portalen.
Sök efter och välj SQL-servrar, och välj sedan din server. Under Securityväljer du Nätverk.
Under fliken Offentlig åtkomst kontrollerar du att Åtkomst till offentligt nätverk är inställd på Välj nätverk, annars är inställningarna för Virtuella nätverk dolda. Välj + Lägg till befintligt virtuellt nätverk i avsnittet Virtuella nätverk.
I det nya fönstret Skapa/uppdatera fyller du i rutorna med namnen på dina Azure-resurser.
Tips
Du måste inkludera rätt adressprefix för undernätet. Du hittar -adressprefixet i portalen. Gå till Alla resurser>Alla typer>Virtuella nätverk. Filtret visar dina virtuella nätverk. Välj ditt virtuella nätverk och välj sedan undernät. Kolumnen ADRESSINTERVALL har det adressprefix du behöver.
Se den resulterande regeln för virtuellt nätverk i fönstret Firewall.
Ange Tillåt att Azure-tjänster och resurser får åtkomst till den här servern till Nej.
Viktig
Om du lämnar Tillåt att Azure-tjänster och resurser får åtkomst till den här servern markerad accepterar servern kommunikation från alla undernät inom Azure-gränsen. Det är kommunikation som kommer från en av de IP-adresser som identifieras som de inom de intervall som definierats för Azure-datacenter. Att lämna kontrollen aktiverad kan vara överdriven åtkomst ur säkerhetssynpunkt. Tjänstens slutpunktsfunktion i Microsoft Azure Virtual Network i samordning med funktionen för regler för virtuella nätverk i SQL Database tillsammans kan minska din säkerhetsyta.
Välj knappen OK längst ned i fönstret.
Anteckning
Följande statusar eller tillstånd gäller för reglerna:
- Ready: Anger att den åtgärd som du initierade har slutförts.
- Misslyckades: Anger att åtgärden som du initierade misslyckades.
-
Borttagen: Gäller endast för åtgärden
Delete
och anger att regeln har tagits bort och inte längre gäller. - InProgress: Anger att åtgärden pågår. Den gamla regeln gäller medan operationen är i det här tillståndet.
Använda PowerShell för att skapa en regel för virtuellt nätverk
Ett skript kan också skapa regler för virtuella nätverk med hjälp av PowerShell-cmdleten New-AzSqlServerVirtualNetworkRule
eller az network vnet create. Mer information finns i PowerShell för att skapa en tjänstslutpunkt för virtuellt nätverk och en regel för SQL Database.
Använda REST API för att skapa en regel för virtuellt nätverk
PowerShell-cmdletar för SQL-åtgärder i virtuella nätverk anropar internt REST API:erna. Du kan anropa REST-API:erna direkt. Mer information finns i Regler för virtuellt nätverk: Åtgärder.
Felsöka felen 40914 och 40615
Anslutningsfel 40914 gäller regler för virtuella nätverk, som anges på panelen firewall i Azure-portalen.
Fel 40615 är liknande, förutom att det gäller IP-adressregler på brandväggen.
Fel 40914
Meddelandetext: "Det går inte att öppna servern "[servernamn]" som begärdes vid inloggningen. Klienten har inte behörighet att komma åt servern."
Felbeskrivning: Klienten finns i ett undernät som har serverslutpunkter för virtuellt nätverk. Men servern har ingen regel för virtuellt nätverk som ger undernätet rätt att kommunicera med databasen.
Fellösning: I panelen Brandvägg i Azure-portalen använder du kontrollen för virtuella nätverksregler för att lägga till en regel för ett virtuellt nätverk för subnätet.
Fel 40615
Meddelandetext: "Det går inte att öppna servern "{0}" som begärdes vid inloggningen. Klienten med IP-adressen{1}får inte komma åt servern."
Felbeskrivning: Klienten försöker ansluta från en IP-adress som inte har behörighet att ansluta till servern. Serverbrandväggen har ingen IP-adressregel som gör att en klient kan kommunicera från den angivna IP-adressen till databasen.
Felsökning: Ange klientens IP-adress som en IP-regel. Använd fönstret Firewall i Azure-portalen för att göra det här steget.