Gyakorlat – Hálózati hozzáférés korlátozása

Befejeződött

A felhasználók az alkalmazáskiszolgálóhoz csatlakozva rendeléseket adhatnak meg, frissíthetik a fiókjukat, és hasonló tevékenységeket hajthatnak végre. Az alkalmazáskiszolgáló ezzel a módosítással frissíti az adatbázist. Mivel a felhasználók személyes adatai az adatbázisban vannak tárolva, kritikus fontosságú annak biztosítása, hogy csak megbízható és szükséges erőforrásokból engedélyezze a hozzáférést. Az SQL-adatbázishoz való hozzáférést többféleképpen is szabályozhatja a hálózaton keresztül.

Firewall rules

Az Azure SQL Database beépített tűzfallal rendelkezik, amely lehetővé teszi és tagadja a hálózati hozzáférést mind az adatbázis-kiszolgálóhoz, mind az egyes adatbázisokhoz. Kezdetben az SQL Database tűzfal blokkolja az Azure SQL Database-hez való összes nyilvános hozzáférést. Ha el szeretné érni az adatbázis-kiszolgálót, meg kell adnia egy vagy több kiszolgálói szintű IP-tűzfalszabályt, amelyek lehetővé teszik az Azure SQL Database-hez való hozzáférést. Az IP-tűzfalszabályok segítségével adja meg, hogy az internet felől mely IP-címtartományok engedélyezettek, valamint hogy az Azure-alkalmazások megpróbálhatnak-e csatlakozni az Azure SQL Server Database-hez.

A tűzfalszabályok kiszolgáló- vagy adatbázisszinten vannak konfigurálva. A szabályok kifejezetten azt adhatók meg, hogy mely hálózati erőforrások létesíthetnek kapcsolatot az adatbázissal. A szinttől függően az alkalmazható szabályok a következők:

  • Kiszolgálószintű tűzfalszabályok
    • Hozzáférés engedélyezése Azure-szolgáltatások számára
    • IP-cím-szabályok
    • Virtuális hálózati szabályok
  • Adatbázisszintű tűzfalszabályok
    • IP-cím-szabályok

Megjegyzés:

A SQL Data Warehouse csak a kiszolgálói szintű IP-tűzfalszabályok használatát támogatja, de nem támogatja az adatbázis-szintű IP-tűzfalszabályokat.

Tekintse meg közelebbről ezeknek a szabályoknak a működését.

Kiszolgálószintű tűzfalszabályok

Ezek a szabályok hozzáférést biztosítanak az ügyfelek számára a teljes Azure SQL Serverhez, azaz az egyazon logikai kiszolgálón található összes adatbázishoz. A kiszolgáló szintjén háromféle szabály alkalmazható.

Az Azure-szolgáltatásokhoz való hozzáférés engedélyezése szabály az Azure-on belüli szolgáltatások számára engedélyezi az Azure SQL Database-hez való csatlakozást. Ha ez a szabály engedélyezve van, minden Azure-beli nyilvános IP-címről megengedi a kommunikációt. Ez a kommunikáció magában foglalja az Összes Azure Platform as a Service (PaaS) szolgáltatást, például a Azure-alkalmazás Service-t és az Azure Container Service-t, valamint a kimenő internet-hozzáféréssel rendelkező Azure-beli virtuális gépeket. Ez a szabály a portálon a Tűzfal panel BE/KI kapcsolójával, vagy olyan IP-szabállyal konfigurálható, amelynek kezdő és záró IP-címe is 0.0.0.0.

Diagram shows how to allow access to Azure services network.

Ez a szabály akkor használatos, ha olyan alkalmazásokkal rendelkezik, amelyek paaS-szolgáltatásokon futnak az Azure-ban, például az Azure Logic Appsben vagy az Azure Functionsben, amelyeknek hozzá kell férnie az Azure SQL Database-hez. Ezen szolgáltatások közül sok nem rendelkezik statikus IP-címmel, ezért ez a szabály biztosítja, hogy csatlakozni tudjanak az adatbázishoz.

Fontos

Ez a beállítás konfigurálja a tűzfalat arra, hogy engedélyezzen minden, az Azure felől érkező kapcsolatot, beleértve a más ügyfelek előfizetéseiből érkező kapcsolatokat is. Ha ezt a lehetőséget választja, győződjön meg arról, hogy a bejelentkezés és a felhasználói engedélyek csak a jogosult felhasználók számára korlátozzák a hozzáférést.

Az IP-cím-szabályok adott nyilvános IP-címtartományon alapulnak. Az engedélyezett nyilvános IP-címtartományból csatlakozó IP-címek csatlakozhatnak az adatbázishoz.

Diagram represents an IP address rule.

Ezeket a szabályokat akkor használhatja, ha olyan statikus nyilvános IP-címmel rendelkezik, amelyhez hozzá kell férnie az adatbázishoz.

A virtuális hálózati szabályok lehetővé teszik, hogy explicit módon engedélyezze a megadott alhálózatok közötti kapcsolatot egy vagy több Azure-beli virtuális hálózaton belül. A virtuális hálózati szabályok nagyobb hozzáférés-vezérlést biztosíthatnak az adatbázisokhoz, és előnyben részesíthetők. Mivel az Azure-beli virtuális hálózati címterek privátak, hatékonyan kiküszöbölheti a nyilvános IP-címeknek való kitettséget és az Ön által felügyelt címekhez való biztonságos kapcsolatot.

Diagram represents a virtual network rule.

Akkor használjon virtuális hálózati szabályokat, ha olyan Azure-beli virtuális gépekkel rendelkezik, amelyeknek hozzá kell férnie az adatbázishoz.

Kiszolgálószintű szabályok esetén ezek a szabályok a portálon, a PowerShellen, a parancssori felületen és a Transact-SQL-en (T-SQL) keresztül hozhatók létre és módosíthatók.

Adatbázisszintű tűzfalszabályok

Ezek a szabályok egyes adatbázisokhoz engedélyezik a hozzáférést egy logikai kiszolgálón, és magában az adatbázisban vannak tárolva. Adatbázisszintű szabályok esetén csak IP-címszabályokat konfigurálhat. Ugyanúgy működnek, mint a kiszolgáló szintjén alkalmazva, de a hatókörük csak az adatbázisra terjed ki.

Diagram represents a database IP address network rule.

Az adatbázisszintű szabályok előnyei és hordozhatósága. Amikor egy adatbázist egy másik kiszolgálóra replikál, az adatbázisszintű szabályok replikálódnak, mivel azokat maga az adatbázis tárolja.

Az adatbázisszintű szabályok hátránya, hogy csak IP-cím-szabályok használhatók. Ezek a szabályok korlátozhatják a rugalmasságot, és növelhetik a felügyeleti többletterhelést.

Az adatbázisszintű tűzfalszabályok csak a T-SQL-en keresztül hozhatók létre és módosíthatók.

A hálózati hozzáférés korlátozása a gyakorlatban

Ajánlott eljárásként használja az adatbázisszintű IP-tűzfalszabályokat a biztonság növelése és az adatbázis hordozhatóbbá tétele érdekében. Használjon kiszolgálószintű IP-tűzfalszabályokat a rendszergazdák számára, és ha több, azonos hozzáférési követelményeket támasztó adatbázissal rendelkezik, így nem szeretne időt tölteni az egyes adatbázisok egyenkénti konfigurálásával.

Tekintse meg, hogyan működnek ezek a szabályok a gyakorlatban, és hogyan biztosíthatja a hálózati hozzáférést, hogy csak a szükséges elemeket engedélyezze. Ne feledje, hogy létrehozott egy Logikai Azure SQL Database-kiszolgálót, egy adatbázist és egy alkalmazáskiszolgálóként működő AppServer Linux virtuális gépet. Ez a helyzet gyakran előáll, amikor adatbázist migráltak az Azure SQL Database-be, és egy virtuális hálózaton belüli erőforrásoknak kell elérniük azt. Az Azure SQL Database tűzfalfunkciója számos esetben használható, de ez a példa gyakorlati alkalmazhatósággal rendelkezik, és bemutatja, hogyan működnek az egyes szabályok.

Tekintse át a tűzfalbeállításokat, és nézze meg, hogyan működnek. Ezekhez a gyakorlatokhoz a portált és a Cloud Shellt is használhatja.

A létrehozott adatbázis jelenleg nem engedélyezi a hozzáférést semmilyen kapcsolatból. Ez a korlátozott hozzáférés a logikai kiszolgáló és az adatbázis létrehozásához futtatott parancsokon alapul. Ellenőrizze, hogy nincs-e hozzáférés.

  1. A Cloud Shellben SSH-t kell csatlakoztatni a Linux rendszerű virtuális géphez, ha még nincs csatlakoztatva. Cserélje le nnn.nnn.nnn.nnn az előző leckében szereplő értékre publicIpAddress .

    ssh nnn.nnn.nnn.nnn
    
  2. Futtassa újra a sqlcmd korábban lekért parancsot, hogy megpróbáljon csatlakozni az adatbázishoz. Cserélje (z) [username] és [password] értékeket az előző egységben megadott ADMINUSER hitelesítő adatokra. Ügyeljen arra, hogy az egyes idézőjelek a felhasználónév és a jelszó körül maradjanak, hogy a rendszerhéj ne értelmezzen félre semmilyen speciális karaktert.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Kapcsolódáskor a következő kimenethez hasonló hibaüzenetnek kell megjelennie. Ez a kimenet várható, mivel az adatbázishoz való hozzáférés nem engedélyezett.

    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.
    

Adjon hozzáférést a csatlakozáshoz.

Azure-szolgáltatásokhoz való hozzáférés engedélyezése szabály használata a kiszolgáló szintjén

Mivel a virtuális gép kimenő internet-hozzáféréssel rendelkezik, az Azure-szolgáltatásokhoz való hozzáférés engedélyezése szabály használatával engedélyezheti a virtuális gépről való hozzáférést.

  1. Jelentkezzen be az Azure Portalra ugyanazzal a fiókkal, amellyel aktiválta a tesztkörnyezetet.

  2. A felül található Erőforrások, szolgáltatások és dokumentumok keresése mezőben keressen rá az adatbázis-kiszolgáló nevére: serverNNNNN. Válasza ki az SQL-kiszolgálót.

  3. Az SQL Server panel bal oldali menüjének Biztonság területén válassza a Hálózatkezelés lehetőséget.

  4. Görgessen le a Kivételek elemre, jelölje be az Azure-szolgáltatások és -erőforrások hozzáférésének engedélyezése a kiszolgálóhoz jelölőnégyzetet, majd válassza a Mentés lehetőséget. Várjon, amíg a rendszer nyugtázza ezt a változást.

  5. Az SSH-munkamenetben próbáljon újra csatlakozni az adatbázishoz.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Ezúttal a kapcsolódásnak sikeresnek kell lennie. Ha így van, akkor egy sqlcmd parancssor jelenik meg.

    1>
    

Megnyitotta a kapcsolatot, de ez a beállítás jelenleg bármely Azure-erőforrásból engedélyezi a hozzáférést, beleértve az előfizetésen kívüli erőforrásokat is. A hozzáférés további korlátozásával korlátozhatja a hálózati hozzáférést csak az Ön felügyelete alá tartozó erőforrásokra.

Adatbázisszintű IP-cím-szabály használata

Ne feledje, hogy az adatbázisszintű IP-cím-szabályok csak egy adatbázishoz engedélyezik a hozzáférést egy logikai kiszolgálón. Itt egyet használva hozzáférést biztosíthat az appServer virtuális gép statikus IP-címéhez.

