Azure SQL Veritabanı'nda sunucular için sanal ağ hizmet uç noktalarını ve kuralları kullanma
Şunlar için geçerlidir: Azure SQL Veritabanı Azure Synapse Analizi
Sanal ağ kuralları, Azure SQL Veritabanındaki veritabanlarınız ve elastik havuzlarınız veya Azure Synapse Analytics'teki ayrılmış SQL havuzu (eski adı SQL DW) veritabanlarınız için sunucunun sanal ağlardaki belirli alt ağlardan gönderilen iletişimleri kabul edip etmediğini denetleen bir güvenlik duvarı güvenlik özelliğidir. Bu makalede, sanal ağ kurallarının SQL Veritabanı ve Azure Synapse Analytics'te veritabanınızla güvenli bir şekilde iletişim sağlamak için neden en iyi seçeneğiniz olduğu açıklanmaktadır.
Not
Bu makale hem SQL Veritabanı hem de Azure Synapse Analytics için geçerlidir. Kolaylık olması için veritabanı terimi hem SQL Veritabanı hem de Azure Synapse Analytics'teki veritabanlarını ifade eder. Benzer şekilde, sunucuya yapılan tüm başvurular SQL Veritabanı ve Azure Synapse Analytics'i barındıran mantıksal SQL sunucusuna başvurur.
Sanal ağ kuralı oluşturmak için önce kuralın başvuracağı bir sanal ağ hizmet uç noktası olmalıdır.
Sanal ağ kuralı oluşturma
Yalnızca bir sanal ağ kuralı oluşturmak istiyorsanız , bu makalenin devamında yer alan adımlara ve açıklamaya atlayabilirsiniz.
Sanal ağ kuralları hakkındaki ayrıntılar
Bu bölümde sanal ağ kurallarıyla ilgili çeşitli ayrıntılar açıklanmaktadır.
Yalnızca bir coğrafi bölge
Her sanal ağ hizmet uç noktası yalnızca bir Azure bölgesine uygulanır. Uç nokta, diğer bölgelerin alt ağdan gelen iletişimi kabul etmesini sağlamaz.
Tüm sanal ağ kuralları, temel alınan uç noktasının uygulandığı bölgeyle sınırlıdır.
Veritabanı düzeyi değil sunucu düzeyi
Her sanal ağ kuralı yalnızca sunucudaki belirli bir veritabanı için değil tüm sunucunuz için geçerlidir. Başka bir deyişle, sanal ağ kuralları veritabanı düzeyinde değil sunucu düzeyinde uygulanır.
Buna karşılık, IP kuralları her iki düzeyde de uygulanabilir.
Güvenlik yönetimi rolleri
Sanal ağ hizmet uç noktalarının yönetiminde güvenlik rollerinin ayrımı vardır. Aşağıdaki rollerin her biri için eylem gereklidir:
- Ağ Yönetici (Ağ Katılımcısı rolü): Uç noktayı açın.
- Veritabanı Yönetici (SQL Server Katkıda Bulunan rolü): Verilen alt ağı sunucuya eklemek için erişim denetimi listesini (ACL) güncelleştirin.
Azure RBAC alternatifi
Ağ Yönetici ve Veritabanı Yönetici rolleri, sanal ağ kurallarını yönetmek için gerekenden daha fazla özelliğe sahiptir. Yeteneklerinin yalnızca bir alt kümesi gereklidir.
Azure'da rol tabanlı erişim denetimini (RBAC) kullanarak yalnızca gerekli özelliklerin alt kümesine sahip tek bir özel rol oluşturabilirsiniz. Özel rol, Ağ Yönetici veya Veritabanı Yönetici dahil etmek yerine kullanılabilir. Bir kullanıcıyı özel bir role eklerseniz ve kullanıcıyı diğer iki ana yönetici rolüne eklerseniz, güvenlik açıklarınızın yüzey alanı daha düşüktür.
Not
Bazı durumlarda, SQL Veritabanı ve sanal ağ alt ağındaki veritabanı farklı aboneliklerdedir. Bu gibi durumlarda, aşağıdaki yapılandırmalardan emin olmanız gerekir:
- Her iki abonelik de aynı Azure Active Directory (Azure AD) kiracısında olmalıdır.
- Kullanıcı, hizmet uç noktalarını etkinleştirme ve verilen sunucuya sanal ağ alt ağı ekleme gibi işlemleri başlatmak için gerekli izinlere sahiptir.
- Her iki abonelikte de Microsoft.Sql sağlayıcısı kayıtlı olmalıdır.
Sınırlamalar
SQL Veritabanı için sanal ağ kuralları özelliği aşağıdaki sınırlamalara sahiptir:
- SQL Veritabanı'deki veritabanınızın güvenlik duvarında her sanal ağ kuralı bir alt ağa başvurur. Tüm bu başvuruda bulunılan alt ağlar, veritabanını barındıran coğrafi bölgede barındırılmalıdır.
- Her sunucuda herhangi bir sanal ağ için en fazla 128 ACL girişi olabilir.
- Sanal ağ kuralları yalnızca Azure Resource Manager sanal ağları için geçerlidir, klasik dağıtım modeli ağlarına uygulanmaz.
- Sanal ağ hizmet uç noktalarının SQL Veritabanı olarak açılması, MySQL için Azure Veritabanı ve PostgreSQL için Azure Veritabanı için uç noktaları da etkinleştirir. Uç noktalar ON olarak ayarlandığında uç noktalardan MySQL için Azure Veritabanı veya PostgreSQL için Azure Veritabanı örneklerinize bağlanma girişimleri başarısız olabilir.
- Temel neden, MySQL için Azure Veritabanı ve PostgreSQL için Azure Veritabanı büyük olasılıkla yapılandırılmış bir sanal ağ kuralına sahip olmamalarıdır. MySQL için Azure Veritabanı ve PostgreSQL için Azure Veritabanı için bir sanal ağ kuralı yapılandırmanız gerekir.
- Özel uç noktalarla yapılandırılmış bir SQL mantıksal sunucusunda sanal ağ güvenlik duvarı kurallarını tanımlamak için Genel ağ erişimini reddet seçeneğini Hayır olarak ayarlayın.
- Güvenlik duvarında IP adresi aralıkları aşağıdaki ağ öğelerine uygulanır, ancak sanal ağ kuralları geçerli değildir:
Hizmet uç noktalarını kullanırken dikkat edilmesi gerekenler
SQL Veritabanı için hizmet uç noktalarını kullandığınızda aşağıdaki noktaları gözden geçirin:
- Azure SQL Veritabanı genel IP'lerine giden bağlantı gereklidir. Bağlantıya izin vermek için ağ güvenlik gruplarının (NSG) SQL Veritabanı IP'lere açılması gerekir. Bunu, SQL Veritabanı için NSG hizmet etiketlerini kullanarak yapabilirsiniz.
ExpressRoute
Şirket içinden ExpressRoute kullanıyorsanız, genel eşleme veya Microsoft eşlemesi için kullanılan NAT IP adreslerini tanımlamanız gerekir. Ortak eşleme için, her bir ExpressRoute varsayılan olarak bağlantı hattında trafik Microsoft Azure omurga ağına girdiğinde Azure hizmet trafiğine uygulanan iki NAT IP adresi kullanılır. Microsoft eşlemesi için, kullanılan NAT IP adresleri müşteri veya hizmet sağlayıcısı tarafından sağlanır. Hizmet kaynaklarınıza erişime izin vermek için, bu genel IP adreslerine kaynak IP güvenlik duvarı ayarında izin vermeniz gerekir. Ortak eşleme ExpressRoute bağlantı hattı IP adreslerinizi bulmak için Azure portalında ExpressRoute ile bir destek bileti açın. ExpressRoute genel ve Microsoft eşlemesi için NAT hakkında daha fazla bilgi edinmek için bkz. Azure genel eşlemesi için NAT gereksinimleri.
Bağlantı hattınızdan SQL Veritabanı iletişimine izin vermek için NAT'nizin genel IP adresleri için IP ağ kuralları oluşturmanız gerekir.
Azure Depolama ile sanal ağ hizmet uç noktalarını kullanmanın etkisi
Azure Depolama da, Azure Depolama hesabınızın bağlantılarını sınırlandırmanıza imkan tanıyan aynı özelliğe sahiptir. Bu özelliği SQL Veritabanı'nin kullandığı bir Azure Depolama hesabıyla kullanmayı seçerseniz sorunlarla karşılaşabilirsiniz. Bundan etkilenen SQL Veritabanı ve Azure Synapse Analytics özelliklerinin listesi ve tartışması aşağıdadır.
Azure Synapse Analytics PolyBase ve COPY deyimi
PolyBase ve COPY deyimi, yüksek aktarım hızı veri alımı için Azure Depolama hesaplarından Azure Synapse Analytics'e veri yüklemek için yaygın olarak kullanılır. Verileri yüklemekte olduğunuz Azure Depolama hesabı yalnızca bir sanal ağ alt ağı kümesine erişimi sınırlarsa, PolyBase kullandığınızda bağlantı ve depolama hesabına COPY deyimi kesilir. Sanal ağa güvenli hale getirilen Azure Depolama'ya bağlanan Azure Synapse Analytics ile COPY ve PolyBase kullanarak içeri ve dışarı aktarma senaryolarını etkinleştirmek için bu bölümdeki adımları izleyin.
Önkoşullar
- Azure PowerShell'i yükleyin. Daha fazla bilgi için bkz. Azure Az PowerShell modülünü yükleme.
- Genel amaçlı v1 veya Azure Blob Depolama hesabınız varsa, önce Genel amaçlı v2 depolama hesabına yükseltme'deki adımları izleyerek genel amaçlı v2'ye yükseltmeniz gerekir.
- Azure Depolama hesabı Güvenlik duvarları ve Sanal ağlar ayarları menüsünün altında Güvenilen Microsoft hizmetlerinin bu depolama hesabına erişmesine izin ver seçeneğinin açık olması gerekir. Bu yapılandırmanın etkinleştirilmesi PolyBase ve COPY deyiminin, ağ trafiğinin Azure omurgada kaldığı güçlü kimlik doğrulamasını kullanarak depolama hesabına bağlanmasına olanak tanır. Daha fazla bilgi için bu kılavuza bakın.
Önemli
PowerShell Azure Resource Manager modülü Azure SQL Veritabanı tarafından hala desteklenmektedir ancak gelecekteki tüm geliştirmeler modüle yöneliktir
Az.Sql. AzureRM modülü en az Aralık 2020'ye kadar hata düzeltmeleri almaya devam edecektir. Az modülündeki ve AzureRm modüllerindeki komutların bağımsız değişkenleri önemli ölçüde aynıdır. Uyumlulukları hakkında daha fazla bilgi için bkz. Yeni Azure PowerShell Az modülüne giriş.
Adımlar
Tek başına ayrılmış bir SQL havuzunuz (eski adı SQL DW) varsa PowerShell kullanarak SQL sunucunuzu Azure AD kaydedin:
Connect-AzAccount Select-AzSubscription -SubscriptionId <subscriptionId> Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-SQL-servername -AssignIdentity
Bu adım, Azure Synapse Analytics çalışma alanı içindeki ayrılmış SQL havuzları için gerekli değildir. Çalışma alanının sistem tarafından atanan yönetilen kimliği (SA-MI), Synapse Yöneticisi rolünün bir üyesidir ve bu nedenle çalışma alanının ayrılmış SQL havuzlarında yükseltilmiş ayrıcalıklara sahiptir.
Depolama hesabı oluşturma'daki adımları izleyerek genel amaçlı v2 Depolama Hesabıoluşturun.
- Genel amaçlı v1 veya Blob Depolama hesabınız varsa, önce Genel amaçlı v2 depolama hesabına yükseltme'deki adımları izleyerek v2'yeyükseltmeniz gerekir.
- Azure Data Lake Storage 2. Nesil ile ilgili bilinen sorunlar için bkz. Azure Data Lake Storage 2. Nesil ile ilgili bilinen sorunlar.
Depolama hesabı sayfanızda Erişim denetimi (IAM) öğesini seçin.
Rol ataması ekle'yi> seçerek Rol ataması ekle sayfasını açın.
Aşağıdaki rolü atayın. Ayrıntılı adımlar için bkz. Azure portal kullanarak Azure rolleri atama.
Ayar Değer Rol Depolama Blob Verileri Katkıda Bulunanı Şunlara erişim ata: Kullanıcı, grup veya hizmet sorumlusu Üyeler Azure AD kaydettiğiniz ayrılmış SQL havuzunuzu barındıran sunucu veya çalışma alanı
Not
Bu adımı yalnızca depolama hesabında Sahip ayrıcalığına sahip üyeler gerçekleştirebilir. Çeşitli Azure yerleşik rolleri için bkz. Azure yerleşik rolleri.
Azure Depolama hesabına PolyBase bağlantısını etkinleştirmek için:
Daha önce oluşturmadıysanız bir veritabanı ana anahtarı oluşturun.
CREATE MASTER KEY [ENCRYPTION BY PASSWORD = 'somepassword'];
IDENTITY = 'Yönetilen Hizmet Kimliği' ile veritabanı kapsamlı bir kimlik bilgisi oluşturun.
CREATE DATABASE SCOPED CREDENTIAL msi_cred WITH IDENTITY = 'Managed Service Identity';
Azure Depolama erişim anahtarıyla SECRET belirtmeye gerek yoktur, çünkü bu mekanizma gizli diziler altında Yönetilen Kimlik kullanır. Bu adım, Azure Synapse Analytics çalışma alanı içindeki ayrılmış SQL havuzları için gerekli değildir. Çalışma alanının sistem tarafından atanan yönetilen kimliği (SA-MI), Synapse Yöneticisi rolünün bir üyesidir ve bu nedenle çalışma alanının ayrılmış SQL havuzlarında yükseltilmiş ayrıcalıklara sahiptir.
PolyBase bağlantısının sanal ağa güvenli bir Azure Depolama hesabıyla çalışması için IDENTITY adı 'Yönetilen Hizmet Kimliği' olmalıdır.
-
PolyBase kullanarak genel amaçlı v2 depolama hesabınıza bağlanma şemasıyla
abfss://bir dış veri kaynağı oluşturun.
CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss WITH (TYPE = hadoop, LOCATION = 'abfss://email@example.com', CREDENTIAL = msi_cred);
- Genel amaçlı v1 veya Blob Depolama hesabıyla ilişkilendirilmiş dış tablolarınız zaten varsa, önce bu dış tabloları bırakmanız gerekir. Ardından ilgili dış veri kaynağını bırakın. Ardından, daha önce gösterildiği gibi genel amaçlı v2 depolama hesabına bağlanan şemayla
abfss://bir dış veri kaynağı oluşturun. Ardından bu yeni dış veri kaynağını kullanarak tüm dış tabloları yeniden oluşturun. Betik Oluşturma ve Yayımlama Sihirbazı'nı kullanarak tüm dış tablolar için kolayca betik oluşturabilirsiniz.
- Düzen hakkında
abfss://daha fazla bilgi için bkz. Azure Data Lake Storage 2. Nesil URI'sini kullanma.
- T-SQL komutları hakkında daha fazla bilgi için bkz. EXTERNAL DATA SOURCE OLUŞTURMA.
- Genel amaçlı v1 veya Blob Depolama hesabıyla ilişkilendirilmiş dış tablolarınız zaten varsa, önce bu dış tabloları bırakmanız gerekir. Ardından ilgili dış veri kaynağını bırakın. Ardından, daha önce gösterildiği gibi genel amaçlı v2 depolama hesabına bağlanan şemayla
Dış tabloları kullanarak normal şekilde sorgula.
-
blob denetimini SQL Veritabanı
Azure SQL denetimi, SQL denetim günlüklerini kendi depolama hesabınıza yazabilir. Bu depolama hesabı sanal ağ hizmet uç noktaları özelliğini kullanıyorsa bkz. Sanal ağ ve güvenlik duvarının arkasındaki bir depolama hesabına denetim yazma.
Sunucunuza sanal ağ güvenlik duvarı kuralı ekleme
Uzun zaman önce, bu özellik geliştirilmeden önce, güvenlik duvarında canlı bir sanal ağ kuralı uygulayabilmeniz için önce sanal ağ hizmet uç noktalarını açmanız gerekiyordu. Uç noktalar, belirli bir sanal ağ alt ağını SQL Veritabanı'deki bir veritabanıyla ilişkilendirmektedir. Ocak 2018 itibarıyla IgnoreMissingVNetServiceEndpoint bayrağını ayarlayarak bu gereksinimi aşabilirsiniz. Artık sanal ağ hizmet uç noktalarını açmadan sunucunuza bir sanal ağ güvenlik duvarı kuralı ekleyebilirsiniz.
Yalnızca güvenlik duvarı kuralı ayarlamak sunucunun güvenliğini sağlamaya yardımcı olmaz. Güvenliğin etkili olması için sanal ağ hizmet uç noktalarını da açmanız gerekir. Hizmet uç noktalarını açtığınızda, sanal ağ alt ağınız kapalı olandan açık duruma geçişi tamamlayana kadar kapalı kalma süresi yaşar. Bu kapalı kalma süresi özellikle büyük sanal ağlar bağlamında geçerlidir. Geçiş sırasında kapalı kalma süresini azaltmak veya ortadan kaldırmak için IgnoreMissingVNetServiceEndpoint bayrağını kullanabilirsiniz.
IgnoreMissingVNetServiceEndpoint bayrağını PowerShell kullanarak ayarlayabilirsiniz. Daha fazla bilgi için bkz. SQL Veritabanı için bir sanal ağ hizmet uç noktası ve kuralı oluşturmak için PowerShell.
Not
Azure Synapse Analytics'teki benzer yönergeler için bkz. Azure Synapse Analytics IP güvenlik duvarı kuralları
Sanal ağ kuralı oluşturmak için Azure portal kullanma
Bu bölümde, SQL Veritabanı'de veritabanınızda sanal ağ kuralı oluşturmak için Azure portal nasıl kullanabileceğiniz gösterilmektedir. Kural, veritabanınıza sanal ağ hizmet uç noktası olarak etiketlenmiş belirli bir alt ağdan gelen iletişimi kabul etmelerini söyler.
Not
Sunucunuzun sanal ağ güvenlik duvarı kurallarına bir hizmet uç noktası eklemek istiyorsanız, önce alt ağ için hizmet uç noktalarının açık olduğundan emin olun.
Alt ağ için hizmet uç noktaları açık değilse portal bunları etkinleştirmenizi ister. Kuralı eklediğiniz bölmede Etkinleştir düğmesini seçin.
Önkoşullar
SQL Veritabanı ile ilgili belirli bir sanal ağ hizmet uç noktası türü adıyla etiketlenmiş bir alt ağınız olması gerekir.
- İlgili uç nokta türü adı Microsoft.Sql'dir.
- Alt ağınız tür adıyla etiketlenmiyorsa bkz. Alt ağınızın bir uç nokta olduğunu doğrulama.
Azure portal adımları
Azure Portal’ında oturum açın.
SQL sunucularını arayıp seçin ve ardından sunucunuzu seçin. Güvenlik'in altında Ağ'ı seçin.
Genel erişim sekmesinde, Genel ağ erişimi'ninAğları seç olarak ayarlandığından emin olun, aksi takdirde Sanal ağlar ayarları gizlenir. Sanal ağlar bölümünde + Var olan sanal ağı ekle'yi seçin.
Yeni Oluştur/Güncelleştir bölmesinde, kutuları Azure kaynaklarınızın adlarıyla doldurun.
İpucu
Alt ağınız için doğru adres ön ekini eklemeniz gerekir. Adres ön eki değerini portalda bulabilirsiniz. Tüm kaynaklar>Tüm türler>Sanal ağlar'a gidin. Filtre, sanal ağlarınızı görüntüler. Sanal ağınızı ve ardından Alt ağlar'ı seçin. ADRES ARALIĞI sütununda ihtiyacınız olan adres ön eki bulunur.
Güvenlik Duvarı bölmesinde ortaya çıkan sanal ağ kuralına bakın.
Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver seçeneğini Hayır olarak ayarlayın.
Önemli
Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver seçeneğini işaretli bırakırsanız, sunucunuz Azure sınırındaki herhangi bir alt ağdan gelen iletişimi kabul eder. Bu, Azure veri merkezleri için tanımlanan aralıklar içindekiler olarak tanınan IP adreslerinden birinden kaynaklanan iletişimdir. Denetimin etkin bırakılması, güvenlik açısından aşırı erişime neden olabilir. Microsoft Azure Sanal Ağ hizmet uç noktası özelliği, SQL Veritabanı sanal ağ kuralları özelliğiyle eşgüdümlü olarak güvenlik yüzeyi alanınızı azaltabilir.
Bölmenin alt kısmındaki Tamam düğmesini seçin.
Not
Kurallar için aşağıdaki durumlar veya durumlar geçerlidir:
- Hazır: Başlattığınız işlemin başarılı olduğunu gösterir.
- Başarısız: Başlattığınız işlemin başarısız olduğunu gösterir.
- Silindi: Yalnızca Silme işlemi için geçerlidir ve kuralın silindiğini ve artık geçerli olmadığını gösterir.
- InProgress: İşlemin devam ettiğini gösterir. İşlem bu durumdayken eski kural uygulanır.
PowerShell kullanarak sanal ağ kuralı oluşturma
Betik, PowerShell cmdlet'ini
New-AzSqlServerVirtualNetworkRule veya az network vnet create komutunu kullanarak sanal ağ kuralları da oluşturabilir. Daha fazla bilgi için bkz. SQL Veritabanı için bir sanal ağ hizmet uç noktası ve kuralı oluşturmak için PowerShell.
Sanal ağ kuralı oluşturmak için REST API kullanma
DAHILI olarak, SQL sanal ağ eylemleri için PowerShell cmdlet'leri REST API'leri çağırır. REST API'lerini doğrudan çağırabilirsiniz. Daha fazla bilgi için bkz. Sanal ağ kuralları: İşlemler.
40914 ve 40615 hatalarını giderme
Bağlantı hatası 40914, Azure portal Güvenlik Duvarı bölmesinde belirtildiği gibi sanal ağ kurallarıyla ilgilidir. Hata 40615 de benzerdir, ancak güvenlik duvarındaki IP adresi kurallarıyla ilgilidir.
Hata 40914
İleti metni: "Oturum açma tarafından istenen '[sunucu-adı]' sunucusu açılamıyor. İstemcinin sunucuya erişmesine izin verilmiyor."
Hata açıklaması: İstemci, sanal ağ sunucusu uç noktalarına sahip bir alt ağda yer alır. Ancak sunucunun alt ağa veritabanıyla iletişim kurma hakkı veren bir sanal ağ kuralı yoktur.
Hata çözümü: Azure portal Güvenlik Duvarı bölmesinde, alt ağ için bir sanal ağ kuralı eklemek üzere sanal ağ kuralları denetimini kullanın.
40615 Hatası
İleti metni: "Oturum açma tarafından istenen '{0}' sunucusu açılamıyor. '{1}' IP adresine sahip istemcinin sunucuya erişmesine izin verilmiyor."
Hata açıklaması: İstemci, sunucuya bağlanma yetkisi olmayan bir IP adresinden bağlanmaya çalışıyor. Sunucu güvenlik duvarı, bir istemcinin verilen IP adresinden veritabanına iletişim kurmasına izin veren bir IP adresi kuralına sahip değildir.
Hata çözümü: İstemcinin IP adresini bir IP kuralı olarak girin. Bu adımı gerçekleştirmek için Azure portal Güvenlik Duvarı bölmesini kullanın.
İlgili makaleler:
- Azure sanal ağ hizmet uç noktaları
- Sunucu düzeyinde ve veritabanı düzeyinde güvenlik duvarı kuralları