Kurz: Použití spravované identity přiřazené systémem na virtuálním počítači s Windows pro přístup k Azure Storage

Spravované identity pro prostředky Azure jsou funkcí ID Microsoft Entra. 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 dozvíte, jak pomocí spravované identity přiřazené systémem pro virtuální počítač s Windows získat přístup ke službě Azure Storage. Získáte informace pro:

  • Vytvoření kontejneru objektů blob v účtu úložiště
  • Udělení přístupu k účtu úložiště spravovaným identitám přiřazeným systémem na virtuálním počítači s Windows
  • Získání a použití přístupu k volání Azure Storage

Poznámka:

Ověřování Microsoft Entra pro Azure Storage je ve verzi Public Preview.

Předpoklady

  • 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 při vytváření virtuálního počítače, nebo ve vlastnostech existujícího virtuálního počítače.

Screenshot shows the System assigned tab for a virtual machine where you can turn on the System assigned status.

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

  1. Přihlaste se k portálu Azure Portal.

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

Udělení přístupu

Vytvoření účtu úložiště

V této části vytvoříte účet úložiště.

  1. V levém horním rohu webu Azure Portal vyberte tlačítko + Vytvořit prostředek.

  2. Vyberte Storage, pak Účet úložiště – objekt blob, soubor, tabulka, fronta.

  3. V části Název zadejte název účtu úložiště.

  4. V polích Model nasazení a Druh účtu nastavte Resource manager a Úložiště (v1 pro obecné účely).

  5. Ověřte, že pole Předplatné a Skupina prostředků se shodují s údaji zadanými při vytvoření virtuálního počítače v předchozím kroku.

  6. Vyberte Vytvořit.

    Create new storage account

Vytvoření kontejneru objektů blob a nahrání souboru do účtu úložiště

Soubory vyžadují úložiště objektů blob. Proto potřebujete vytvořit kontejner objektů blob, do kterého soubor uložíte. Potom soubor nahrajete do kontejneru objektů blob v novém účtu úložiště.

  1. Vraťte se k nově vytvořenému účtu úložiště.

  2. V části Blob Service vyberte Kontejnery.

  3. V horní části stránky vyberte + Kontejner .

  4. V části Nový kontejner zadejte název kontejneru a v části Úroveň veřejného přístupu nechte výchozí hodnotu.

    Create storage container

  5. Na místním počítači vytvořte ve vámi vybraném editoru soubor s názvem hello world.txt. Otevřete soubor a přidejte text (bez uvozovek) „Hello world! :)“ a pak ho uložte.

  6. Nahrajte soubor do nově vytvořeného kontejneru – klikněte na název kontejneru a vyberte Nahrát.

  7. V podokně Nahrát objekt blob vyberte v části Soubory ikonu složky a přejděte na soubor hello_world.txt na místním počítači, vyberte soubor a pak vyberte Nahrát. Upload text file

Udělení přístupu

V této části se dozvíte, jak udělit virtuálnímu počítači přístup ke kontejneru Azure Storage. Spravovanou identitu přiřazenou systémem na virtuálním počítači můžete použít k načtení dat, která jsou v úložišti Azure Storage Blob.

  1. Vraťte se k nově vytvořenému účtu úložiště.

  2. Vyberte Řízení přístupu (IAM) .

  3. Výběrem možnosti Přidat>přiřazení role otevřete stránku Přidat přiřazení role.

  4. Přiřaďte následující roli. Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.

    Nastavení Hodnota
    Role Čtenář dat v objektech blob služby Storage
    Přiřadit přístup k Spravovaná identita
    Přiřazeno systémem Virtuální počítač
    Vybrat <váš virtuální počítač>

    Add role assignment page in Azure portal.

Přístup k datům

Azure Storage nativně podporuje ověřování Microsoft Entra, takže může přímo přijímat přístupové tokeny získané pomocí spravované identity. Tento přístup používá integraci služby Azure Storage s ID Microsoft Entra a liší se od zadávání přihlašovacích údajů v připojovací řetězec.

Tady je příklad kódu .NET pro otevření připojení ke službě Azure Storage. Příklad používá přístupový token a pak přečte obsah souboru, který jste vytvořili dříve. Tento kód je potřeba spustit na virtuálním počítači, aby byl možný přístup ke koncovému bodu spravované identity virtuálního počítače. K použití metody přístupového tokenu se vyžaduje rozhraní .NET Framework 4.6 nebo vyšší. Parametr <URI to blob file> nahraďte odpovídající hodnotou. Tuto hodnotu získáte, když přejdete k vytvořenému souboru, který jste nahráli do úložiště objektů blob, a zkopírujete adresu URL, která je na stránce Přehled v části Vlastnosti.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;

namespace StorageOAuthToken
{
    class Program
    {
        static void Main(string[] args)
        {
            //get token
            string accessToken = GetMSIToken("https://storage.azure.com/");

            //create token credential
            TokenCredential tokenCredential = new TokenCredential(accessToken);

            //create storage credentials
            StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);

            Uri blobAddress = new Uri("<URI to blob file>");

            //create block blob using storage credentials
            CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);

            //retrieve blob contents
            Console.WriteLine(blob.DownloadText());
            Console.ReadLine();
        }

        static string GetMSIToken(string resourceID)
        {
            string accessToken = string.Empty;
            // Build request to acquire MSI token
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
            request.Headers["Metadata"] = "true";
            request.Method = "GET";

            try
            {
                // Call /token 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"];
                return accessToken;
            }
            catch (Exception e)
            {
                string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
                return accessToken;
            }
        }
    }
}

Odpověď bude obsahovat obsah souboru:

Hello world! :)

Zakázat

Pokud chcete na virtuálním počítači zakázat identitu přiřazenou systémem, nastavte stav identity přiřazené systémem na Vypnuto.

Screenshot shows the System assigned tab for a virtual machine where you can turn off the System assigned status.

Další kroky

V tomto kurzu jste zjistili, jak identitě přiřazené systémem na virtuálním počítači s Windows povolit přístup k Azure Storage. Další informace o službě Azure Storage najdete tady: