Share via


Oktatóanyag: Hozzáférés az Azure Storage-hoz egy Windows VM-beli, rendszer által hozzárendelt felügyelt identitással

Az Azure-erőforrások felügyelt identitásai a Microsoft Entra ID egyik funkciója. Az Azure-erőforrások felügyelt identitását támogató összes Azure-szolgáltatásra a saját ütemterve vonatkozik. Mielőtt nekikezdene, tekintse át az erőforrásához tartozó felügyelt identitások elérhetőségi állapotát, valamint az ismert problémákat.

Ez az oktatóanyag bemutatja, hogyan férhet hozzá az Azure Storage-hoz egy Windows rendszerű virtuális gép (VM) rendszer által hozzárendelt felügyelt identitásával. Az alábbiak végrehajtásának módját ismerheti meg:

  • Blobtároló létrehozása egy tárfiókban
  • Hozzáférés engedélyezése Windows VM-beli, rendszer által hozzárendelt felügyelt identitás számára egy tárfiókhoz
  • Hozzáférés kérése, majd az Azure Storage meghívása a hozzáféréssel

Feljegyzés

Az Azure Storage Microsoft Entra-hitelesítése nyilvános előzetes verzióban érhető el.

Előfeltételek

  • Ha még nem ismeri az Azure-erőforrások felügyelt identitására vonatkozó funkciót, tekintse meg ezt az áttekintést.
  • Ha még nincs Azure-fiókja, a folytatás előtt regisztráljon egy ingyenes fiókra.
  • A szükséges erőforrás-létrehozás és szerepkör-felügyelet végrehajtásához a fiókjának „Tulajdonos” jogosultságokkal kell rendelkeznie a megfelelő hatókörben (az előfizetésben vagy az erőforráscsoportban) Ha segítségre van szüksége a szerepkör-hozzárendeléssel kapcsolatban, olvassa el az Azure-szerepkörök hozzárendelése az Azure-előfizetés erőforrásaihoz való hozzáférés kezeléséhez című témakört.

Engedélyezés

A rendszer által hozzárendelt felügyelt identitás engedélyezése egy kattintásos felület. Ezt engedélyezheti a virtuális gép létrehozásakor vagy egy meglévő virtuális gép tulajdonságaiban.

Képernyőkép a rendszer által hozzárendelt virtuális géphez tartozó lapról, ahol bekapcsolhatja a rendszer által hozzárendelt állapotot.

Rendszer által hozzárendelt felügyelt identitás engedélyezése új virtuális gépen:

  1. Jelentkezzen be az Azure Portalra

  2. Rendszer által hozzárendelt identitással rendelkező virtuális gép létrehozása

Hozzáférés biztosítása

Storage-fiók létrehozása

Ebben a szakaszban egy új tárfiókot fog létrehozni.

  1. Válassza az Azure Portal bal felső sarkában található + Erőforrás létrehozása gombot.

  2. Válassza a Storage, majd a Storage-fiók – blob, fájl, tábla, üzenetsor lehetőséget.

  3. A Név mezőben adja meg a tárfiók nevét.

  4. A Telepítési modell mezőben a Resource Manager, a Fiók típusa mezőben a Storage (általános célú v1) beállítást kell megadni.

  5. Ellenőrizze, hogy az Előfizetés és az Erőforráscsoport mező értéke egyezik-e az előző lépésben a virtuális gép létrehozása során megadottakkal.

  6. Válassza a Létrehozás lehetőséget.

    Képernyőkép az új tárfiókok létrehozásáról.

Blobtároló létrehozása és egy fájl feltöltése a tárfiókba

