Konfigurace izolovaného přístupu pro pojmenované repliky Hyperscale
Platí pro: Azure SQL Database
Tento článek popisuje postup udělení přístupu k pojmenované replice hyperškálování služby Azure SQL Database bez udělení přístupu k primární replice nebo jiným pojmenovaným replikám. Tento scénář umožňuje izolaci prostředků a zabezpečení pojmenované repliky – protože pojmenovaná replika bude spuštěna pomocí vlastního výpočetního uzlu – a je užitečná při každém potřeba izolovaného přístupu jen pro čtení k databázi Azure SQL Hyperscale. Izolované v tomto kontextu znamená, že procesor a paměť se mezi primární a pojmenovanou replikou nesdílí, dotazy spuštěné na pojmenované replice nepoužívají výpočetní prostředky primárních nebo jiných replik a objekty zabezpečení, které přistupují k pojmenované replice, nemají přístup k jiným replikám, včetně primární repliky.
Poznámka:
ID Microsoft Entra se dříve označovalo jako Azure Active Directory (Azure AD).
Vytvoření přihlášení na primárním serveru
master
V databázi na logickém serveru, který je hostitelem primární databáze, vytvořte nové přihlášení spuštěním následujícího příkazu.
Použijte vlastní silné a jedinečné heslo a nahraďte strong_password_here
ho silným heslem.
CREATE LOGIN [third-party-login] WITH PASSWORD = 'strong_password_here';
Načtěte šestnáctkovou hodnotu SID pro vytvořené přihlášení ze systémového sys.sql_logins
zobrazení:
SELECT SID FROM sys.sql_logins WHERE name = 'third-party-login';
Zakažte přihlášení. Toto přihlášení zabrání přístupu k jakékoli databázi na serveru, který je hostitelem primární repliky.
ALTER LOGIN [third-party-login] DISABLE;
Vytvoření uživatele v primární databázi pro čtení i zápis
Po vytvoření přihlášení se připojte k primární replice pro čtení i zápis vaší databáze, například WideWorldImporters (tady najdete ukázkový skript pro obnovení databáze v Azure SQL) a vytvořte uživatele databáze pro toto přihlášení:
CREATE USER [third-party-user] FROM LOGIN [third-party-login];
Jako volitelný krok můžete po vytvoření uživatele databáze vypustit přihlášení k serveru vytvořenému v předchozím kroku, pokud máte obavy o opětovné povolení přihlášení jakýmkoli způsobem. Připojte se k master
databázi na logickém serveru, který je hostitelem primární databáze, a spusťte následující ukázkové skripty:
DROP LOGIN [third-party-login];
Vytvoření pojmenované repliky na jiném logickém serveru
Vytvořte nový logický server Azure SQL, který se použije k izolaci přístupu k pojmenované replice. Postupujte podle pokynů dostupných v tématu Vytvoření a správa serverů a jednoúčelových databází ve službě Azure SQL Database. Pokud chcete vytvořit pojmenovanou repliku, musí být tento server ve stejné oblasti Azure jako server, který je hostitelem primární repliky.
V následující ukázce nahraďte strong_password_here
silným heslem. Například pomocí Azure CLI:
az sql server create -g MyResourceGroup -n MyNamedReplicaServer -l MyLocation --admin-user MyAdminUser --admin-password strong_password_here
Pak vytvořte pojmenovanou repliku pro primární databázi na tomto serveru. Například pomocí Azure CLI:
az sql db replica create -g MyResourceGroup -n WideWorldImporters -s MyPrimaryServer --secondary-type Named --partner-database WideWorldImporters_NR --partner-server MyNamedReplicaServer
Vytvoření přihlášení na pojmenovaném serveru repliky
Připojte se k master
databázi na logickém serveru hostujícím pojmenovanou repliku vytvořenou v předchozím kroku. Nahraďte strong_password_here
silným heslem. Přidejte přihlášení pomocí identifikátoru SID načteného z primární repliky:
CREATE LOGIN [third-party-login] WITH PASSWORD = 'strong_password_here', sid = 0x0...1234;
V tomto okamžiku se uživatelé a aplikace používající third-party-login
nebo bob@contoso.com
můžou připojit k pojmenované replice, ale ne k primární replice.
Udělení oprávnění na úrovni objektu v databázi
Jakmile nastavíte ověřování přihlášení, jak je popsáno, můžete použít běžné GRANT
DENY
příkazy a REVOKE
příkazy ke správě autorizace nebo oprávnění na úrovni objektu v databázi. V těchto příkazech použijte odkaz na jméno uživatele, kterého jste vytvořili v databázi, nebo na roli databáze, která zahrnuje tohoto uživatele jako člena. Nezapomeňte tyto příkazy spustit na primární replice. Změny se šíří do všech sekundárních replik, ale budou efektivní jenom na pojmenované replice, kde se vytvořilo přihlášení na úrovni serveru.
Nezapomeňte, že ve výchozím nastavení má nově vytvořený uživatel udělenou minimální sadu oprávnění (například nemá přístup k žádným uživatelským tabulkám). Pokud chcete povolit third-party-user
nebo bob@contoso.com
číst data v tabulce, musíte oprávnění explicitně udělit SELECT
:
GRANT SELECT ON [Application].[Cities] to [third-party-user];
Jako alternativu k udělení oprávnění jednotlivě pro každou tabulku můžete přidat uživatele do db_datareaders
databázové role , abyste povolili přístup pro čtení ke všem tabulkám, nebo můžete pomocí schémat povolit přístup ke všem existujícím a novým tabulkám ve schématu.
Testování přístupu
Tuto konfiguraci můžete otestovat pomocí libovolného klientského nástroje a pokusit se připojit k primární a pojmenované replice. Například pomocí sqlcmd
, můžete se pokusit připojit k primární replice pomocí third-party-login
uživatele. Nahraďte strong_password_here
silným heslem.
sqlcmd -S MyPrimaryServer.database.windows.net -U third-party-login -P strong_password_here -d WideWorldImporters
Výsledkem bude chyba, protože uživatel se nemůže připojit k serveru:
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'third-party-login'. Reason: The account is disabled.
Pokus o připojení k pojmenované replice bude úspěšný. Nahraďte strong_password_here
silným heslem.
sqlcmd -S MyNamedReplicaServer.database.windows.net -U third-party-login -P strong_password_here -d WideWorldImporters_NR
Nevrací se žádné chyby a dotazy se dají spouštět na pojmenované replice, jak je povoleno udělenými oprávněními na úrovni objektu.
Související obsah
- Logické servery Azure SQL najdete v tématu Co je server ve službě Azure SQL Database?
- Správa přístupu k databázi a přihlášení, viz zabezpečení služby SQL Database: Správa přístupu k databázi a zabezpečení přihlášení.
- Oprávnění databázového stroje najdete v tématu Oprávnění.
- Udělení oprávnění objektu, viz UDĚLENÍ oprávnění objektu.