Adatbázisszintű IP-szabály létrehozásához futtatnia kell néhány T-SQL-parancsot. Hozzon létre egy adatbázisszabályt a következő konvencióval, ahol a szabály nevét, a kezdő IP-címet és a záró IP-címet adja meg. Ha a kezdő és a záró IP-címeket azonosnak adja meg, akkor egyetlen IP-címre korlátozza a hozzáférést. Bővítheti a tartományt, ha nagyobb, hozzáférést igénylő címblokkja van.

EXECUTE sp_set_database_firewall_rule N'My Firewall Rule', '40.112.128.214', '40.112.128.214'
  1. Miközben továbbra is az sqlcmd parancssorban van, futtassa a következő parancsot. Cserélje le az appServer virtuális gép nyilvános IP-címét mindkét helyen.

    Tipp.

    A következőhöz hasonló T-SQL-parancsok futtatásakor előfordulhat, hogy a GO második sorban lévő parancsok nem másolhatók át a sqlcmd parancssorba. Előfordulhat, hogy ki kell gépelnie ezt a részt. A T-SQL-parancs nem fut nélküle, ezért mindenképpen futtassa a GO parancsot.

    EXECUTE sp_set_database_firewall_rule N'My Firewall Rule', '[From IP Address]', '[To IP Address]';
    GO
    

    A parancs befejeződése után lépjen ki exit az sqlcmd parancsból. Maradjon kapcsolatban az SSH-val.

  2. Az Azure PortalOn az SQL Server Hálózatkezelés paneljén törölje a jelölést az Azure-szolgáltatások és -erőforrások hozzáférésének engedélyezése a kiszolgálóhoz, majd válassza a Mentés lehetőséget. Ez a módosítás letiltja az összes Azure-szolgáltatás hozzáférését, de csatlakozhat, mert adatbázisszintű IP-szabálya van a kiszolgálóhoz.

  3. A Cloud Shellben a virtuális gépen, amelyhez SSH-kapcsolaton keresztül csatlakozik, próbáljon meg újra csatlakozni az adatbázishoz.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Ezúttal a kapcsolódásnak sikeresnek kell lennie. Ha sikeres, megjelenik egy sqlcmd-üzenet.

    1>
    

Adatbázisszintű szabály használatával a hozzáférés célzottan az adatbázisra szűkíthető le. Ez a szabály akkor lehet hasznos, ha adatbázisonként szeretné konfigurálni a hálózati hozzáférést. Több adatbázis azonos szintű hálózati elérése esetén az adminisztráció egyszerűbbé tehető, ha ezt a hozzáférést minden adatbázishoz a kiszolgálón állítja be egy kiszolgálószintű szabállyal.

Kiszolgálószintű IP-cím-szabály használata

Az adatbázisszintű szabályok nagyszerű lehetőségnek számítanak, de mi a teendő, ha több adatbázis van ugyanazon a kiszolgálón, amelyhez az appServer virtuális gépnek csatlakoznia kell? Minden adatbázishoz hozzáadhat adatbázisszintű szabályt, de több munkát is igénybe vehet, ha több adatbázist vesz fel. A felügyeleti erőfeszítések csökkentése érdekében engedélyezze a hozzáférést egy kiszolgálószintű szabálysal, amely a kiszolgálón található összes adatbázisra vonatkozik.

Kiszolgálószintű IP-szabály használatával korlátozza a csatlakozni képes rendszereket.

  1. Továbbra is az sqlcmd parancssorban, törölje az adatbázisszintű IP-cím-szabályt az alábbi parancs futtatásával.

    EXECUTE sp_delete_database_firewall_rule N'My Firewall Rule';
    GO
    

    A parancs befejeződése után lépjen ki exit az sqlcmd parancsból. Maradjon kapcsolatban az SSH-val.

  2. Az Azure Portalon, az SQL Server Hálózatkezelés ablaktábláján, a Tűzfalszabályok területen válassza a tűzfalszabály hozzáadását. Nevezze el az AppServer engedélyezése szabályt, adja meg az appServer virtuális gép nyilvános IP-címét a kezdő IP-címhez és a záró IP-címhez, majd kattintson az OK gombra.

  3. Válassza a Mentés parancsot.

    Screenshot of the Azure portal showing the server firewall rule creation.

  4. A Cloud Shellben az appServer virtuális gépen próbáljon újra csatlakozni az adatbázishoz.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Ezúttal a kapcsolódásnak sikeresnek kell lennie. A kiszolgálószintű szabály az appServer virtuális gép nyilvános IP-címe alapján engedélyezi a hozzáférést. Ha így van, akkor egy sqlcmd parancssor jelenik meg.

    1>
    

    Lépjen ki exit az sqlcmd-ből. Maradjon kapcsolatban az SSH-val.

A kapcsolatot csak a szabályban megadott IP-címhez izolálta. Ez az elkülönítés nagyszerűen működik, de továbbra is adminisztratív kihívást jelenthet, mivel több olyan rendszert ad hozzá, amelyekhez csatlakoznia kell. Statikus IP-címet vagy IP-címet is igényel egy meghatározott IP-címtartományból.

Ha az IP-cím dinamikus és változik, frissítenie kell a szabályt a kapcsolat biztosításához. Az appServer virtuális gép jelenleg dinamikus IP-címmel van konfigurálva. Ez az IP-cím valószínűleg valamikor megváltozik, és amint ez megtörténik, megszakad a hozzáférése. Most nézze meg, hogyan lehetnek előnyösek a virtuális hálózati szabályok a konfigurációban.

Kiszolgálószintű virtuálishálózat-szabály használata

Ebben az esetben, mivel a virtuális gép az Azure-ban fut, egy kiszolgálószintű virtuális hálózati szabály használatával elkülönítheti a hozzáférést, és megkönnyítheti a jövőbeli szolgáltatások számára az adatbázishoz való hozzáférést.

  1. Az Azure Portalon és a Hálózatkezelés panelen a Virtuális hálózatok területen válassza a Virtuális hálózati szabály hozzáadása lehetőséget.

  2. Megjelenik a Virtuális hálózati szabály létrehozása/frissítése párbeszédpanel. Állítsa be a következő értékeket.

    Beállítás Érték
    Név Ne módosítsa az alapértelmezett értéket
    Előfizetés Concierge-előfizetés
    Virtuális hálózat appServerVNET
    Alhálózat neve / cím előtagja appServerSubnet / 10.0.0.0/24
  3. Válassza az Engedélyezés lehetőséget a szolgáltatásvégpont engedélyezéséhez az alhálózaton, majd kattintson az OK gombra , miután a végpont engedélyezve van a szabály létrehozásához.

  4. Távolítsa el az IP-címszabályt. Válassza a ... elemet az AppServer engedélyezése szabály mellett, válassza a Törlés, majd a Mentés lehetőséget.

  5. A Cloud Shellben az appServer virtuális gépen próbáljon újra csatlakozni az adatbázishoz.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Ezúttal a kapcsolódásnak sikeresnek kell lennie. Ha sikeres, megjelenik egy sqlcmd-üzenet.

    1>
    

Az itt végrehajtott művelet gyakorlatilag eltávolítja az SQL Serverhez való nyilvános hozzáférést. Csak az Ön által meghatározott Azure-beli virtuális hálózat adott alhálózatáról engedélyezi a hozzáférést. Ha több alkalmazáskiszolgálót ad hozzá az alhálózathoz, nincs szükség további konfigurációra. Az alhálózat bármely kiszolgálója csatlakozhat az SQL-kiszolgálóhoz.

Ez a konfiguráció korlátozza a szolgáltatásoknak való kitettséget az ön hatókörén kívül, és megkönnyíti az adminisztrációt, ha további kiszolgálókat ad hozzá. Ez a módszer hatékony az Azure SQL Database-hez való hálózati hozzáférés biztonságossá tételéhez.