A fájlok tárolásához blobtároló szükséges, ezért létre kell hoznia egyet, amelyben a fájlt tárolhatja. Ezután fel fog tölteni egy fájlt az új tárfiókon lévő blobtárolóba.

  1. Lépjen vissza az újonnan létrehozott tárfiókra.

  2. A Blob Service alatt válassza a Tárolók lehetőséget.

  3. Válassza a + Tároló lehetőséget a lap tetején.

  4. Az Új tároló területen írja be a tároló nevét, és a Nyilvános hozzáférés szintje területen tartsa meg az alapértelmezett értéket.

    A tároló létrehozását bemutató képernyőkép.

  5. Egy tetszőleges szövegszerkesztővel hozzon létre egy hello world.txt nevű fájlt a helyi gépen. Nyissa meg a fájlt, adja hozzá a „Hello, world! :)” szöveget (idézőjel nélkül), majd mentse el.

  6. A tároló nevére, majd a Feltöltés lehetőségre kattintva töltse fel a fájlt az újonnan létrehozott tárolóba.

  7. A Blob feltöltése panel Fájlok csoportjában válassza a mappa ikont, és keresse meg a helyi gépen hello_world.txt fájlt, jelölje ki a fájlt, majd válassza a Feltöltés lehetőséget. Képernyőkép a szövegfájl feltöltési képernyőről.

Hozzáférés biztosítása

Ez a szakasz bemutatja, hogyan biztosíthat hozzáférést a virtuális gépnek egy Azure Storage-tárolóhoz. A VM rendszer által hozzárendelt felügyelt identitásával lekérheti az Azure-tárolóblob adatait.

  1. Lépjen vissza az újonnan létrehozott tárfiókra.

  2. Válassza a Hozzáférés-vezérlés (IAM) lehetőséget.

  3. Kattintson a Hozzáadás>Szerepkör-hozzárendelés hozzáadása lehetőségre a Szerepkör-hozzárendelés hozzáadása oldal megnyitásához.

  4. Rendelje hozzá a következő szerepkört. A részletes lépésekért tekintse meg az Azure-szerepköröknek az Azure Portalon történő hozzárendelését ismertető cikket.

    Beállítás Érték
    Szerepkör Storage Blob adatolvasó
    Hozzáférés hozzárendelése a következőhöz: Felügyelt identitás
    Rendszer által hozzárendelt Virtuális gép
    Kijelölés <a virtuális gép>

    A szerepkör-hozzárendelés hozzáadására szolgáló lap képernyőképe.

Adatok elérése

Az Azure Storage natív módon támogatja a Microsoft Entra-hitelesítést, így közvetlenül elfogadhatja a felügyelt identitással beszerzett hozzáférési jogkivonatokat. Ez a megközelítés az Azure Storage Microsoft Entra-azonosítóval való integrációját használja, és eltér a hitelesítő adatok megadásától a kapcsolati sztring.

Íme egy .NET-kód példa az Azure Storage-kapcsolat megnyitására. A példa egy hozzáférési jogkivonatot használ, majd beolvassa a korábban létrehozott fájl tartalmát. Ennek a kódnak kell futnia a virtuális gépen a VM felügyelt identitásához tartozó végpont eléréséhez. .NET-keretrendszer 4.6-os vagy újabb verzióra van szükség a hozzáférési jogkivonat-metódus használatához. Cserélje le az <URI to blob file> értékét a megfelelőre. Az érték lekéréséhez keresse meg a létrehozott és a blobtárolóba feltöltött fájlt, és másolja ki az Áttekintés oldalon lévő Tulajdonságok területen szereplő URL értéket.

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;
            }
        }
    }
}

A válasz tartalmazza a fájl tartalmát:

Hello world! :)

Letiltás

Ha le szeretné tiltani a rendszer által hozzárendelt identitást a virtuális gépen, állítsa a rendszer által hozzárendelt identitás állapotát Ki értékre.

Képernyőkép a rendszer által hozzárendelt lapról egy virtuális géphez, ahol kikapcsolhatja a rendszer által hozzárendelt állapotot.

Következő lépések

Az oktatóanyag bemutatta, hogyan gondoskodhat róla, hogy egy Windows rendszerű virtuális gép rendszer által hozzárendelt identitása hozzá tudjon férni az Azure Storage-hoz. Az Azure Storage-ról további információt a következő témakörben talál: