Adlandırılmış çoğaltmalar için hiper ölçek için yalıtılmış erişimi yapılandırma
Şunlar için geçerlidir: Azure SQL Veritabanı
Bu makalede, birincil çoğaltmaya veya diğer adlandırılmış çoğaltmalara erişim vermeden Azure SQL Veritabanı Hiper Ölçek adlı çoğaltmaya erişim verme yordamı açıklanmaktadır. Bu senaryo adlandırılmış çoğaltmanın kaynak ve güvenlik yalıtımına olanak tanır; adlandırılmış çoğaltma kendi işlem düğümü kullanılarak çalıştırılacağından ve Azure SQL Hiper Ölçek veritabanına yalıtılmış salt okunur erişim gerektiğinde kullanışlıdır. Yalıtılmış, bu bağlamda, CPU ve belleğin birincil ve adlandırılmış çoğaltma arasında paylaşılmaması, adlandırılmış çoğaltmada çalıştırılan sorguların birincil çoğaltmanın veya diğer çoğaltmaların işlem kaynaklarını kullanmadığı ve adlandırılmış çoğaltmaya erişen sorumluların birincil çoğaltma dahil olmak üzere diğer çoğaltmalara erişemeyeceği anlamına gelir.
Not
Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.
Birincil sunucuda oturum açma oluşturma
master
Birincil veritabanını barındıran mantıksal sunucudaki veritabanında, yeni bir oturum açma bilgisi oluşturmak için aşağıdakileri yürütebilirsiniz.
Kendi güçlü ve benzersiz parolanızı kullanın, yerine strong_password_here
güçlü parolayı kullanın.
CREATE LOGIN [third-party-login] WITH PASSWORD = 'strong_password_here';
Sistem görünümünden oluşturulan oturum açma bilgileri sys.sql_logins
için SID onaltılık değerini alın:
SELECT SID FROM sys.sql_logins WHERE name = 'third-party-login';
Oturum açmayı devre dışı bırakın. Bu, bu oturum açma işleminin birincil çoğaltmayı barındıran sunucudaki herhangi bir veritabanına erişmesini engeller.
ALTER LOGIN [third-party-login] DISABLE;
Birincil okuma-yazma veritabanında kullanıcı oluşturma
Oturum açma bilgileri oluşturulduktan sonra, veritabanınızın birincil okuma-yazma çoğaltmasına bağlanın, örneğin WideWorldImporters (burada geri yüklemek için örnek bir betik bulabilirsiniz: Azure SQL'de Veritabanını Geri Yükleme) ve bu oturum açma için bir veritabanı kullanıcısı oluşturun:
CREATE USER [third-party-user] FROM LOGIN [third-party-login];
İsteğe bağlı bir adım olarak, veritabanı kullanıcısı oluşturulduktan sonra, oturum açmanın herhangi bir şekilde yeniden etkinleştirilmesi konusunda endişeler varsa önceki adımda oluşturulan sunucu oturum açma bilgilerini bırakabilirsiniz. master
Birincil veritabanını barındıran mantıksal sunucudaki veritabanına bağlanın ve aşağıdaki örnek betikleri yürütün:
DROP LOGIN [third-party-login];
Farklı bir mantıksal sunucuda adlandırılmış çoğaltma oluşturma
Adlandırılmış çoğaltmaya erişimi yalıtmak için kullanılacak yeni bir Azure SQL mantıksal sunucusu oluşturun. Azure SQL Veritabanı'de sunucuları ve tek veritabanlarını oluşturma ve yönetme başlığında sağlanan yönergeleri izleyin. Adlandırılmış çoğaltma oluşturmak için bu sunucunun birincil çoğaltmayı barındıran sunucuyla aynı Azure bölgesinde olması gerekir.
Aşağıdaki örnekte değerini güçlü parolanızla değiştirin strong_password_here
. Örneğin, Azure CLI kullanarak:
az sql server create -g MyResourceGroup -n MyNamedReplicaServer -l MyLocation --admin-user MyAdminUser --admin-password strong_password_here
Ardından, bu sunucudaki birincil veritabanı için adlandırılmış bir çoğaltma oluşturun. Örneğin, Azure CLI kullanarak:
az sql db replica create -g MyResourceGroup -n WideWorldImporters -s MyPrimaryServer --secondary-type Named --partner-database WideWorldImporters_NR --partner-server MyNamedReplicaServer
Adlandırılmış çoğaltma sunucusunda oturum açma oluşturma
master
Önceki adımda oluşturulan adlandırılmış çoğaltmayı barındıran mantıksal sunucudaki veritabanına bağlanın. değerini güçlü parolanızla değiştirin strong_password_here
. Birincil çoğaltmadan alınan SID'yi kullanarak oturum açmayı ekleyin:
CREATE LOGIN [third-party-login] WITH PASSWORD = 'strong_password_here', sid = 0x0...1234;
Bu noktada, veya bob@contoso.com
kullanan third-party-login
kullanıcılar ve uygulamalar adlandırılmış çoğaltmaya bağlanabilir, ancak birincil çoğaltmaya bağlanamayabilir.
Veritabanı içinde nesne düzeyinde izinler verme
Oturum açma kimlik doğrulamasını açıklandığı gibi ayarladıktan sonra, yetkilendirmeyi veya veritabanındaki nesne düzeyinde izinleri yönetmek için normal GRANT
ve DENY
REVOKE
deyimlerini kullanabilirsiniz. Bu deyimlerde, veritabanında oluşturduğunuz kullanıcının adına veya bu kullanıcıyı üye olarak içeren bir veritabanı rolüne başvurun. Bu komutları birincil çoğaltmada yürütmeyi unutmayın. Değişiklikler tüm ikincil çoğaltmalara yayılır, ancak bunlar yalnızca sunucu düzeyinde oturum açmanın oluşturulduğu adlandırılmış çoğaltmada etkili olur.
Yeni oluşturulan bir kullanıcının varsayılan olarak en az sayıda izni olduğunu unutmayın (örneğin, hiçbir kullanıcı tablosuna erişemez). Bir tablodaki verilere izin third-party-user
vermek veya bob@contoso.com
verileri okumak istiyorsanız, açıkça şu izni vermeniz SELECT
gerekir:
GRANT SELECT ON [Application].[Cities] to [third-party-user];
Her tabloda ayrı ayrı izin vermenin alternatifi olarak, kullanıcıyı veritabanı rolüne db_datareaders
ekleyerek tüm tablolara okuma erişimine izin verebilir veya şemalardaki tüm mevcut ve yeni tablolara erişim izni vermek için şemaları kullanabilirsiniz.
Erişimi test et
Herhangi bir istemci aracını kullanarak bu yapılandırmayı test edebilir ve birincil ve adlandırılmış çoğaltmaya bağlanmayı deneyin. Örneğin, kullanarak sqlcmd
, kullanıcıyı kullanarak birincil çoğaltmaya bağlanmayı third-party-login
deneyebilirsiniz. değerini güçlü parolanızla değiştirin strong_password_here
.
sqlcmd -S MyPrimaryServer.database.windows.net -U third-party-login -P strong_password_here -d WideWorldImporters
Kullanıcının sunucuya bağlanmasına izin verilmediğinden bu hatayla sonuçlanır:
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'third-party-login'. Reason: The account is disabled.
Adlandırılmış çoğaltmaya bağlanma girişimi başarılı olur. değerini güçlü parolanızla değiştirin strong_password_here
.
sqlcmd -S MyNamedReplicaServer.database.windows.net -U third-party-login -P strong_password_here -d WideWorldImporters_NR
Hiçbir hata döndürülmüyor ve adlandırılmış çoğaltmada nesne düzeyinde izin verilen izinler tarafından izin verilen sorgular yürütülebilir.
İlgili içerik
- Azure SQL mantıksal Sunucuları, bkz. Azure SQL Veritabanı'da sunucu nedir?
- Veritabanı erişimini ve oturum açma bilgilerini yönetme, bkz. SQL Veritabanı güvenliği: Veritabanı erişimini ve oturum açma güvenliğini yönetme.
- Veritabanı altyapısı izinleri, bkz . İzinler.
- Nesne izinleri verme, bkz . GRANT Object Permissions.