Implementer en Azure SQL Database-firewall
Når du opretter en ny server i Azure SQL Database eller Azure Synapse Analytics med navnet mysqlserver, blokerer en firewall på serverniveau f.eks. al adgang til serverens offentlige slutpunkt (som er tilgængeligt på mysqlserver.database.windows.net). For nemheds skyld bruges SQL Database til at referere til både SQL Database og Azure Synapse Analytics. Denne artikel gælder ikke for Azure SQL Managed Instance. Du kan få mere at vide om netværkskonfiguration under Opret forbindelse mellem dit program og Azure SQL Managed Instance.
Sådan fungerer firewallen
Forbindelsesforsøg fra internettet og Azure skal passere gennem firewallen, før de når din server eller database, som vist i følgende diagram.
Vigtig
Azure Synapse understøtter kun ip-firewallregler på serverniveau. Det understøtter ikke ip-firewallregler på databaseniveau.
Ip-firewallregler på serverniveau
Disse regler gør det muligt for klienter at få adgang til hele serveren, dvs. alle de databaser, der administreres af serveren. Reglerne gemmes i masterdatabasen . Det maksimale antal ip-firewallregler på serverniveau er begrænset til 256 for en server. Hvis du har aktiveret indstillingen Tillad, at Azure Services og ressourcer har adgang til denne server, tæller dette som en enkelt firewallregel for serveren.
Du kan konfigurere ip-firewallregler på serverniveau ved hjælp af Azure Portal-, PowerShell- eller Transact-SQL-sætninger.
Seddel
Det maksimale antal IP-firewallregler på serverniveau er begrænset til 256, når du konfigurerer ved hjælp af Azure Portal.
- Hvis du vil bruge portalen eller PowerShell, skal du være abonnementsejer eller abonnementsbidragyder.
- Hvis du vil bruge Transact-SQL, skal du oprette forbindelse til masterdatabasen som hovedlogon på serverniveau eller som Microsoft Entra-administrator. En ip-firewallregel på serverniveau skal først oprettes af en bruger, der har tilladelser på Azure-niveau.
Seddel
Under oprettelsen af en ny logisk SQL-server fra Azure Portal er indstillingen Tillad, at Azure Services og ressourcer får adgang til denne server som standard angivet til Nej.
Ip-firewallregler på databaseniveau
Firewallregler på databaseniveau gør det muligt for klienter at få adgang til visse (sikre) databaser. Du opretter reglerne for hver database (herunder masterdatabasen ), og de gemmes i den enkelte database.
- Du kan kun oprette og administrere IP-firewallregler på databaseniveau for master- og brugerdatabaser ved hjælp af Transact-SQL-sætninger og først, når du har konfigureret den første firewall på serverniveau.
- Hvis du angiver et IP-adresseområde i firewallreglen på databaseniveau, der er uden for området i reglen for IP-firewall på serverniveau, er det kun de klienter, der har IP-adresser i området på databaseniveau, der kan få adgang til databasen.
- Standardværdien er op til 256 IP-firewallregler på databaseniveau for en database. Du kan få flere oplysninger om konfiguration af IP-firewallregler på databaseniveau i eksemplet senere i denne artikel og se sp_set_database_firewall_rule (Azure SQL Database).
Anbefalinger til, hvordan du angiver firewallregler
Vi anbefaler, at du bruger IP-firewallregler på databaseniveau, når det er muligt. Denne praksis forbedrer sikkerheden og gør databasen mere bærbar. Brug ip-firewallregler på serverniveau til administratorer. Brug dem også, når du har mange databaser, der har de samme adgangskrav, og du ikke vil konfigurere hver enkelt database individuelt.
Seddel
Du kan få oplysninger om bærbare databaser i forbindelse med forretningskontinuitet under Godkendelseskrav til it-katastrofeberedskab.
Serverniveau i forhold til ip-firewallregler på databaseniveau
Skal brugere af én database være fuldt isoleret fra en anden database?
Hvis ja, kan du bruge ip-firewallregler på databaseniveau til at give adgang. Denne metode undgår at bruge ip-firewallregler på serverniveau, som tillader adgang via firewallen til alle databaser. Det ville reducere dybden af dit forsvar.
Skal brugere på IP-adresserne have adgang til alle databaser?
Hvis ja, kan du bruge ip-firewallregler på serverniveau til at reducere det antal gange, du skal konfigurere IP-firewallregler.
Har den person eller det team, der konfigurerer IP-firewallreglerne, kun adgang via Azure Portal, PowerShell eller REST-API'en?
Hvis det er tilfældet, skal du bruge ip-firewallregler på serverniveau. Ip-firewallregler på databaseniveau kan kun konfigureres via Transact-SQL.
Er det forbudt for den person eller det team, der konfigurerer IP-firewallreglerne, at have tilladelse på højt niveau på databaseniveau?
Hvis det er tilfældet, skal du bruge ip-firewallregler på serverniveau. Du skal som minimum have tilladelsen CONTROL DATABASE på databaseniveau for at konfigurere IP-firewallregler på databaseniveau via Transact-SQL.
Administrerer den person eller det team, der konfigurerer eller overvåger IP-firewallreglerne, ip-firewallregler centralt for mange (måske hundredvis) databaser?
I dette scenarie bestemmes de bedste fremgangsmåder af dine behov og dit miljø. Det kan være nemmere at konfigurere ip-firewallregler på serverniveau, men scripting kan konfigurere regler på databaseniveau. Og selvom du bruger ip-firewallregler på serverniveau, skal du muligvis overvåge firewallregler på databaseniveau for at se, om brugere med kontroltilladelse til databasen opretter ip-firewallregler på databaseniveau.
Kan jeg bruge en blanding af firewallregler på serverniveau og databaseniveau?
Ja. Nogle brugere, f.eks. administratorer, har muligvis brug for ip-firewallregler på serverniveau. Andre brugere, f.eks. brugere af et databaseprogram, har muligvis brug for ip-firewallregler på databaseniveau.
Forbindelser fra internettet
Når en computer forsøger at oprette forbindelse til din server fra internettet, kontrollerer firewallen først anmodningens oprindelige IP-adresse i forhold til firewallreglerne på databaseniveau for den database, som forbindelsen anmoder om.
- Hvis adressen er inden for et område, der er angivet i ip-firewallreglerne på databaseniveau, tildeles forbindelsen til den database, der indeholder reglen.
- Hvis adressen ikke er inden for et område i firewallreglerne for IP-firewall på databaseniveau, kontrollerer firewallen reglerne for IP-firewall på serverniveau. Hvis adressen er inden for et område, der er i ip-firewallreglerne på serverniveau, tildeles forbindelsen. Ip-firewallregler på serverniveau gælder for alle databaser, der administreres af serveren.
- Hvis adressen ikke er inden for et område, der er i nogen af ip-firewallreglerne på databaseniveau eller serverniveau, mislykkes forbindelsesanmodningen.
Seddel
Hvis du vil have adgang til Azure SQL Database fra din lokale computer, skal du sørge for, at firewallen på dit netværk og den lokale computer tillader udgående kommunikation på TCP-port 1433.
Forbindelser inde fra Azure
Azure-forbindelser skal være aktiveret for at gøre det muligt for programmer, der hostes i Azure, at oprette forbindelse til sql-serveren. Hvis du vil aktivere Azure-forbindelser, skal der være en firewallregel, hvor START- og slut-IP-adresser er angivet til 0.0.0.0. Denne anbefalede regel gælder kun for Azure SQL Database.
Når et program fra Azure forsøger at oprette forbindelse til serveren, kontrollerer firewallen, at Azure-forbindelser er tilladt, ved at bekræfte, at denne firewallregel findes. Dette kan aktiveres direkte fra ruden Azure Portal ved at skifte til Tillad, at Azure Services og ressourcer får adgang til denne server til Slået til i indstillingerne for Firewalls og virtuelle netværk. Hvis du skifter indstillingen til ON, oprettes der en indgående firewallregel for IP 0.0.0.0 - 0.0.0.0 med navnet AllowAllWindowsAzureIps. Reglen kan vises i masterdatabasen sys.firewall_rules visning. Brug PowerShell eller Azure CLI til at oprette en firewallregel med start- og slut-IP-adresser, der er angivet til 0.0.0.0, hvis du ikke bruger portalen.
Vigtig
Denne indstilling konfigurerer firewallen til at tillade alle forbindelser fra Azure, herunder forbindelser fra andre kunders abonnementer. Hvis du vælger denne indstilling, skal du sørge for, at dit logon og dine brugertilladelser begrænser adgangen til godkendte brugere.
Tilladelser
Hvis du vil kunne oprette og administrere IP-firewallregler for Azure SQL Server, skal du enten være:
- i rollen SQL Server Contributor
- i rollen SQL Security Manager
- ejeren af den ressource, der indeholder Azure SQL Server
Opret og administrer IP-firewallregler
Du opretter den første firewallindstilling på serverniveau ved hjælp af Azure Portal eller ved hjælp af azure PowerShell, Azure CLI eller en Azure REST API. Du kan oprette og administrere yderligere ip-firewallregler på serverniveau ved hjælp af disse metoder eller Transact-SQL.
Vigtig
Ip-firewallregler på databaseniveau kan kun oprettes og administreres ved hjælp af Transact-SQL.
For at forbedre ydeevnen cachelagres IP-firewallregler på serverniveau midlertidigt på databaseniveau. Hvis du vil opdatere cachen, skal du se DBCC FLUSHAUTHCACHE.
Drikkepenge
Du kan bruge Databaserevision til at overvåge firewallændringer på serverniveau og databaseniveau.
Brug Azure Portal til at administrere ip-firewallregler på serverniveau
Hvis du vil angive en IP-firewallregel på serverniveau på Azure Portal, skal du gå til oversigtssiden for din database eller din server.
Drikkepenge
Du kan se et selvstudium under Opret en database ved hjælp af Azure Portal.
Fra siden med databaseoversigten
Hvis du vil angive en IP-firewallregel på serverniveau fra siden med databaseoversigten, skal du vælge Angiv serverfirewall på værktøjslinjen, som vist på følgende billede.
Siden Netværk for serveren åbnes.
Tilføj en regel i afsnittet Firewallregler for at tilføje IP-adressen på den computer, du bruger, og vælg derefter Gem. Der oprettes en ip-firewallregel på serverniveau for din aktuelle IP-adresse.
Fra siden med serveroversigten
Oversigtssiden for serveren åbnes. Det viser det fuldt kvalificerede servernavn (f.eks . mynewserver20170403.database.windows.net) og giver mulighed for yderligere konfiguration.
- Hvis du vil angive en regel på serverniveau fra denne side, skal du vælge Netværk i menuen Indstillinger i venstre side.
- Tilføj en regel i afsnittet Firewallregler for at tilføje IP-adressen på den computer, du bruger, og vælg derefter Gem. Der oprettes en ip-firewallregel på serverniveau for din aktuelle IP-adresse.
Brug Transact-SQL til at administrere IP-firewallregler
Udvid tabel
| Katalogvisning eller lagret procedure | Niveau | beskrivelse |
|---|---|---|
| sys.firewall_rules | Server | Viser de aktuelle IP-firewallregler på serverniveau |
| sp_set_firewall_rule | Server | Opretter eller opdaterer ip-firewallregler på serverniveau |
| sp_delete_firewall_rule | Server | Fjerner ip-firewallregler på serverniveau |
| sys.database_firewall_rules | Database | Viser de aktuelle IP-firewallregler på databaseniveau |
| sp_set_database_firewall_rule | Database | Opretter eller opdaterer ip-firewallreglerne på databaseniveau |
| sp_delete_database_firewall_rule | Databaser | Fjerner ip-firewallregler på databaseniveau |
I følgende eksempel gennemgås de eksisterende regler, der aktiveres en række IP-adresser på serveren Contoso, og en IP-firewallregel slettes:
SQL
SELECT * FROM sys.firewall_rules ORDER BY name;
Tilføj derefter en ip-firewallregel på serverniveau.
SQL
SELECT * FROM sys.firewall_rules ORDER BY name;
EXECUTE sp_set_firewall_rule @name = N'ContosoFirewallRule',
@start_ip_address = '192.168.1.1', @end\_ip\_address = '192.168.1.10'
Hvis du vil slette en IP-firewallregel på serverniveau, skal du udføre den sp_delete_firewall_rule lagrede procedure. I følgende eksempel slettes reglen ContosoFirewallRule:
SQL
EXECUTE sp_delete_firewall_rule @name = N'ContosoFirewallRule'
Brug PowerShell til at administrere ip-firewallregler på serverniveau
Seddel
I dette eksempel bruges Azure Az PowerShell-modulet, som er det anbefalede PowerShell-modul til interaktion med Azure. Hvis du vil i gang med Az PowerShell-modulet, skal du se Installér Azure PowerShell. Hvis du vil vide mere om, hvordan du migrerer til Az PowerShell-modulet, skal du se Overfør Azure PowerShell fra AzureRM til Az.
Vigtig
Modulet PowerShell Azure Resource Manager (AzureRM) frarådes den 29. februar 2024. Al fremtidig udvikling skal bruge Az.Sql-modulet. Brugerne rådes til at migrere fra AzureRM til Az PowerShell-modulet for at sikre fortsat support og opdateringer. AzureRM-modulet vedligeholdes eller understøttes ikke længere. Argumenterne for kommandoerne i Az PowerShell-modulet og i AzureRM-modulerne er stort set identiske. Du kan få mere at vide om deres kompatibilitet under Introduktion til det nye Az PowerShell-modul.
Udvid tabel
| Cmdlet- | Niveau | beskrivelse |
|---|---|---|
| Get-AzSqlServerFirewallRule | Server | Returnerer de aktuelle firewallregler på serverniveau |
| New-AzSqlServerFirewallRule | Server | Opretter en ny firewallregel på serverniveau |
| Set-AzSqlServerFirewallRule | Server | Opdaterer egenskaberne for en eksisterende firewallregel på serverniveau |
| Remove-AzSqlServerFirewallRule | Server | Fjerner firewallregler på serverniveau |
I følgende eksempel bruges PowerShell til at angive en ip-firewallregel på serverniveau:
PowerShell
New-AzSqlServerFirewallRule -ResourceGroupName "myResourceGroup" `-ServerName $servername `-FirewallRuleName "ContosoIPRange" -StartIpAddress "192.168.1.0" -EndIpAddress "192.168.1.255"
Drikkepenge
For $servername skal du angive servernavnet og ikke det fuldt kvalificerede DNS-navn, f.eks. angive mysqldbserver i stedet for mysqldbserver.database.windows.net. Hvis du vil have PowerShell-eksempler i forbindelse med en hurtig start, skal du se Opret DB – PowerShell og Opret en enkelt database og konfigurer en ip-firewallregel på serverniveau ved hjælp af PowerShell.
Brug kommandolinjegrænsefladen til at administrere ip-firewallregler på serverniveau
Udvid tabel
| Cmdlet- | Niveau | beskrivelse |
|---|---|---|
| az sql Server firewall-rule create | Server | Opretter en server-IP-firewallregel |
| az sql Server firewall-rule list | Server | Viser IP-firewallreglerne på en server |
| az sql server firewall-rule show | Server | Viser detaljerne for en IP-firewallregel |
| az sql Server-opdatering af firewallregel | Server | Opdaterer en IP-firewallregel |
| az sql Server firewall-rule delete | Server | Sletter en IP-firewallregel |
I følgende eksempel bruges kommandolinjegrænsefladen til at angive en ip-firewallregel på serverniveau:
Azure CLI
az sql server firewall-rule create --resource-group myResourceGroup --server $servername \-n ContosoIPRange --start-ip-address 192.168.1.0 --end-ip-address 192.168.1.255">">
Drikkepenge
For $servername skal du angive servernavnet og ikke det fuldt kvalificerede DNS-navn. Brug f.eks. mysqldbserver i stedet for mysqldbserver.database.windows.net. Hvis du vil se et eksempel på kommandolinjegrænsefladen i forbindelse med en hurtig start, skal du se Opret DB – Azure CLI og Opret en enkelt database og konfigurere en ip-firewallregel på serverniveau ved hjælp af Kommandolinjegrænsefladen i Azure. Se følgende eksempler for Azure Synapse Analytics:
Udvid tabel
| Cmdlet- | Niveau | beskrivelse |
|---|---|---|
| az synapse oprettelse af firewallregel for arbejdsområde | Server | Opret en firewallregel |
| az synapse slette firewallregel for arbejdsområde | Server | Slet en firewallregel |
| az synapse liste over firewallregel for arbejdsområde | Server | Vis alle firewallregler |
| az synapse firewall-rule show for arbejdsområde | Server | Hent en firewallregel |
| az synapse opdatering af firewallregel for arbejdsområde | Server | Opdater en firewallregel |
| az synapse firewallregel for arbejdsområde | Server | Placer kommandolinjegrænsefladen i ventetilstand, indtil en betingelse for en firewallregel er opfyldt |
I følgende eksempel bruges kommandolinjegrænsefladen til at angive en ip-firewallregel på serverniveau i Azure Synapse:
Azure CLI
az synapse workspace firewall-rule create --name AllowAllWindowsAzureIps --workspace-name $workspacename --resource-group $resourcegroupname --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0
Brug en REST API til at administrere ip-firewallregler på serverniveau
Udvid tabel
| API- | Niveau | beskrivelse |
|---|---|---|
| Vis firewallregler | Server | Viser de aktuelle IP-firewallregler på serverniveau |
| Opret eller opdater firewallregler | Server | Opretter eller opdaterer ip-firewallregler på serverniveau |
| Slet firewallregler | Server | Fjerner ip-firewallregler på serverniveau |
| Hent firewallregler | Server | Henter ip-firewallregler på serverniveau |
Foretag fejlfinding af databasefirewallen
Overvej følgende punkter, når adgangen til Azure SQL Database ikke fungerer som forventet.
Lokal firewallkonfiguration: Før computeren kan få adgang til Azure SQL Database, skal du muligvis oprette en firewallundtagelse på computeren for TCP-port 1433. Hvis du vil oprette forbindelser inden for Azure-cloudgrænsen, skal du muligvis åbne flere porte. Du kan få flere oplysninger i afsnittet "SQL Database: Outside vs inside" i Ports beyond 1433 for ADO.NET 4.5 og Azure SQL Database.
Oversættelse af netværksadresse: På grund af NAT (Network Address Translation) kan den IP-adresse, der bruges af computeren til at oprette forbindelse til Azure SQL Database, være anderledes end IP-adressen i computerens IP-konfigurationsindstillinger. Sådan får du vist den IP-adresse, som computeren bruger til at oprette forbindelse til Azure:
- Log på portalen.
- Gå til fanen Konfigurer på den server, der er vært for databasen.
- Den aktuelle klients IP-adresse vises i afsnittet Tilladte IP-adresser. Vælg Tilføj for Tilladte IP-adresser for at give denne computer adgang til serveren.
Ændringer af listen over tilladte er endnu ikke trådt i kraft: Der kan være en forsinkelse på op til fem minutter, før ændringerne af Azure SQL Database-firewallkonfigurationen træder i kraft.
Logon er ikke godkendt, eller der blev brugt en forkert adgangskode: Hvis et logon ikke har tilladelser på serveren, eller adgangskoden er forkert, afvises forbindelsen til serveren. Oprettelse af en firewallindstilling giver kun klienter mulighed for at prøve at oprette forbindelse til serveren. Klienten skal stadig angive de nødvendige sikkerhedslegitimationsoplysninger. Du kan få flere oplysninger om forberedelse af logon under Styring og tildeling af databaseadgang.
Dynamisk IP-adresse: Hvis du har en internetforbindelse, der bruger dynamisk IP-adresse, og du har problemer med at komme gennem firewallen, kan du prøve en af følgende løsninger:
- Spørg internetudbyderen om det IP-adresseområde, der er tildelt de klientcomputere, der har adgang til serveren. Tilføj dette IP-adresseområde som en IP-firewallregel.
- Hent statisk IP-adresse i stedet for dine klientcomputere. Tilføj IP-adresserne som IP-firewallregler.