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é GRANTDENY 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.