Alıştırma - Ağ erişimini kısıtlama

Tamamlandı

Kullanıcılar sipariş girmek, hesabını güncelleştirmek ve benzer etkinlikler gerçekleştirmek için uygulama sunucunuza bağlanır. Uygulama sunucusu da veritabanını bu değişikliklerle güncelleştirir. Kullanıcıların veritabanında depolanan kişisel verileri olduğundan, yalnızca güvenilen ve gerekli kaynaklardan erişime izin vermenizi sağlamak kritik önem taşır. AĞ üzerinden SQL veritabanınıza erişimi denetlemenin çeşitli yolları vardır.

Güvenlik duvarı kuralları

Azure SQL Veritabanı, hem veritabanı sunucusunun kendisine hem de tek tek veritabanlarına ağ erişimine izin veren ve reddeden yerleşik bir güvenlik duvarına sahiptir. başlangıçta, SQL Veritabanı güvenlik duvarı Azure SQL Veritabanı tüm genel erişimi engeller. Veritabanı sunucusuna erişmek için, Azure SQL Veritabanınıza erişimi etkinleştiren bir veya birden fazla sunucu düzeyi IP güvenlik duvarı kuralı belirtmeniz gerekir. İnternet’ten gelen hangi IP adresi aralıklarının izinli olduğunu ve Azure uygulamalarının Azure SQL Veritabanınıza bağlanmaya çalışıp çalışamayacaklarını belirtmek için IP güvenlik duvarı kurallarını kullanırsınız.

Güvenlik duvarı kuralları sunucu veya veritabanı düzeyinde yapılandırılır. Kurallar özellikle veritabanıyla bağlantı kurmak için izin verilen ağ kaynaklarını belirtir. Düzeye bağlı olarak uygulayabileceğiniz kurallar şunlardır:

  • Sunucu düzeyinde güvenlik duvarı kuralları
    • Azure hizmetlerine erişim izni verme
    • IP adresi kuralları
    • Sanal ağ kuralları
  • Veritabanı düzeyinde güvenlik duvarı kuralları
    • IP adresi kuralları

Dekont

SQL Veri Ambarı yalnızca sunucu düzeyi IP güvenlik duvarı kurallarını destekler; veritabanı düzeyi IP güvenlik duvarı kurallarını desteklemez.

Bu kuralların nasıl çalıştığına daha yakından bakın.

Sunucu düzeyinde güvenlik duvarı kuralları

Bu kurallar istemcilerin tüm Azure SQL sunucusuna, yani aynı mantıksal sunucu içindeki tüm veritabanlarına erişmesini sağlar. Sunucu düzeyinde uygulanabilecek üç kural türü vardır.

Azure hizmetlerine erişim izni ver kuralı, Azure içindeki hizmetlerin Azure SQL Veritabanınıza bağlanmasına izin verir. Bu ayar etkin olduğunda tüm Azure genel IP adreslerinden gelen iletişimlere izin verilir. Bu iletişim, Azure Uygulaması Hizmeti ve Azure Container Service gibi tüm Hizmet Olarak Azure Platform (PaaS) hizmetlerini ve giden İnternet erişimi olan Azure VM'lerini içerir. Bu kural portaldaki güvenlik duvarı bölmesinde bulunan AÇ/KAPAT seçeneğiyle veya başlangıç ve bitiş IP adresi olarak 0.0.0.0 değerine sahip olan bir IP kuralıyla yapılandırılabilir.

Diagram shows how to allow access to Azure services network.

Bu kural, Azure Logic Apps gibi Azure'daki PaaS hizmetlerinde veya Azure SQL Veritabanı erişmesi gereken Azure İşlevleri uygulamalarınız olduğunda kullanılır. Bu hizmetlerin çoğunun statik IP adresi yoktur, bu nedenle bu kural veritabanına bağlanabilmelerini sağlar.

Önemli

Bu seçenek, diğer müşterilerin aboneliklerinden gelen bağlantılar dahil Azure’dan tüm bağlantılara izin verecek şekilde güvenlik duvarınızı yapılandırır. Bu seçeneği belirtirken, oturum açma ve kullanıcı izinlerinizin erişimi yalnızca yetkili kullanıcılarla sınırladığından emin olun.

IP adresi kuralları, belirli genel IP adresi aralıklarına göre belirlenen kurallardır. İzin verilen genel IP aralığından bağlanan IP adreslerinin veritabanına bağlanmasına izin verilir.

Diagram represents an IP address rule.

Veritabanınıza erişmesi gereken statik bir genel IP adresiniz olduğunda bu kuralları kullanabilirsiniz.

Sanal ağ kuralları , bir veya daha fazla Azure sanal ağı içindeki belirtilen alt ağlardan gelen bağlantıya açıkça izin vermenizi sağlar. Sanal ağ kuralları veritabanlarınıza daha fazla erişim denetimi sağlayabilir ve tercih edilen bir seçenek olabilir. Azure sanal ağ adres alanları özel olduğundan, genel IP adreslerine maruz kalma durumunu etkili bir şekilde ortadan kaldırabilir ve denetlediğiniz adreslerle güvenli bağlantıyı sağlayabilirsiniz.

Diagram represents a virtual network rule.

Veritabanınıza erişmesi gereken Azure VM'leriniz varsa sanal ağ kurallarını kullanın.

Sunucu düzeyinde kurallar için bu kuralların tümü portal, PowerShell, CLI ve Transact-SQL (T-SQL) aracılığıyla oluşturulabilir ve işlenebilir.

Veritabanı düzeyinde güvenlik duvarı kuralları

Bu kurallar bir mantıksal sunucu üzerindeki bir veritabanına erişim sağlar ve veritabanında depolanır. Veritabanı düzeyi kuralları için yalnızca IP adresi kurallarını yapılandırabilirsiniz. Bu kurallar sunucu düzeyinde uygulandığında olduğu gibi çalışır ancak yalnızca veritabanına özgü olur.

Diagram represents a database IP address network rule.

Veritabanı düzeyindeki kuralların avantajı taşınabilir olmalarıdır. Bir veritabanını başka bir sunucuya çoğalttığınızda, veritabanı düzeyindeki kurallar veritabanında depolandığından çoğaltılır.

Veritabanı düzeyinde kuralların dezavantajı, yalnızca IP adresi kurallarının kullanılabilir olmasıdır. Bu kurallar sahip olduğunuz esnekliği sınırlayabilir ve yönetim yükünü artırabilir.

Veritabanı düzeyinde güvenlik duvarı kuralları yalnızca T-SQL aracılığıyla oluşturulabilir ve değiştirilebilir.

Uygulamada ağ erişimini kısıtlama

En iyi uygulama olarak, güvenliği artırmak ve veritabanınızı daha taşınabilir hale getirmek için veritabanı düzeyinde IP güvenlik duvarı kurallarını kullanın. Yöneticiler için sunucu düzeyinde IP güvenlik duvarı kurallarını kullanın ve her veritabanını ayrı ayrı yapılandırmak için zaman harcamak istemiyorsanız, aynı erişim gereksinimlerine sahip birkaç veritabanınız olduğunda kullanın.

Bu kuralların uygulamada nasıl çalıştığına ve ağ erişimini yalnızca gerekli olan şeylere izin verecek şekilde nasıl güvenli bir şekilde kullanabileceğinize göz atın. Bir Azure SQL Veritabanı mantıksal sunucusu, veritabanı ve uygulama sunucusu işlevi gören appServer Linux VM oluşturduğunuzu hatırlayın. Bu senaryo genellikle bir veritabanı Azure SQL Veritabanı hizmetine geçirildiğinde ve sanal ağ içinde erişim sağlaması gereken kaynaklar olduğunda uygulanır. Azure SQL Veritabanı güvenlik duvarı özelliği birçok senaryoda kullanılabilir, ancak bu örnek pratik uygulanabilirliğe sahiptir ve kuralların her birinin nasıl çalıştığını gösterir.

Güvenlik duvarı ayarlarını gözden geçirin ve nasıl çalıştıklarını görün. Bu alıştırmalar için hem portalı hem de Cloud Shell'i kullanırsınız.

Oluşturduğunuz veritabanı şu anda hiçbir bağlantıdan erişime izin vermiyor. Bu sınırlı erişim, tasarım gereğidir ve mantıksal sunucuyu ve veritabanını oluşturmak için çalıştırdığınız komutları temel alır. Erişim olmadığını onaylayın.

  1. Cloud Shell'de, henüz bağlı değilseniz Linux VM'nize SSH ekleyin. değerini önceki ünitedeki değeriyle publicIpAddress değiştirinnnn.nnn.nnn.nnn.

    ssh nnn.nnn.nnn.nnn
    
  2. Veritabanına bağlanmaya çalışmak için daha önce aldığınız komutu yeniden çalıştırın sqlcmd . [username] ve [password] öğesini, önceki ünitede belirttiğiniz ADMINUSER kimlik bilgileriyle değiştirdiğinizden emin olun. Kabuğun özel karakterleri yanlış yorumlamaması için kullanıcı adı ve parolanın etrafındaki tek tırnak işaretleri tuttuğunuzdan emin olun.

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

    Bağlanmayı denediğinizde aşağıdaki çıkışa benzer bir hata görmeniz gerekir. Veritabanına erişime izin verilmediğinden bu çıkış beklenir.

    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.
    

