Kurz: Použití spravované identity přiřazené systémem na virtuálním počítači s Windows pro přístup k Azure SQL
Spravované identity pro prostředky Azure jsou funkcí služby Azure Active Directory. Každá ze služeb Azure, které podporují spravované identity pro prostředky Azure, se řídí vlastní časovou osou. Než začnete, nezapomeňte zkontrolovat stav dostupnosti spravovaných identit pro váš prostředek a známé problémy.
V tomto kurzu se ukáže, jak pomocí identity přiřazené systémem pro virtuální Windows počítače získat přístup k Azure SQL Database. Identity spravovaných služeb, které se spravují automaticky v Azure, slouží k ověření přístupu ke službám podporujícím ověřování Azure AD bez nutnosti vložení přihlašovacích údajů do kódu. Získáte informace o těchto tématech:
- Udělení přístupu virtuálnímu počítači k Azure SQL Database
- Povolení ověřování Azure AD
- Vytvoření uživatele v databázi reprezentujícího systémem přiřazenou identitu virtuálního počítače
- Získání přístupového tokenu pomocí identity virtuálního počítače a jeho použití k dotazování Azure SQL Database
Požadavky
- Pokud ještě neznáte funkci spravovaných identit pro prostředky Azure, podívejte se na tento přehled.
- Pokud nemáte účet Azure, zaregistrujte si bezplatný účet před tím, než budete pokračovat.
- K provedení potřebných kroků k vytvoření prostředku a správě rolí potřebuje váš účet oprávnění vlastníka v odpovídajícím oboru (vaše předplatné nebo skupina prostředků). Pokud potřebujete pomoc s přiřazením role, přečtěte si téma přiřazení rolí Azure ke správě přístupu k prostředkům předplatného Azure.
Povolit
Povolení spravované identity přiřazené systémem je prostředí jedním kliknutím. Můžete ho buď povolit během vytváření virtuálního počítače, nebo ve vlastnostech existujícího virtuálního počítače.

