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

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.

Snímek obrazovky zobrazuje kartu přiřazenou systému pro virtuální počítač, na kterém můžete zapnout stav přiřazený systému.

Povolení spravované identity přiřazené systémem na novém virtuálním počítači:

  1. Přihlášení k Azure Portal

  2. Vytvoření virtuálního počítače s povolenou identitou přiřazenou systémem

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ů:

  1. Povolte ověřování Azure AD pro server.
  2. 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:

  1. Na levém navigačním panelu na webu Azure Portal vyberte Servery SQL.
  2. Kliknutím na server SQL u něj povolte ověřování Azure AD.
  3. V části okna Nastavení klikněte na Správce Active Directory.
  4. Na panelu příkazů klikněte na Nastavit správce.
  5. Vyberte uživatelský účet Azure AD, který se má stát správcem serveru, a klikněte na Vybrat.
  6. 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:

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:

  1. Spusťte aplikaci SQL Server Management Studio.

  2. V dialogovém Připojení Server zadejte název serveru do pole Název serveru.

  3. V poli Ověřování vyberte Active Directory – univerzální s podporou vícefaktorového ověřování.

  4. Do pole Uživatelské jméno zadejte název účtu Azure AD, který jste nastavili jako správce serveru, například helen@woodgroveonline.com.

  5. Klikněte na tlačítko Možnosti.

  6. Do pole Připojení k databázi zadejte název nesystémové databáze, kterou chcete nakonfigurovat.

  7. Klikněte na Připojit. Dokončete proces přihlašování.

  8. V Průzkumníku objektů rozbalte složku Databáze.

  9. Klikněte pravým tlačítkem na uživatelskou databázi a pak klikněte na Nový dotaz.

  10. V okně dotazu zadejte následující řádek a na panelu nástrojů klikněte na Provést:

    Poznámka

    VMName v 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 PROVIDER
    

    Pří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.

  11. Vymažte okno dotazu, zadejte následující řádek a na panelu nástrojů klikněte na Provést:

    Poznámka

    VMName v 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.

  1. 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.

  2. Zadejte své Uživatelské jméno a Heslo, které jste přidali při vytváření virtuálního počítače s Windows.

  3. 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.

  4. Pomocí příkazu Invoke-WebRequest v 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-Json
    

    Extrahujte z odpovědi přístupový token.

    $AccessToken = $content.access_token
    
  5. Otevř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.

Snímek obrazovky zobrazuje kartu přiřazenou systému pro virtuální počítač, ve kterém můžete vypnout stav přiřazený systému.

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: