Azure SQL Veritabanı'nda sunucular için sanal ağ hizmet uç noktalarını ve kuralları kullanma
Şunlar için geçerlidir: Azure Synapse Analytics Azure SQL Veritabanı
Sanal ağ kuralları, Azure SQL Veritabanı veritabanlarınız ve elastik havuzlarınız için sunucunun 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 kurmanıza neden en iyi seçenek olduğu açıklanı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 sunucuya başvurur.
Sanal ağ kuralı oluşturmak için öncelikle kuralın başvuracağı bir sanal ağ hizmet uç noktası olmalıdır.
Not
Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.
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 geçebilirsiniz.
Sanal ağ kurallarıyla ilgili ayrıntılar
Bu bölümde sanal ağ kurallarıyla ilgili birkaç ayrıntı 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 etmelerini sağlamaz.
Tüm sanal ağ kuralları, temel alınan uç noktasının geçerli olduğu 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öneticisi (Ağ Katkıda Bulunanı rolü): Uç noktayı açın.
- Veritabanı Yöneticisi (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öneticisi ve Veritabanı Yöneticisi rolleri, sanal ağ kurallarını yönetmek için gerekenden daha fazla özelliğe sahiptir. Yeteneklerinin yalnızca bir alt kümesi gereklidir.
Yalnızca gerekli yetenek alt kümesine sahip tek bir özel rol oluşturmak için Azure'da rol tabanlı erişim denetimi (RBAC) kullanma seçeneğiniz vardır. Özel rol, Ağ Yöneticisi veya Veritabanı Yöneticisi yerine kullanılabilir. Özel bir role kullanıcı 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ı Microsoft Entra 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ı'daki veritabanınızın güvenlik duvarında her sanal ağ kuralı bir alt ağa başvurur. Başvuruda bulunılan tüm alt ağlar, veritabanını barındıran coğrafi bölgede barındırılmalıdır.
- Her sunucunun herhangi bir sanal ağ için en fazla 128 ACL girişi olabilir.
- Sanal ağ kuralları yalnızca Azure Resource Manager sanal ağlarına uygulanır ve 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:
- Siteden siteye (S2S) sanal özel ağ (VPN)
- Azure ExpressRoute aracılığıyla şirket içi
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'lere giden 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
Genel eşleme veya Microsoft eşlemesi için şirket içinden ExpressRoute kullanıyorsanız, 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 genellikle yüksek aktarım hızına sahip veri alımı için Azure Depolama hesaplarından Azure Synapse Analytics'e veri yüklemek için kullanılır. Sınırlardan veri yüklemekte olduğunuz Azure Depolama hesabı yalnızca bir sanal ağ alt ağı kümesine erişiyorsa, 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 Azure Az PowerShell modülünü yükleme bölümüne bakın.
- 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ünde Güvenilen Microsoft hizmetleri 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 omurgası üzerinde 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öneliktirAz.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 Microsoft Entra Id ile kaydedin:
Connect-AzAccount Select-AzSubscription -SubscriptionId <subscriptionId> Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-SQL-servername -AssignIdentity
Azure Synapse Analytics çalışma alanı içindeki ayrılmış SQL havuzları için bu adım 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 bölümünde yer alan 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'ye yü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 sayfasını açmak için Rol ataması ekle'yi> seçin.
Aşağıdaki rolü atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.
Ayar Value Role Depolama Blobu Veri Katılımcısı Şu kişiye erişim ata: Kullanıcı, grup veya hizmet sorumlusu Üyeler Microsoft Entra ID ile 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';
Bu mekanizma, kapakların altında Yönetilen Kimlik kullandığından, Azure Depolama erişim anahtarıyla GİzLİ değerini belirtmenize gerek yoktur. Azure Synapse Analytics çalışma alanı içindeki ayrılmış SQL havuzları için bu adım 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ğ ile güvenliği sağlanan bir Azure Depolama hesabıyla çalışması için KIMLIK 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://myfile@mystorageaccount.dfs.core.windows.net', 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. Tüm dış tablolar için kolayca oluşturma betikleri oluşturmak için Betik Oluşturma ve Yayımlama Sihirbazı'nı kullanabilirsiniz. - 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 . CREATE EXTERNAL DATA SOURCE.
- 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 sorgular.
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, sanal ağ ve güvenlik duvarının arkasındaki bir depolama hesabına denetim yazma konusuna bakın.
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 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ını kullanma
Bu bölümde, SQL Veritabanı'da veritabanınızda sanal ağ kuralı oluşturmak için Azure portalını 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.
Hizmet uç noktaları alt ağ için 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 zaten olmalıdır.
- İlgili uç nokta türü adı Microsoft.Sql'dir.
- Alt ağınız tür adıyla etiketlenmediyse bkz . Alt ağınızın 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 sekmesinin altında, Genel ağ erişiminin Ağ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. Filtrede sanal ağlarınız görüntülenir. 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 sonuçta elde edilen 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ı içindeki herhangi bir alt ağdan gelen iletişimi kabul eder. Bu, Azure veri merkezleri için tanımlanan aralıklar içinde olduğu kabul edilen IP adreslerinden birinden kaynaklanan iletişimdir. Denetimin etkin bırakılması, güvenlik açısından aşırı erişim 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
Aşağıdaki durumlar veya durumlar kurallar için 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 işlem için
Delete
geçerlidir ve kuralın silindiğini ve artık geçerli olmadığını gösterir. - InProgress: İşlemin devam ettiğini gösterir. eski kural, işlem bu durumdayken uygulanır.
Sanal ağ kuralı oluşturmak için PowerShell kullanma
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 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'lerini ç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ındaki Güvenlik Duvarı bölmesinde belirtildiği gibi sanal ağ kurallarıyla ilgilidir.
Hata 40615 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şim izni yok."
Hata açıklaması: İstemci, sanal ağ sunucusu uç noktalarına sahip bir alt ağda bulunuyor. Ancak sunucunun alt ağa veritabanıyla iletişim kurma hakkı veren bir sanal ağ kuralı yoktur.
Hata çözümlemesi: Azure portalının Güvenlik Duvarı bölmesinde, alt ağ için bir sanal ağ kuralı eklemek için sanal ağ kuralları denetimini kullanın.
40615 Hatası
İleti metni: "Oturum açma tarafından istenen '{0}' sunucusu açılamıyor. '{1}' IP adresli 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ındaki 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ı