Bağlanabilmeniz için erişim izni verin.

Sunucu düzeyinde Azure hizmetlerine erişim izni verme kuralını kullanma

SANAL makinenizin giden İnternet erişimi olduğundan, VM'nizden erişime izin vermek için Azure hizmetlerine erişime izin ver kuralını kullanabilirsiniz.

  1. Korumalı alanı etkinleştirdiğiniz hesapla Azure portalında oturum açın.

  2. Portalın üst kısmındaki Kaynak, hizmet ve belgeleri arayın kutusundan veritabanı sunucunuzun adını (serverNNNNN) aratın. SQL sunucusunu seçin.

  3. SQL server bölmesinde, sol menü bölmesindeki Güvenlik'in altında Ağ'ı seçin.

  4. Aşağı kaydırarak Özel Durumlar'a gelin, Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver onay kutusunu seçin ve ardından Kaydet'i seçin. Sistem bu değişikliği kabul edene kadar bekleyin.

  5. SSH oturumunuza geri dönüp veritabanınıza bağlanmayı yeniden deneyin.

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

    Bu noktada bağlanabiliyor olmanız gerekir. Bağlantı başarılı olursa bir sqlcmd istemi açılır.

    1>
    

Bağlantıyı açtınız, ancak bu ayar şu anda aboneliğinizin dışındaki kaynaklar da dahil olmak üzere tüm Azure kaynaklarından erişime izin veriyor. Ağ erişimini yalnızca denetiminizdeki kaynaklarda sınırlamak için bu erişimi daha fazla kısıtlayın.

Veritabanı düzeyinde IP adresi kuralı kullanma

Hatırlayacağınız üzere veritabanı düzeyinde IP adresi kuralları, bir mantıksal sunucu üzerindeki bir veritabanına erişim sağlamaktadır. AppServer VM'nizin statik IP'sine erişim vermek için buradan bir tane kullanın.

Veritabanı düzeyinde bir IP kuralı oluşturmak için bazı T-SQL komutlarını çalıştırmanız gerekir. Kural adını, başlangıç IP adresini ve bitiş IP adresini geçirdiğiniz aşağıdaki kuralı kullanarak bir veritabanı kuralı oluşturun. Başlangıç ve bitiş IP adreslerinin aynı olmasını belirterek, erişimi tek bir IP ile sınırlandırmış olursunuz. Erişim gerektiren daha büyük bir adres bloğunuz varsa aralığı genişletebilirsiniz.

EXECUTE sp_set_database_firewall_rule N'My Firewall Rule', '40.112.128.214', '40.112.128.214'
  1. Sqlcmd istemindeyken aşağıdaki komutu çalıştırın. Her iki konumda da appServer VM'nizin genel IP adresini değiştirin.

    Bahşiş

    Aşağıdaki gibi T-SQL komutlarını çalıştırdığınızda, GO ikinci satırdaki komutu istemine kopyalanamayabilir sqlcmd . Bu bölümü yazmanız gerekebilir. T-SQL komutu olmadan çalışmaz, bu nedenle komutunu çalıştırdığınızdan GO emin olun.

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

    Komut tamamlandıktan sonra sqlcmd'dan çıkmak için girin exit . SSH üzerinden bağlı kalın.

  2. Azure portalında, SQL sunucunuzun Ağ bölmesinde Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver'in seçimini kaldırın ve kaydet'i seçin. Bu değişiklik tüm Azure hizmetlerinden erişimi devre dışı bırakır, ancak sunucunuz için veritabanı düzeyinde bir IP kuralınız olduğundan bağlanabilirsiniz.

  3. Cloud Shell'e döndüğünüzde, SSH üzerinden bağlandığınız VM'de veritabanınıza yeniden bağlanmayı deneyin.

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

    Bu noktada bağlanabiliyor olmanız gerekir. Başarılı olursa bir sqlcmd istemi görürsünüz.

    1>
    

Veritabanı düzeyinde kural kullandığınızda yalnızca o veritabanına erişim sağlanır. Ağ erişiminizi veritabanı başına yapılandırılmış durumda tutmak istiyorsanız bu kural yararlı olabilir. Birden fazla veritabanı aynı ağ erişimi düzeyine sahipse sunucu düzeyinde kural kullanarak veritabanındaki tüm sunuculara aynı düzeyde erişim sağlayabilir, yönetimi kolaylaştırabilirsiniz.

Sunucu düzeyinde IP adresi kuralı kullanma

Veritabanı düzeyinde kurallar harika bir seçenektir, ancak appServer VM'nizin bağlanması gereken aynı sunucuda birden çok veritabanınız varsa ne olur? Her veritabanına veritabanı düzeyinde bir kural ekleyebilirsiniz, ancak daha fazla veritabanı eklediğinizde daha fazla işlem yapılabilir. Yönetim çalışmalarınızı azaltmak için sunucu düzeyinde bir kuralla erişime izin verin. Bu kural sunucudaki tüm veritabanları için geçerli olabilir.

Bağlanabilen sistemleri kısıtlamak için sunucu düzeyinde bir IP kuralı kullanın.

  1. sqlcmd isteminden aşağıdaki komutu çalıştırarak veritabanı düzeyinde IP adresi kuralını silin.

    EXECUTE sp_delete_database_firewall_rule N'My Firewall Rule';
    GO
    

    Komut tamamlandıktan sonra sqlcmd'dan çıkmak için girin exit . SSH üzerinden bağlı kalın.

  2. Azure portalında, SQL sunucunuzun Ağ bölmesindeki Güvenlik duvarı kuralları'nın altında Güvenlik duvarı kuralı ekle'yi seçin. Kurala Allow appServer adını verin, Başlangıç IP'sinin ve Bitiş IP'sinin appServer VM'sinin genel IP adresini girin ve tamam'ı seçin.

  3. Kaydet'i seçin.

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

  4. Cloud Shell'e döndüğünüzde appServer VM'nizde veritabanınıza bağlanmayı yeniden deneyin.

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

    Bu noktada bağlanabiliyor olmanız gerekir. Sunucu düzeyindeki kural, appServer VM'sinin genel IP adresine göre erişime izin verir. Bağlantı başarılı olursa bir sqlcmd istemi açılır.

    1>
    

    sqlcmd'dan çıkmak için girin exit . SSH üzerinden bağlı kalın.

Bağlantıyı yalnızca kuralda belirttiğiniz IP adresiyle yalıtmıştınız. Bu yalıtım harika çalışır, ancak bağlanması gereken daha fazla sistem eklediğinizde yine de bir yönetim zorluğu olabilir. Ayrıca statik IP veya tanımlı ip adresi aralığından bir IP gerektirir.

IP adresi dinamikse ve değişirse, bağlantıyı sağlamak için kuralı güncelleştirmeniz gerekir. appServer VM şu anda dinamik bir IP adresiyle yapılandırılmıştır. Bu IP adresinin bir noktada değişme olasılığı yüksektir ve bu durum gerçekleşir gerçekleşmez erişiminizi bozacak. Şimdi sanal ağ kurallarının yapılandırmanızda nasıl yararlı olabileceğine bakın.

Sunucu düzeyinde sanal ağ kuralı kullanma

Bu durumda VM'niz Azure'da çalıştığından, erişimi yalıtmak ve gelecekteki hizmetlerin veritabanına erişim kazanmasını kolaylaştırmak için sunucu düzeyinde bir sanal ağ kuralı kullanabilirsiniz.

  1. Azure portalına dönün ve ağ bölmesindeki Sanal ağlar'ın altında Sanal ağ kuralı ekle'yi seçin.

  2. Sanal ağ kuralı oluştur/güncelleştir iletişim kutusu görüntülenir. Aşağıdaki değerleri ayarlayın.

    Ayar Değer
    Adı Varsayılan değeri değiştirmeyin
    Abonelik Concierge Aboneliği
    Sanal ağ appServerVNET
    Alt ağ adı/Adres ön eki appServerSubnet/10.0.0.0/24
  3. Alt ağda hizmet uç noktasını etkinleştirmek için Etkinleştir'i ve ardından kuralı oluşturmak için uç nokta etkinleştirildikten sonra Tamam'ı seçin.

  4. IP adresi kuralını kaldırın. Allow appServer kuralınızın yanındaki ... öğesini seçin, Sil'i ve ardından Kaydet'i seçin.

  5. Cloud Shell'e döndüğünüzde appServer VM'nizde veritabanınıza bağlanmayı yeniden deneyin.

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

    Bu noktada bağlanabiliyor olmanız gerekir. Başarılı olursa bir sqlcmd istemi görürsünüz.

    1>
    

Burada yaptığınız işlem, SQL sunucusuna genel erişimi etkili bir şekilde kaldırır. Yalnızca tanımladığınız Azure sanal ağındaki belirli alt ağdan erişime izin verir. Bu alt ağa daha fazla uygulama sunucusu eklerseniz ek yapılandırma gerekmez. Bu alt ağdaki herhangi bir sunucu SQL sunucusuna bağlanabiliyor olabilir.

Bu yapılandırma, denetim kapsamınızın dışındaki hizmetlere maruz kalmanızı sınırlar ve daha fazla sunucu eklerseniz yönetimi kolaylaştırır. Bu yöntem, bir Azure SQL Veritabanı ağ erişiminin güvenliğini sağlamak için etkilidir.