Konfigurowanie izolowanego dostępu dla replik nazwanych w warstwie Hiperskala
Dotyczy: Azure SQL Database
W tym artykule opisano procedurę udzielania dostępu do repliki o nazwie Hiperskala usługi Azure SQL Database bez udzielania dostępu do repliki podstawowej lub innych nazwanych replik. Ten scenariusz umożliwia izolację zasobów i zabezpieczeń nazwanej repliki — ponieważ nazwana replika będzie działać przy użyciu własnego węzła obliczeniowego — i jest przydatna przy każdym izolowanym dostępie tylko do odczytu do bazy danych Azure SQL Hiperskala. Izolowane, w tym kontekście oznacza, że procesor CPU i pamięć nie są współużytkowane między repliką podstawową a nazwaną repliką, zapytania uruchomione w nazwanej repliki nie używają zasobów obliczeniowych podstawowego lub innych replik, a podmioty zabezpieczeń, które uzyskują dostęp do nazwanej repliki, nie mogą uzyskać dostępu do innych replik, w tym repliki podstawowej.
Uwaga
Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).
Tworzenie identyfikatora logowania na serwerze podstawowym
master
W bazie danych na serwerze logicznym obsługującym podstawową bazę danych wykonaj następujące czynności, aby utworzyć nowe dane logowania.
Użyj własnego silnego i unikatowego hasła, zastępując strong_password_here
ciąg silnym hasłem.
CREATE LOGIN [third-party-login] WITH PASSWORD = 'strong_password_here';
Pobierz wartość szesnastkowa identyfikatora SID dla utworzonego identyfikatora logowania z sys.sql_logins
widoku systemu:
SELECT SID FROM sys.sql_logins WHERE name = 'third-party-login';
Wyłącz logowanie. Zapobiega to uzyskiwaniu dostępu do dowolnej bazy danych na serwerze hostujący replikę podstawową.
ALTER LOGIN [third-party-login] DISABLE;
Tworzenie użytkownika w podstawowej bazie danych odczytu i zapisu
Po utworzeniu logowania nawiąż połączenie z podstawową repliką odczytu i zapisu bazy danych, na przykład WideWorldImporters (możesz znaleźć przykładowy skrypt, aby przywrócić go tutaj: Przywróć bazę danych w usłudze Azure SQL) i utworzyć użytkownika bazy danych dla tego identyfikatora logowania:
CREATE USER [third-party-user] FROM LOGIN [third-party-login];
Opcjonalnie po utworzeniu użytkownika bazy danych możesz usunąć identyfikator logowania serwera utworzony w poprzednim kroku, jeśli w jakikolwiek sposób wystąpią obawy dotyczące ponownego włączenia logowania. Nawiąż połączenie z bazą master
danych na serwerze logicznym hostem podstawowej bazy danych i wykonaj następujące przykładowe skrypty:
DROP LOGIN [third-party-login];
Tworzenie nazwanej repliki na innym serwerze logicznym
Utwórz nowy serwer logiczny usługi Azure SQL, który ma być używany do izolowania dostępu do nazwanej repliki. Postępuj zgodnie z instrukcjami dostępnymi w temacie Tworzenie serwerów i pojedynczych baz danych oraz zarządzanie nimi w usłudze Azure SQL Database. Aby utworzyć nazwaną replikę, ten serwer musi znajdować się w tym samym regionie świadczenia usługi Azure, co serwer hostująca replikę podstawową.
W poniższym przykładzie zastąp strong_password_here
ciąg silnym hasłem. Na przykład przy użyciu interfejsu wiersza polecenia platformy Azure:
az sql server create -g MyResourceGroup -n MyNamedReplicaServer -l MyLocation --admin-user MyAdminUser --admin-password strong_password_here
Następnie utwórz nazwaną replikę dla podstawowej bazy danych na tym serwerze. Na przykład przy użyciu interfejsu wiersza polecenia platformy Azure:
az sql db replica create -g MyResourceGroup -n WideWorldImporters -s MyPrimaryServer --secondary-type Named --partner-database WideWorldImporters_NR --partner-server MyNamedReplicaServer
Tworzenie identyfikatora logowania na nazwanym serwerze repliki
Nawiąż połączenie z bazą master
danych na serwerze logicznym hostująca nazwaną replikę utworzoną w poprzednim kroku. Zastąp strong_password_here
ciąg silnym hasłem. Dodaj identyfikator logowania przy użyciu identyfikatora SID pobranego z repliki podstawowej:
CREATE LOGIN [third-party-login] WITH PASSWORD = 'strong_password_here', sid = 0x0...1234;
W tym momencie użytkownicy i aplikacje używające third-party-login
nazwy lub bob@contoso.com
mogą łączyć się z nazwaną repliką, ale nie z repliką podstawową.
Udzielanie uprawnień na poziomie obiektu w bazie danych
Po skonfigurowaniu uwierzytelniania logowania zgodnie z opisem możesz użyć zwykłych GRANT
DENY
instrukcji i REVOKE
do zarządzania uprawnieniami autoryzacji lub na poziomie obiektu w bazie danych. W tych instrukcjach należy odwołać się do nazwy użytkownika utworzonego w bazie danych lub roli bazy danych zawierającego tego użytkownika jako członka. Pamiętaj, aby wykonać te polecenia w repliki podstawowej. Zmiany są propagowane do wszystkich replik pomocniczych, ale będą skuteczne tylko w nazwanej repliki, w której utworzono identyfikator logowania na poziomie serwera.
Pamiętaj, że domyślnie nowo utworzony użytkownik ma minimalny zestaw uprawnień przyznanych (na przykład nie może uzyskać dostępu do żadnych tabel użytkowników). Jeśli chcesz zezwolić na third-party-user
odczytywanie danych w tabeli lub bob@contoso.com
odczytywać je, musisz jawnie udzielić SELECT
uprawnienia:
GRANT SELECT ON [Application].[Cities] to [third-party-user];
Alternatywą dla udzielania uprawnień indywidualnie dla każdej tabeli jest dodanie użytkownika do db_datareaders
roli bazy danych, aby zezwolić na dostęp do odczytu do wszystkich tabel lub użyć schematów , aby zezwolić na dostęp do wszystkich istniejących i nowych tabel w schemacie.
Testowanie dostępu
Tę konfigurację można przetestować przy użyciu dowolnego narzędzia klienckiego i spróbować nawiązać połączenie z repliką podstawową i nazwaną. Na przykład przy użyciu polecenia sqlcmd
możesz spróbować nawiązać połączenie z repliką podstawową przy użyciu third-party-login
użytkownika. Zastąp strong_password_here
ciąg silnym hasłem.
sqlcmd -S MyPrimaryServer.database.windows.net -U third-party-login -P strong_password_here -d WideWorldImporters
Spowoduje to błąd, ponieważ użytkownik nie może nawiązać połączenia z serwerem:
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'third-party-login'. Reason: The account is disabled.
Próba nawiązania połączenia z nazwaną repliką powiedzie się. Zastąp strong_password_here
ciąg silnym hasłem.
sqlcmd -S MyNamedReplicaServer.database.windows.net -U third-party-login -P strong_password_here -d WideWorldImporters_NR
Nie są zwracane żadne błędy, a zapytania mogą być wykonywane na nazwanej replice zgodnie z dozwolonymi uprawnieniami na poziomie obiektu.
Powiązana zawartość
- Serwery logiczne Azure SQL, zobacz Co to jest serwer w usłudze Azure SQL Database?
- Zarządzanie dostępem do bazy danych i identyfikatorami logowania— zobacz Zabezpieczenia usługi SQL Database: Zarządzanie dostępem do bazy danych i zabezpieczeniami logowania.
- Uprawnienia aparatu bazy danych, zobacz Uprawnienia.
- Udzielanie uprawnień do obiektu, zobacz GRANT Object Permissions (Uprawnienia obiektu GRANT).