Nastavení firewallu na úrovni SQL Databáze
Tento článek byl napsán v roce 2017. Vývojářské technologie se neustále inovují a článek již nemusí popisovat aktuální stav technologie, ideální řešení a můj současný pohled na dané téma.
V prostředí Microsoft Azure lze nastavovat pravidla přístupu z IP adres do SQL databáze buď přímo na úrovni databáze nebo na úrovni SQL Serveru. V tomto článku se zaměřím na první variantu, čili nastavení pravidel nad konkrétní databází.
Uplatnění pravidel
Pravidla se definují jako seznam rozsahů IP adres, pro které je povolen přístup k databázi. V případě SQL serveru je možné provést nastavení rozsahů přímo v Azure portálu. V případě jednotlivých databází je nutné provést nastavení pomocí SQL.
Pravidla se uplatňují směrem od databáze. Znamená to, že pokud je daná adresa povolena na databázi, je provoz povolen. Pokud adresa na databázi není povolena (například vůbec nemáme nastaveny rozsahy), pak se prohledávají pravidla pro celý SQL server. Pokud ani na této úrovni není daná IP adresa nalezena, pak je přístup zamítnut. Dobře je to vidět z následujícího obrázku:
Přehled aktuálních pravidel
Pro přehled všech aktuálních pravidel lze použít dotaz:
SELECT * FROM sys.database_firewall_rules
Pokud dotaz nevrátí žádné řádky, jednoduše žádné IP adresy nejsou na seznamu povolených a o přístupu rozhodují pravidla na SQL serveru.
Nastavení nových pravidel
Pro přidání nových pravidel slouží uložená procedura:
EXEC sp_set_database_firewall_rule N'AllowAll', '0.0.0.0', '255.255.255.255'
Odstranění pravidla
Smazat pravidlo lze opět pomocí uložené procedury
EXEC sp_delete_database_firewall_rule N'AllowAll'
Přestože pravidla na úrovni SQL serveru je pohodlné nastavovat přímo v Azure portálu, stejně tak je možné zůstat u tradičního SQL. Ke změnám lze použít některou z uložených procedur nebo připravených view.
Přehled příkazů z dokumentace: