Oefening: Netwerktoegang beperken
Gebruikers maken verbinding met uw app-server om orders in te voeren, hun account bij te werken en vergelijkbare activiteiten uit te voeren. De app-server werkt de database op zijn beurt bij met deze wijzigingen. Omdat gebruikers persoonlijke gegevens hebben opgeslagen in de database, is het essentieel om ervoor te zorgen dat u alleen toegang vanaf vertrouwde en noodzakelijke resources toestaat. Er zijn verschillende manieren waarop u de toegang tot uw SQL-database via het netwerk kunt beheren.
Firewallregels
Azure SQL Database heeft een ingebouwde firewall waarmee netwerktoegang tot zowel de databaseserver zelf als afzonderlijke databases wordt toegestaan en geweigerd. In eerste instantie blokkeert de SQL Database-firewall alle openbare toegang tot uw Azure SQL Database. Als u toegang wilt krijgen tot een databaseserver, moet u een of meer IP-firewallregels op serverniveau opgeven waarmee toegang tot uw Azure SQL-database mogelijk wordt. U gebruikt de IP-firewallregels om op te geven welke IP-adresbereiken van internet zijn toegestaan en of Azure-toepassingen kunnen proberen verbinding te maken met uw Azure SQL-database.
Firewallregels worden geconfigureerd op server- of databaseniveau. De regels geven specifiek aan welke netwerkbronnen verbinding mogen maken met de database. Afhankelijk van het niveau zijn de regels die u kunt toepassen als volgt:
- Firewallregels op serverniveau
- Toegang tot Azure-services toestaan
- IP-adresregels
- Regels voor virtuele netwerken
- Firewallregels op databaseniveau
- IP-adresregels
Notitie
SQL Data Warehouse ondersteunt alleen IP-firewallregels op serverniveau en geen IP-firewallregels op databaseniveau.
Bekijk hoe deze regels werken.
Firewallregels op serverniveau
Deze regels zorgen ervoor dat clients toegang krijgen tot de gehele Azure SQL-server, d.w.z. tot alle databases binnen dezelfde logische server. Er zijn drie soorten regels die kunnen worden toegepast op serverniveau.
Via de regel Toegang tot Azure-services toestaan kunnen services binnen Azure verbinding maken met uw Azure SQL-database. Wanneer deze instelling is ingeschakeld, kunt u hiermee communicatie toestaan vanuit alle openbare IP-adressen op Azure. Deze communicatie omvat alle PaaS-services (Platform as a Service), zoals Azure-app Service en Azure Container Service, en Azure-VM's die uitgaande internettoegang hebben. Deze regel kan worden geconfigureerd via de optie ON/OFF in het firewall-deelvenster in de portal of met een IP-regel met 0.0.0.0 als IP-beginadres en IP-eindadres.
Deze regel wordt gebruikt wanneer u toepassingen hebt die worden uitgevoerd op PaaS-services in Azure, zoals Azure Logic Apps of Azure Functions die toegang nodig hebben tot uw Azure SQL Database. Veel van deze services hebben geen statisch IP-adres, dus deze regel zorgt ervoor dat ze verbinding kunnen maken met de database.
Belangrijk
Met deze optie configureert u de firewall zo dat alle verbindingen vanuit Azure zijn toegestaan, inclusief verbindingen vanuit de abonnementen van andere klanten. Wanneer u deze optie selecteert, moet u ervoor zorgen dat uw aanmeldings- en gebruikersmachtigingen de toegang beperken tot alleen geautoriseerde gebruikers.
IP-adresregels zijn regels die zijn gebaseerd op specifieke openbare IP-adresbereiken. IP-adressen die verbinding maken vanuit een toegestaan openbaar IP-bereik, kunnen verbinding maken met de database.
U kunt deze regels gebruiken wanneer u een statisch openbaar IP-adres hebt dat toegang nodig heeft tot uw database.
Met regels voor virtuele netwerken kunt u expliciet verbinding toestaan vanuit opgegeven subnetten in een of meer virtuele Azure-netwerken. Regels voor virtuele netwerken kunnen meer toegangsbeheer bieden voor uw databases en kunnen een voorkeursoptie zijn. Aangezien de adresruimten van het virtuele Azure-netwerk privé zijn, kunt u de blootstelling aan openbare IP-adressen effectief elimineren en de connectiviteit met die adressen die u bepaalt, beveiligen.
Gebruik regels voor virtuele netwerken wanneer u azure-VM's hebt die toegang nodig hebben tot uw database.
Voor regels op serverniveau kunnen al deze regels worden gemaakt en gemanipuleerd via de portal, PowerShell, de CLI en via Transact-SQL (T-SQL).
Firewallregels op databaseniveau
Via deze regels, die worden opgeslagen in de database zelf, krijgt u toegang tot een individuele database op een logische server. Voor regels op databaseniveau kunt u alleen IP-adresregels configureren. Deze werken op dezelfde manier als wanneer deze worden toegepast op serverniveau, maar hebben alleen betrekking op de database.
Regels op databaseniveau hebben het voordeel dat ze overdraagbaar zijn. Wanneer u een database repliceert naar een andere server, worden de regels op databaseniveau gerepliceerd, omdat ze worden opgeslagen in de database zelf.
Het nadeel van regels op databaseniveau is dat u alleen IP-adresregels kunt gebruiken. Deze regels beperken mogelijk de flexibiliteit die u hebt en kunnen de administratieve overhead verhogen.
Firewallregels op databaseniveau kunnen alleen worden gemaakt en gemanipuleerd via T-SQL.
Netwerktoegang in de praktijk beperken
Als best practice kunt u IP-firewallregels op databaseniveau gebruiken om de beveiliging te verbeteren en uw database draagbaarder te maken. Gebruik IP-firewallregels op serverniveau voor beheerders en wanneer u meerdere databases met dezelfde toegangsvereisten hebt, zodat u niet elke database afzonderlijk wilt configureren.
Bekijk hoe deze regels in de praktijk werken en hoe u netwerktoegang kunt beveiligen om alleen toe te staan wat nodig is. U herinnert zich nog dat u een logische Azure SQL Database-server, een database en de Linux-VM appServer hebt gemaakt die fungeert als een toepassingsserver. Dit scenario wordt vaak aangetroffen wanneer een database is gemigreerd naar Azure SQL Database en resources binnen een virtueel netwerk toegang ertoe moeten krijgen. De firewallfunctie van Azure SQL Database kan in veel scenario's worden gebruikt, maar dit voorbeeld heeft praktische toepasbaarheid en laat zien hoe elk van de regels functioneert.
Doorloop de firewallinstellingen en bekijk hoe ze werken. U gebruikt zowel de portal als Cloud Shell voor deze oefeningen.
De database die u hebt gemaakt, staat momenteel geen toegang toe vanuit verbindingen. Deze beperkte toegang is standaard en is gebaseerd op de opdrachten die u hebt uitgevoerd om de logische server en database te maken. Controleer of er geen toegang is.
SSH in Cloud Shell naar uw Virtuele Linux-machine als u nog niet bent verbonden. Vervang
nnn.nnn.nnn.nnn
door de waarde uit depublicIpAddress
vorige les.ssh nnn.nnn.nnn.nnn
Voer de
sqlcmd
opdracht die u eerder hebt opgehaald opnieuw uit om verbinding te maken met de database. Vervang[server-name]
door de naam van uw server. Vervang[username]
en[password]
door deADMINUSER
referenties die u in de vorige les hebt opgegeven. Behoud de enkele aanhalingstekens rond de gebruikersnaam en het wachtwoord, zodat de shell geen speciale tekens verkeerd interpreteert.sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Er wordt een foutbericht weergegeven dat lijkt op de volgende uitvoer wanneer u verbinding probeert te maken. Deze uitvoer wordt verwacht omdat de toegang tot de database niet is toegestaan.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired. Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2AF9. Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible.Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
Toegang verlenen zodat u verbinding kunt maken.
Gebruik de regel op serverniveau om toegang tot Azure-services toe te staan
Omdat uw VIRTUELE machine uitgaande internettoegang heeft, kunt u de regel Toegang tot Azure-services toestaan gebruiken om toegang vanaf uw VIRTUELE machine toe te staan.
Meld u aan bij Azure Portal met hetzelfde account waarmee u de sandbox hebt geactiveerd.
Zoek in het vak Resources, services en documenten bovenaan naar de naam van databaseserver,
server-name
. Selecteer de SQL-server.Selecteer Netwerken in het deelvenster SQL Server in het linkermenuvenster onder Beveiliging.
Schuif omlaag naar Uitzonderingen, schakel het selectievakje in voor Toestaan dat Azure-services en -resources toegang hebben tot deze server en selecteer Vervolgens Opslaan. Wacht totdat het systeem deze wijziging bevestigt.
Probeer opnieuw verbinding te maken met uw database in uw SSH-sessie.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Op dit moment zou het mogelijk moet zijn om verbinding te maken. Als dit is gelukt, ziet u een sqlcmd-prompt.
1>
U hebt connectiviteit geopend, maar deze instelling staat momenteel toegang toe vanuit elke Azure-resource, inclusief resources buiten uw abonnement. Beperk deze toegang verder om de netwerktoegang te beperken tot alleen resources die zich binnen uw beheer bevinden.
Een IP-adresregel op databaseniveau gebruiken
U weet nog dat via IP-adresregels alleen toegang mogelijk is tot een individuele database op een logische server. Gebruik er hier een om toegang te verlenen tot het statische IP-adres van uw appServer-VM .
Als u een IP-regel op databaseniveau wilt maken, moet u enkele T-SQL-opdrachten uitvoeren. Maak een databaseregel met behulp van de volgende conventie, waarbij u de regelnaam, het begin-IP-adres en het eind-IP-adres doorgeeft. Door de begin- en eind-IP-adressen op te geven die hetzelfde moeten zijn, beperkt u de toegang tot één IP-adres. U kunt het bereik uitbreiden als u een groter aantal adressen hebt waarvoor toegang is vereist.
EXECUTE sp_set_database_firewall_rule N'My Firewall Rule', '40.112.128.214', '40.112.128.214'
Voer tijdens de sqlcmd-prompt de volgende opdracht uit. Vervang het openbare IP-adres van uw appServer-VM op beide locaties.
Tip
Wanneer u T-SQL-opdrachten zoals de volgende uitvoert, wordt de
GO
tweede regel mogelijk niet gekopieerd naar desqlcmd
prompt. Mogelijk moet u dit deel uit typen. De T-SQL-opdracht wordt niet uitgevoerd zonder deze opdracht, dus zorg ervoor dat u deGO
opdracht uitvoert.EXECUTE sp_set_database_firewall_rule N'My Firewall Rule', '[From IP Address]', '[To IP Address]'; GO
Nadat de opdracht is voltooid, voert
exit
u sqlcmd uit. Blijf verbonden via SSH.Schakel in Azure Portal in het deelvenster Netwerken voor uw SQL-server de selectie van Azure-services en -resources voor toegang tot deze server uit en selecteer Opslaan. Met deze wijziging wordt de toegang vanuit alle Azure-services uitgeschakeld, maar u kunt verbinding maken omdat u een IP-regel op databaseniveau voor uw server hebt.
Probeer opnieuw verbinding te maken met uw database in de VM waarmee u bent verbonden via SSH in Cloud Shell.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Op dit moment zou het mogelijk moet zijn om verbinding te maken. Als dit lukt, ziet u een sqlcmd-prompt.
1>
Met behulp van een regel op databaseniveau kan toegang specifiek tot de database worden geïsoleerd. Deze regel kan handig zijn als u de netwerktoegang per database wilt configureren. Als meerdere databases dezelfde mate van netwerktoegang delen, kunt u het beheer vereenvoudigen met behulp van een regel op serverniveau, waarmee dezelfde toegangsvoorwaarden van toepassing zijn op alle databases op de server.
Een IP-adresregel op serverniveau gebruiken
Regels op databaseniveau zijn een uitstekende optie, maar wat als u meerdere databases op dezelfde server hebt waarmee uw appServer-VM verbinding moet maken? U kunt een regel op databaseniveau toevoegen aan elke database, maar het kan meer werk duren wanneer u meer databases toevoegt. Om uw beheerinspanningen te verminderen, staat u toegang toe met een regel op serverniveau, die van toepassing is op alle databases op de server.
Gebruik een IP-regel op serverniveau om de systemen te beperken die verbinding kunnen maken.
Voer, terwijl u zich nog steeds bij de sqlcmd-prompt bevindt, de volgende opdracht uit om de IP-adresregel op databaseniveau te verwijderen.
EXECUTE sp_delete_database_firewall_rule N'My Firewall Rule'; GO
Nadat de opdracht is voltooid, voert
exit
u sqlcmd uit. Blijf verbonden via SSH.Ga terug in Azure Portal naar het deelvenster Netwerken voor uw SQL-server en selecteer onder Firewallregels een firewallregel toevoegen. Noem de regel AppServer toestaan, voer het openbare IP-adres van de appServer-VM in voor het begin-IP- en eind-IP-adres en selecteer VERVOLGENS OK.
Selecteer Opslaan.
Probeer in Cloud Shell op uw appServer-VM opnieuw verbinding te maken met uw database.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Op dit moment zou het mogelijk moet zijn om verbinding te maken. De regel op serverniveau staat toegang toe op basis van het openbare IP-adres van de APPServer-VM . Als dit is gelukt, ziet u een sqlcmd-prompt.
1>
Voer
exit
in om sqlcmd af te sluiten. Blijf verbonden via SSH.
U hebt alleen een geïsoleerde verbinding met het IP-adres dat u in de regel hebt opgegeven. Deze isolatie werkt prima, maar kan nog steeds een administratieve uitdaging zijn wanneer u meer systemen toevoegt die verbinding moeten maken. Het vereist ook een statisch IP- of IP-adres uit een gedefinieerd IP-adresbereik.
Als het IP-adres dynamisch is en verandert, moet u de regel bijwerken om de connectiviteit te garanderen. De VM appServer is momenteel geconfigureerd met een dynamisch IP-adres. Dit IP-adres verandert waarschijnlijk op een bepaald moment, waardoor uw toegang wordt onderbroken zodra dat gebeurt. Bekijk nu hoe regels voor virtuele netwerken nuttig kunnen zijn in uw configuratie.
Een virtueel-netwerkregel op serverniveau gebruiken
In dit geval kunt u, omdat uw virtuele machine wordt uitgevoerd in Azure, een regel voor virtuele netwerken op serverniveau gebruiken om de toegang te isoleren en het eenvoudig maken om toekomstige services toegang te geven tot de database.
Terug in Azure Portal en nog steeds in het deelvenster Netwerken selecteert u onder Virtuele netwerken de optie Een regel voor een virtueel netwerk toevoegen.
Het dialoogvenster Regel voor virtuele netwerken maken/bijwerken wordt weergegeven. Stel de volgende waarden in.
Instelling Weergegeven als Naam Laat de standaardwaarde staan Abonnement Concierge-abonnement Virtueel netwerk appServerVNET Subnetnaam / adresvoorvoegsel appServerSubnet / 10.0.0.0/24 Selecteer Inschakelen om het service-eindpunt op het subnet in te schakelen en selecteer vervolgens OK nadat het eindpunt is ingeschakeld om de regel te maken.
Verwijder de IP-adresregel. Selecteer de ... naast de regel AppServer toestaan, selecteer Verwijderen en selecteer Vervolgens Opslaan.
Probeer in Cloud Shell op uw appServer-VM opnieuw verbinding te maken met uw database.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Op dit moment zou het mogelijk moet zijn om verbinding te maken. Als dit lukt, ziet u een sqlcmd-prompt.
1>
Wat u hier hebt gedaan, verwijdert alle openbare toegang tot de SQL-server. Het biedt alleen toegang vanaf het specifieke subnet in het virtuele Azure-netwerk dat u hebt gedefinieerd. Als u meer app-servers in dat subnet toevoegt, is er geen extra configuratie nodig. Elke server in dat subnet heeft de mogelijkheid om verbinding te maken met de SQL-server.
Deze configuratie beperkt uw blootstelling aan services buiten uw beheerbereik en vereenvoudigt het beheer als u meer servers toevoegt. Deze methode is effectief voor het beveiligen van netwerktoegang tot een Azure SQL Database.