Cvičení – omezení síťového přístupu
Uživatelé se připojují k aplikačnímu serveru a zadávají objednávky, aktualizují svůj účet a provádějí podobné aktivity. Aplikační server zase aktualizuje databázi těmito změnami. Protože uživatelé mají osobní údaje uložené v databázi, je důležité zajistit, abyste povolili přístup jenom z důvěryhodných a nezbytných prostředků. Existuje několik způsobů, jak řídit přístup k databázi SQL přes síť.
Pravidla brány firewall
Azure SQL Database má integrovanou bránu firewall, která umožňuje a zakazuje síťový přístup k samotnému databázovému serveru i jednotlivým databázím. Brána firewall služby SQL Database zpočátku blokuje veškerý veřejný přístup ke službě Azure SQL Database. Pokud chcete získat přístup k databázovému serveru, musíte zadat minimálně jedno pravidlo brány firewall protokolu IP na úrovni serveru, které povolí přístup ke službě Azure SQL Database. Pomocí pravidel brány firewall určíte, které rozsahy IP adres z internetu jsou povolené a zda se mohou aplikace Azure pokoušet připojovat k vaší službě Azure SQL Database.
Pravidla brány firewall se konfigurují na úrovni serveru nebo databáze. Pravidla konkrétně uvádějí, které síťové prostředky mají povoleno navázat připojení k databázi. V závislosti na úrovni můžete použít následující pravidla:
- Pravidla brány firewall na úrovni serveru
- Povolení přístupu ke službám Azure
- Pravidla IP adres
- Pravidla virtuálních sítí
- Pravidla brány firewall na úrovni databáze
- Pravidla IP adres
Poznámka:
SQL Data Warehouse podporuje pouze pravidla brány firewall protokolu IP na úrovni serveru, a nikoli pravidla brány firewall protokolu IP na úrovni databáze.
Podívejte se podrobněji na to, jak tato pravidla fungují.
Pravidla brány firewall na úrovni serveru
Tato pravidla umožňují klientům přístup k celému serveru Azure SQL, jinými slovy ke všem databázím na stejném logickém serveru. Existují tři typy pravidel, které lze použít na úrovni serveru.
Pravidlo Povolit přístup ke službám Azure umožňuje službám v Azure připojovat se k Azure SQL Database. Toto nastavení umožňuje komunikaci ze všech veřejných IP adres Azure. Tato komunikace zahrnuje všechny služby Azure Platform as a Service (PaaS), jako jsou Aplikace Azure Service a Azure Container Service, a virtuální počítače Azure s odchozím přístupem k internetu. Toto pravidlo je možné nakonfigurovat na portálu v podokně brány firewall pomocí možnosti ZAPNUTO/VYPNUTO nebo pomocí pravidla IP adres, které má jako počáteční a koncovou IP adresu 0.0.0.0.
Toto pravidlo se používá v případě, že máte aplikace, které běží na službách PaaS v Azure, jako jsou Azure Logic Apps nebo Azure Functions, které potřebují přístup ke službě Azure SQL Database. Mnoho z těchto služeb nemá statickou IP adresu, takže toto pravidlo zajistí, že se budou moct připojit k databázi.
Důležité
Touto možností se brána firewall nakonfiguruje tak, aby povolovala všechna připojení z Azure, včetně připojení z předplatných ostatních zákazníků. Při výběru této možnosti se ujistěte, že vaše přihlašovací a uživatelská oprávnění omezují přístup jenom na oprávněné uživatele.
Pravidla IP adres jsou pravidla založená na konkrétních rozsazích veřejných IP adres. IP adresy, které se připojují z povoleného veřejného rozsahu IP adres, se můžou připojit k databázi.
Tato pravidla můžete použít, pokud máte statickou veřejnou IP adresu, která potřebuje přístup k vaší databázi.
Pravidla virtuální sítě umožňují explicitně povolit připojení z určených podsítí v jedné nebo více virtuálních sítích Azure. Pravidla virtuální sítě můžou poskytovat větší řízení přístupu k databázím a mohou být upřednostňovanou možností. Vzhledem k tomu, že adresní prostory virtuální sítě Azure jsou privátní, můžete efektivně eliminovat ohrožení veřejných IP adres a zabezpečené připojení k těmto adresám, které řídíte.
Pravidla virtuální sítě použijte, pokud máte virtuální počítače Azure, které potřebují přístup k vaší databázi.
U pravidel na úrovni serveru je možné všechna tato pravidla vytvářet a zpracovávat prostřednictvím portálu, PowerShellu, rozhraní příkazového řádku a jazyka Transact-SQL (T-SQL).
Pravidla brány firewall na úrovni databáze
Tato pravidla povolují přístup k jednotlivým databázím na logickém serveru a jsou uložena v samotné databázi. Pro pravidla na úrovni databáze můžete nakonfigurovat pouze pravidla IP adres. Fungují stejně jako při použití na úrovni serveru, ale jsou omezená jenom na danou databázi.
Výhodou pravidel na úrovni databáze je jejich přenositelnost. Při replikaci databáze na jiný server se replikují pravidla na úrovni databáze, protože jsou uložená v samotné databázi.
Nevýhodou pravidel na úrovni databáze je, že lze používat jenom pravidla IP adres. Tato pravidla můžou omezit flexibilitu, kterou máte, a můžou zvýšit režijní náklady na správu.
Pravidla brány firewall na úrovni databáze je možné vytvářet a manipulovat pouze prostřednictvím T-SQL.
Omezení síťového přístupu v praxi
Osvědčeným postupem je zvýšit zabezpečení a zvýšit přenositelnost databáze pomocí pravidel brány firewall protokolu IP na úrovni databáze. Pravidla brány firewall protokolu IP na úrovni serveru používejte pro správce a pokud máte několik databází se stejnými požadavky na přístup, abyste nechtěli trávit čas konfigurací jednotlivých databází.
Podívejte se, jak tato pravidla fungují v praxi a jak můžete zabezpečit přístup k síti, abyste povolili jenom to, co je potřeba. Vzpomeňte si, že jste vytvořili logický server Azure SQL Database, databázi a virtuální počítač appServer s Linuxem, který funguje jako aplikační server. K tomuto scénáři často dochází, když se databáze migruje do Azure SQL Database a prostředky ve virtuální sítě k ní potřebují mít přístup. Funkce brány firewall služby Azure SQL Database se dá použít v mnoha scénářích, ale tento příklad má praktickou použitelnost a ukazuje, jak každá z pravidel funguje.
Projděte si nastavení brány firewall a podívejte se, jak fungují. Pro tato cvičení použijete portál i Cloud Shell.
Databáze, kterou jste vytvořili, aktuálně nepovoluje přístup z žádných připojení. Tento omezený přístup je založený na návrhu a na základě příkazů, které jste spustili pro vytvoření logického serveru a databáze. Ověřte, že neexistuje žádný přístup.
Pokud ještě nejste připojení, připojte se ke svému virtuálnímu počítači s Linuxem přes SSH v Cloud Shellu. Nahraďte
nnn.nnn.nnn.nnn
hodnotou zpublicIpAddress
předchozí lekce.ssh nnn.nnn.nnn.nnn
Znovu spusťte
sqlcmd
příkaz, který jste získali dříve, abyste se pokusili připojit k databázi. Nahraďte[server-name]
názvem serveru. Nahraďte[username]
přihlašovací[password]
ADMINUSER
údaje, které jste zadali v předchozí lekci. Ponechte jednoduché uvozovky kolem uživatelského jména a hesla, aby prostředí neinterpretoval žádné speciální znaky.sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Při pokusu o připojení by se měla zobrazit chyba podobná následujícímu výstupu. Tento výstup se očekává, protože přístup k databázi není povolený.
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.
Udělte přístup, abyste se mohli připojit.
Použití pravidla Povolit přístup ke službám Azure na úrovni serveru
Vzhledem k tomu, že váš virtuální počítač má odchozí přístup k internetu, můžete k povolení přístupu z virtuálního počítače použít pravidlo Povolit přístup ke službám Azure.
Přihlaste se k webu Azure Portal pomocí stejného účtu, kterým jste aktivovali sandbox.
Prostřednictvím pole Hledat prostředky, služby a dokumenty v horní části obrazovky vyhledejte váš databázový server
server-name
. Vyberte tento SQL server.V podokně SQL Serveru v levém podokně nabídek v části Zabezpečení vyberte Sítě.
Přejděte dolů na Výjimky, zaškrtněte políčko Povolit službám a prostředkům Azure přístup k tomuto serveru a pak vyberte Uložit. Počkejte, až systém tuto změnu potvrdí.
Vraťte se do relace SSH a zkuste se znovu připojit k databázi.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Teď byste se měli připojit. Po úspěšném připojení by se měl zobrazit příkazový řádek sqlcmd.
1>
Otevřeli jste připojení, ale toto nastavení v současné době umožňuje přístup z libovolného prostředku Azure, včetně prostředků mimo vaše předplatné. Omezte tento přístup dál, abyste omezili síťový přístup jenom na prostředky, které jsou v rámci vašeho řízení.
Použití pravidla IP adres na úrovni databáze
Připomínáme, že pravidla IP adres na úrovni databáze povolují přístup jenom k jednotlivým databázím na logickém serveru. Tady můžete udělit přístup ke statické IP adrese virtuálního počítače appServer .
Pokud chcete vytvořit pravidlo PROTOKOLU IP na úrovni databáze, musíte spustit některé příkazy T-SQL. Vytvořte pravidlo databáze pomocí následující konvence, kde předáte název pravidla, počáteční IP adresu a koncovou IP adresu. Zadáním počátečních a koncových IP adres, které mají být stejné, omezíte přístup na jednu IP adresu. Rozsah můžete rozšířit, pokud máte větší blok adres, které vyžadují přístup.
EXECUTE sp_set_database_firewall_rule N'My Firewall Rule', '40.112.128.214', '40.112.128.214'
Na příkazovém řádku sqlcmd spusťte následující příkaz. Nahraďte veřejnou IP adresu virtuálního počítače appServer v obou umístěních.
Tip
Když spustíte příkazy T-SQL, například následující,
GO
nemusí se na druhý řádek zkopírovat do výzvysqlcmd
. Možná budete muset tuto část zadat ven. Příkaz T-SQL se bez něj nespustí, proto nezapomeňte příkaz spustitGO
.EXECUTE sp_set_database_firewall_rule N'My Firewall Rule', '[From IP Address]', '[To IP Address]'; GO
Po dokončení příkazu zadejte
exit
příkaz k ukončení příkazu sqlcmd. Zůstaňte připojeni přes SSH.Na webu Azure Portal v podokně Sítě pro sql server zrušte výběr možnosti Povolit službám a prostředkům Azure přístup k tomuto serveru a pak vyberte Uložit. Tato změna zakáže přístup ze všech služeb Azure, ale můžete se připojit, protože máte pravidlo PROTOKOLU IP na úrovni databáze pro váš server.
Zpátky v Cloud Shellu se na virtuálním počítači, ke kterému jste připojení přes SSH, zkuste připojit k databázi znovu.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Teď byste se měli připojit. Pokud je úspěšná, zobrazí se výzva sqlcmd.
1>
Použití pravidla na úrovni databáze umožňuje omezit přístup jenom pro určitou databázi. Toto pravidlo může být užitečné, pokud chcete, aby byl síťový přístup nakonfigurovaný pro každou databázi. Pokud sdílí stejnou úroveň síťového přístupu více databází, můžete správu zjednodušit pomocí pravidla na úrovni serveru, které použije stejný přístup pro všechny databáze na serveru.
Použití pravidla IP adres na úrovni serveru
Pravidla na úrovni databáze jsou skvělou volbou, ale co když máte na stejném serveru více databází, ke kterým se virtuální počítač appServer potřebuje připojit? Do každé databáze můžete přidat pravidlo na úrovni databáze, ale při přidávání dalších databází může trvat víc práce. Pokud chcete snížit úsilí o správu, povolte přístup pomocí pravidla na úrovni serveru, které by platilo pro všechny databáze na serveru.
Pomocí pravidla PROTOKOLU IP na úrovni serveru omezte systémy, které se můžou připojit.
Na příkazovém řádku sqlcmd spusťte následující příkaz, který odstraní pravidlo IP adres na úrovni databáze.
EXECUTE sp_delete_database_firewall_rule N'My Firewall Rule'; GO
Po dokončení příkazu zadejte
exit
příkaz k ukončení příkazu sqlcmd. Zůstaňte připojeni přes SSH.Zpátky na webu Azure Portal v podokně Sítě pro váš SQL server v části Pravidla brány firewall vyberte přidat pravidlo brány firewall. Pojmenujte pravidlo Povolit appServer, zadejte veřejnou IP adresu virtuálního počítače appServer pro počáteční IP adresu a koncovou IP adresu a pak vyberte OK.
Zvolte Uložit.
Zpátky v Cloud Shellu se na virtuálním počítači appServer zkuste znovu připojit k databázi.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Teď byste se měli připojit. Pravidlo na úrovni serveru umožňuje přístup na základě veřejné IP adresy virtuálního počítače appServer . Po úspěšném připojení by se měl zobrazit příkazový řádek sqlcmd.
1>
Zadáním ukončete
exit
sqlcmd. Zůstaňte připojeni přes SSH.
Izolovali jste připojení jenom k IP adrese, kterou jste zadali v pravidle. Tato izolace funguje skvěle, ale při přidávání dalších systémů, které se potřebují připojit, může být stále administrativní výzvou. Vyžaduje také statickou IP adresu nebo IP adresu z definovaného rozsahu IP adres.
Pokud je IP adresa dynamická a změní se, musíte pravidlo aktualizovat, aby se zajistilo připojení. Virtuální počítač appServer je aktuálně nakonfigurovaný s dynamickou IP adresou. Tato IP adresa se pravděpodobně v určitém okamžiku změní a přeruší váš přístup, jakmile k tomu dojde. Teď se podívejte, jak můžou být pravidla virtuální sítě v konfiguraci přínosná.
Použití pravidla virtuálních sítí na úrovni serveru
V takovém případě, protože váš virtuální počítač běží v Azure, můžete k izolaci přístupu použít pravidlo virtuální sítě na úrovni serveru a usnadnit tak budoucí služby získání přístupu k databázi.
Zpátky na webu Azure Portal a stále v podokně Sítě v části Virtuální sítě vyberte Přidat pravidlo virtuální sítě.
Zobrazí se dialogové okno Vytvořit nebo aktualizovat pravidlo virtuální sítě. Nastavte následující hodnoty.
Nastavení Hodnota Název Ponechejte výchozí hodnotu. Předplatné Předplatné Concierge Virtuální síť appServerVNET Název podsítě / předpona adresy appServerSubnet / 10.0.0.0/24 Pokud chcete povolit koncový bod služby v podsíti, vyberte po povolení koncového bodu tlačítko OK a vytvořte pravidlo.
Odeberte pravidlo IP adresy. Vyberte ... vedle pravidla Povolit appServer, vyberte Odstranit a pak vyberte Uložit.
Zpátky v Cloud Shellu se na virtuálním počítači appServer zkuste znovu připojit k databázi.
sqlcmd -S tcp:[server-name].database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
Teď byste se měli připojit. Pokud je úspěšná, zobrazí se výzva sqlcmd.
1>
To, co jste zde udělali, efektivně odebere veškerý veřejný přístup k SQL Serveru. Povoluje přístup pouze z konkrétní podsítě ve virtuální síti Azure, kterou jste definovali. Pokud do této podsítě přidáte další aplikační servery, není nutná žádná další konfigurace. Každý server v této podsíti by měl možnost připojit se k SQL Serveru.
Tato konfigurace omezuje vaši expozici službám mimo váš rozsah řízení a usnadňuje správu, pokud přidáte další servery. Tato metoda je efektivní pro zabezpečení síťového přístupu ke službě Azure SQL Database.