Povolení spravované identity přiřazené systémem na novém virtuálním počítači:
Udělení přístupu
Pokud chcete virtuálnímu počítači udělit přístup k databázi v Azure SQL Database, můžete použít existující logický SQL serveru nebo vytvořit novou. Pokud chcete vytvořit nový server a databázi pomocí webu Azure Portal, postupujte podle tohoto rychlého startu k Azure SQL. Rychlé starty s využitím Azure CLI a Azure PowerShellu najdete v dokumentaci k Azure SQL.
Udělení přístupu virtuálnímu počítači k databázi se skládá ze dvou kroků:
- Povolte ověřování Azure AD pro server.
- Vytvoření uživatele v databázi reprezentujícího systémem přiřazenou identitu virtuálního počítače
Povolení ověřování Azure AD
Konfigurace ověřování Azure AD:
- Na levém navigačním panelu na webu Azure Portal vyberte Servery SQL.
- Kliknutím na server SQL u něj povolte ověřování Azure AD.
- V části okna Nastavení klikněte na Správce Active Directory.
- Na panelu příkazů klikněte na Nastavit správce.
- Vyberte uživatelský účet Azure AD, který se má stát správcem serveru, a klikněte na Vybrat.
- Na panelu příkazů klikněte na Uložit.
Vytvoření uživatele s obsaženým obsahem
Tato část ukazuje, jak v databázi vytvořit uživatele, který představuje identitu přiřazenou systémem virtuálního počítače. Pro tento krok potřebujete Microsoft SQL Server Management Studio (SSMS). Než začnete, můžete si také přečíst následující články se základními informacemi o integraci Azure AD:
- Univerzální ověřování s SQL Database a Azure Synapse Analytics (podpora SSMS pro MFA)
- Konfigurace a správa Azure Active Directory ověřování pomocí SQL Database nebo Azure Synapse Analytics
SQL Databáze vyžaduje jedinečné zobrazované názvy AAD. Účty AAD, jako jsou uživatelé, skupiny a instanční objekty (aplikace) a názvy virtuálních počítačů povolené pro spravovanou identitu, musí být v AAD jednoznačně definované v souvislosti s jejich zobrazovanými názvy. SQL Db zkontroluje zobrazovaný název AAD SQL vytváření takových uživatelů. Pokud není jedinečný, příkaz nepožaduje, aby pro daný účet poskytl jedinečný zobrazovaný název AAD.
Vytvoření uživatele s obsahem:
Spusťte aplikaci SQL Server Management Studio.
V dialogovém Připojení Server zadejte název serveru do pole Název serveru.
V poli Ověřování vyberte Active Directory – univerzální s podporou vícefaktorového ověřování.
Do pole Uživatelské jméno zadejte název účtu Azure AD, který jste nastavili jako správce serveru, například helen@woodgroveonline.com.
Klikněte na tlačítko Možnosti.
Do pole Připojení k databázi zadejte název nesystémové databáze, kterou chcete nakonfigurovat.
Klikněte na Připojit. Dokončete proces přihlašování.
V Průzkumníku objektů rozbalte složku Databáze.
Klikněte pravým tlačítkem na uživatelskou databázi a pak klikněte na Nový dotaz.
V okně dotazu zadejte následující řádek a na panelu nástrojů klikněte na Provést:
Poznámka
VMNamev následujícím příkazu je název virtuálního počítače, pro který jste v části Požadavky povolili identitu přiřazenou systémem.CREATE USER [VMName] FROM EXTERNAL PROVIDERPříkaz by se měl úspěšně provést a vytvořit uživatele pro systémem přiřazenou identitu virtuálního počítače.
Vymažte okno dotazu, zadejte následující řádek a na panelu nástrojů klikněte na Provést:
Poznámka
VMNamev následujícím příkazu je název virtuálního počítače, pro který jste v části Požadavky povolili identitu přiřazenou systémem.ALTER ROLE db_datareader ADD MEMBER [VMName]Příkaz by se měl úspěšně provést a udělit uživateli možnost čtení celé databáze.
Kód spuštěný na virtuálním počítači teď může získat token pomocí spravované identity přiřazené systémem a použít tento token k ověření na serveru.
Přístup k datům
Tato část ukazuje, jak získat přístupový token pomocí spravované identity přiřazené systémem virtuálního počítače a jak ho použít k volání Azure SQL. Azure SQL nativně podporuje ověřování Azure AD, takže může přímo přijímat přístupové tokeny získané pomocí spravovaných identit pro prostředky Azure. Pomocí metody s využitím přístupového tokenu můžete vytvořit připojení k SQL. Jedná se o součást integrace Azure SQL s Azure AD a liší se od zadávání přihlašovacích údajů v připojovacím řetězci.
Tady je příklad kódu .NET, který otevře připojení k SQL pomocí přístupového tokenu. Kód musí běžet na virtuálním počítači, aby měl přístup ke koncovému bodu spravované identity přiřazené systémem virtuálního počítače. .NET Framework přístupového tokenu se vyžaduje verze 4.6 nebo vyšší nebo .NET Core 2.2 nebo vyšší. Nahraďte hodnoty AZURE-SQL-SERVERNAME a DATABASE odpovídajícím způsobem. Všimněte si, že ID prostředku pro Azure SQL je https://database.windows.net/ .
using System.Net;
using System.IO;
using System.Data.SqlClient;
using System.Web.Script.Serialization;
//
// Get an access token for SQL.
//
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://database.windows.net/");
request.Headers["Metadata"] = "true";
request.Method = "GET";
string accessToken = null;
try
{
// Call managed identities for Azure resources endpoint.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Pipe response Stream to a StreamReader and extract access token.
StreamReader streamResponse = new StreamReader(response.GetResponseStream());
string stringResponse = streamResponse.ReadToEnd();
JavaScriptSerializer j = new JavaScriptSerializer();
Dictionary<string, string> list = (Dictionary<string, string>) j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
accessToken = list["access_token"];
}
catch (Exception e)
{
string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
}
//
// Open a connection to the server using the access token.
//
if (accessToken != null) {
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>;";
SqlConnection conn = new SqlConnection(connectionString);
conn.AccessToken = accessToken;
conn.Open();
}
Poznámka
Spravované identity můžete používat při práci s jinými programovacími možnostmi pomocí našich sdk.
Dalším způsobem, jak rychle otestovat kompletní nastavení bez nutnosti psát kód a nasazovat aplikaci do virtuálního počítače, je použít PowerShell.
Na portálu přejděte na Virtuální počítače, přejděte ke svému virtuálnímu počítači s Windows a v části Přehled klikněte na Připojit.
Zadejte své Uživatelské jméno a Heslo, které jste přidali při vytváření virtuálního počítače s Windows.
Teď, když jste vytvořili Připojení ke vzdálené ploše virtuálním počítači, otevřete powershell ve vzdálené relaci.
Pomocí příkazu
Invoke-WebRequestv PowerShellu odešlete do místního koncového bodu spravované identity žádost o přístupový token pro Azure SQL.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}Převeďte odpověď z objektu JSON na objekt PowerShellu.
$content = $response.Content | ConvertFrom-JsonExtrahujte z odpovědi přístupový token.
$AccessToken = $content.access_tokenOtevřete připojení k serveru. Nezapomeňte nahradit hodnoty AZURE-SQL-SERVERNAME a DATABASE.
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>" $SqlConnection.AccessToken = $AccessToken $SqlConnection.Open()Dále vytvořte dotaz a odešlete ho na server. Nezapomeňte nahradit hodnotu TABLE.
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "SELECT * from <TABLE>;" $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet)
Výsledky dotazu zobrazíte prozkoumáním hodnoty $DataSet.Tables[0].
Zakázat
Pokud chcete na svém VIRTUÁLNÍm počítači zakázat identitu přiřazenou systémem, nastavte stav identity přiřazené systémem na vypnuto.

Další kroky
V tomto kurzu jste zjistili, jak použít spravovanou identitu přiřazenou systémem pro přístup k Azure SQL Database. Další informace o tomto Azure SQL Database: