Samouczek: uzyskiwanie dostępu do zasobów platformy Azure przy użyciu maszyny wirtualnej/zestawu skalowania maszyn wirtualnych z systemem Windows

Tożsamości zarządzane dla zasobów platformy Azure to funkcja identyfikatora Entra firmy Microsoft. Każda usługa platformy Azure obsługująca tożsamości zarządzane dla zasobów platformy Azure ma własną oś czasu. Pamiętaj, aby przed rozpoczęciem sprawdzić stan dostępności tożsamości zarządzanych dla swojego zasobu i znane problemy.

Wymagania wstępne

  • Zrozumienie tożsamości zarządzanych. Jeśli nie znasz funkcji tożsamości zarządzanych dla zasobów platformy Azure, zobacz to omówienie.
  • Konto platformy Azure, utwórz bezpłatne konto.
  • Uprawnienia właściciela w odpowiednim zakresie (subskrypcja lub grupa zasobów) do wykonania wymaganych kroków tworzenia zasobów i zarządzania rolami. Jeśli potrzebujesz pomocy dotyczącej przypisywania ról, zobacz Przypisywanie ról platformy Azure w celu zarządzania dostępem do zasobów subskrypcji platformy Azure.
  • Maszyna wirtualna z systemem Windows z włączoną przypisaną przez system tożsamościami zarządzanymi.

używanie przypisanej przez system tożsamości zarządzanej na maszynie wirtualnej z systemem Windows do uzyskiwania dostępu do usługi Azure Data Lake Store

W tym samouczku pokazano, jak używać przypisanej przez system tożsamości zarządzanej dla maszyny wirtualnej z systemem Windows w celu uzyskania dostępu do usługi Azure Data Lake Store. Tożsamości zarządzane są automatycznie zarządzane przez platformę Azure. Umożliwiają one aplikacji uwierzytelnianie w usługach obsługujących uwierzytelnianie firmy Microsoft Entra bez konieczności wstawiania poświadczeń do kodu.

Ten artykuł obejmuje następujące zagadnienia:

  • Udzielanie maszynie wirtualnej praw dostępu do usługi Azure Data Lake Store
  • Uzyskiwanie tokenu dostępu przy użyciu tożsamości maszyny wirtualnej oraz używanie go do uzyskiwania dostępu do usługi Azure Data Lake Store

Włącz

Włączenie tożsamości zarządzanej przypisanej przez system jest jednym kliknięciem. Można ją włączyć podczas tworzenia maszyny wirtualnej lub we właściwościach istniejącej maszyny wirtualnej.

Zrzut ekranu przedstawia kartę Przypisane przez system dla maszyny wirtualnej, na której można włączyć stan Przypisane przez system.

Aby włączyć tożsamość zarządzaną przypisaną przez system na nowej maszynie wirtualnej:

  1. Zaloguj się w witrynie Azure Portal.

  2. Utwórz maszynę wirtualną z włączoną tożsamością przypisaną przez system.

Udzielanie dostępu

Możesz udzielić maszynie wirtualnej dostępu do plików i folderów w usłudze Azure Data Lake Store. W tym kroku możesz użyć istniejącej usługi Data Lake Store lub utworzyć nową.

Aby utworzyć nową usługę Data Lake Store przy użyciu witryny Azure Portal, zobacz Przewodnik Szybki start dotyczący usługi Azure Data Lake Store. W dokumentacji usługi Azure Data Lake Store są również dostępne przewodniki Szybki start, które używają interfejsu wiersza polecenia platformy Azure oraz programu Azure PowerShell.

W usłudze Data Lake Store utwórz nowy folder i przyznaj przypisane przez system uprawnienia tożsamości maszyny wirtualnej. Tożsamość musi mieć uprawnienia do odczytu, zapisu i wykonywania plików w tym folderze:

  1. W witrynie Azure Portal wybierz pozycję Data Lake Store w obszarze nawigacji po lewej stronie.
  2. Wybierz usługę Data Lake Store, której chcesz użyć w tym samouczku.
  3. Wybierz pozycję Eksplorator danych na pasku poleceń.
  4. Zostanie zaznaczony folder główny usługi Data Lake Store. Wybierz pozycję Dostęp na pasku poleceń.
  5. Wybierz Dodaj. W polu Wybierz wprowadź nazwę maszyny wirtualnej, na przykład DevTestVM. Wybierz maszynę wirtualną z wyników wyszukiwania, a następnie wybierz pozycję Wybierz.
  6. Wybierz pozycję Wybierz uprawnienia, a następnie Odczyt i Wykonaj. Dodaj do tego folderu, a następnie wybierz pozycję Tylko uprawnienie dostępu.
  7. Wybierz przycisk OK, a następnie zamknij blok Dostęp . Dodawanie uprawnienia powinno zakończyć się pomyślnie.
  8. Następnie utwórz nowy folder. Wybierz pozycję Nowy folder na pasku poleceń i nadaj nowemu folderowi nazwę. Na przykład TestFolder, a następnie wybierz przycisk OK.
  9. Wybierz utworzony folder, a następnie wybierz pozycję Dostęp na pasku poleceń.
  10. Wybierz pozycję Dodaj, a następnie w polu Wybierz wprowadź nazwę maszyny wirtualnej i wybierz pozycję Wybierz.
  11. Wybierz pozycję Wybierz uprawnienia, a następnie odczyt, zapis i wykonanie. Dodaj do tego folderu, a następnie dodaj jako wpis uprawnień dostępu i domyślny wpis uprawnień.
  12. Wybierz OK Uprawnienie powinno zostać pomyślnie dodane.

Przypisana przez system tożsamość usługi zarządzanej maszyny wirtualnej może teraz wykonywać wszystkie operacje na plikach w utworzonym folderze. Aby uzyskać informacje na temat zarządzania dostępem do usługi Data Lake Store, zobacz Kontrola dostępu w usłudze Data Lake Store.

Uzyskiwanie dostępu do danych

Usługa Azure Data Lake Store natywnie obsługuje uwierzytelnianie firmy Microsoft Entra, dzięki czemu może bezpośrednio akceptować tokeny dostępu uzyskane przy użyciu tożsamości zarządzanych dla zasobów platformy Azure. Aby uwierzytelnić się w systemie plików usługi Data Lake Store, należy wysłać token dostępu wystawiony przez identyfikator firmy Microsoft do punktu końcowego systemu plików usługi Data Lake Store w nagłówku autoryzacji. Nagłówek ma format Bearer <ACCESS_TOKEN_VALUE>.

Aby dowiedzieć się więcej na temat obsługi usługi Data Lake Store na potrzeby uwierzytelniania w usłudze Microsoft Entra, zobacz Authentication with Data Lake Store using Microsoft Entra ID (Uwierzytelnianie za pomocą usługi Data Lake Store przy użyciu identyfikatora Entra firmy Microsoft).

Uwaga

Zestawy SDK klientów systemu plików usługi Data Lake Store jeszcze nie obsługują przypisanej przez system tożsamości zarządzanej dla zasobów platformy Azure.

W tym samouczku uwierzytelniasz się w interfejsie REST API dla systemu plików usługi Data Lake Store przy użyciu programu PowerShell w celu wysłania żądań REST. Aby użyć przypisanej przez system tożsamości zarządzanej maszyny wirtualnej na potrzeby uwierzytelniania, musisz wysłać żądania z maszyny wirtualnej.

  1. W portalu przejdź do pozycji Maszyny wirtualne, przejdź do maszyny wirtualnej z systemem Windows. Następnie w obszarze Przegląd wybierz pozycję Połącz.

  2. Wprowadź nazwę użytkownika i hasło dodane podczas tworzenia maszyny wirtualnej z systemem Windows.

  3. Po utworzeniu połączenia pulpitu zdalnego z maszyną wirtualną otwórz program PowerShell w sesji zdalnej.

  4. Za pomocą polecenia cmdlet programu PowerShell Invoke-WebRequest prześlij żądanie do lokalnego punktu końcowego tożsamości zarządzanych dla zasobów platformy Azure, aby uzyskać token dostępu dla usługi Azure Data Lake Store. Identyfikator zasobu usługi Data Lake Store to https://datalake.azure.net/. Usługa Data Lake dokładnie pasuje do identyfikatora zasobu, dlatego końcowy ukośnik jest ważny.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Skonwertuj odpowiedź z obiektu JSON do obiektu PowerShell.

    $content = $response.Content | ConvertFrom-Json
    

    Wyodrębnij token dostępu z odpowiedzi.

    $AccessToken = $content.access_token
    
  5. Sprawdź, czy wszystko jest poprawnie skonfigurowane. Za pomocą polecenia cmdlet programu PowerShell Invoke-WebRequest prześlij żądanie do punktu końcowego REST usługi Data Lake Store, aby wyświetlić listę folderów w folderze głównym. Ważne jest, aby ciąg Bearer w nagłówku Autoryzacja miał literę "B". Nazwę usługi Data Lake Store można znaleźć w sekcji Przegląd usługi Data Lake Store.

    Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -Headers @{Authorization="Bearer $AccessToken"}
    

    Odpowiedź oznaczająca powodzenie wygląda następująco:

    StatusCode        : 200
    StatusDescription : OK
    Content           : {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY", "blockSize":0,"accessTime":1507934941392, "modificationTime":1507944835699,"replication":0, "permission":"770","ow..."
    RawContent        : HTTP/1.1 200 OK
                        Pragma: no-cache
                        x-ms-request-id: b4b31e16-e968-46a1-879a-3474aa7d4528
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict-Transport-Security: ma...
    Forms             : {}
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b4b31e16-e968-46a1-879a-3474aa7d4528],
                        [x-ms-webhdfs-version, 17.04.22.00], [Status, 0x0]...}
    Images            : {}
    InputFields       : {}
    Links             : {}
    ParsedHtml        : System.__ComObject
    RawContentLength  : 556
    
  6. Teraz spróbuj przekazać plik do usługi Data Lake Store. Najpierw utwórz plik do przekazania.

    echo "Test file." > Test1.txt
    
  7. Za pomocą polecenia cmdlet programu PowerShell Invoke-WebRequest wyślij żądanie do punktu końcowego REST usługi Data Lake Store, aby przekazać plik do utworzonego wcześniej folderu. To żądanie ma dwa kroki.

    1. Wyślij żądanie i pobierz przekierowanie do lokalizacji, w której powinien zostać przekazany plik.
    2. Przekaż plik . Pamiętaj, aby odpowiednio ustawić nazwę folderu i pliku, jeśli użyto różnych wartości niż wskazane w tym samouczku.
    $HdfsRedirectResponse = Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    Jeśli sprawdzisz wartość $HdfsRedirectResponse, powinna ona wyglądać podobnie do następującej odpowiedzi:

    PS C:\> $HdfsRedirectResponse
    
    StatusCode        : 307
    StatusDescription : Temporary Redirect
    Content           : {}
    RawContent        : HTTP/1.1 307 Temporary Redirect
                        Pragma: no-cache
                        x-ms-request-id: b7ab492f-b514-4483-aada-4aa0611d12b3
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosn...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b7ab492f-b514-4483-aada-4aa0611d12b3], 
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

    Zakończ przekazywanie, wysyłając żądanie do punktu końcowego przekierowania:

    Invoke-WebRequest -Uri $HdfsRedirectResponse.Headers.Location -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    Odpowiedź oznaczająca powodzenie wygląda następująco:

    StatusCode        : 201
    StatusDescription : Created
    Content           : {}
    RawContent        : HTTP/1.1 201 Created
                        Pragma: no-cache
                        x-ms-request-id: 1e70f36f-ead1-4566-acfa-d0c3ec1e2307
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, 1e70f36f-ead1-4566-acfa-d0c3ec1e2307],
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

Na koniec możesz użyć innych interfejsów API systemu plików usługi Data Lake Store, aby dołączać i pobierać pliki i nie tylko.

Wyłącz

Aby wyłączyć tożsamość przypisaną przez system na maszynie wirtualnej, ustaw stan tożsamości przypisanej przez system na wartość Wyłączone.

Zrzut ekranu przedstawia kartę Przypisane przez system dla maszyny wirtualnej, na której można wyłączyć stan Przypisane przez system.

Używanie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej systemu Windows w celu uzyskania dostępu do usługi Azure Storage

W tym samouczku przedstawiono sposób używania tożsamości zarządzanej przypisanej przez system dla maszyny wirtualnej z systemem Windows w celu uzyskania dostępu do usługi Azure Storage. Dowiedz się, jak odbywa się:

  • Tworzenie kontenera obiektów blob na koncie magazynu
  • Udzielenie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Windows dostępu do konta magazynu
  • Uzyskiwanie dostępu i używanie go do wywoływania usługi Azure Storage

Włącz

Włączenie tożsamości zarządzanej przypisanej przez system jest jednym kliknięciem. Można ją włączyć podczas tworzenia maszyny wirtualnej lub we właściwościach istniejącej maszyny wirtualnej.

Zrzut ekranu przedstawia kartę Przypisane przez system dla maszyny wirtualnej, na której można włączyć stan Przypisane przez system.

Aby włączyć tożsamość zarządzaną przypisaną przez system na nowej maszynie wirtualnej:

  1. Zaloguj się w witrynie Azure Portal.

  2. Utwórz maszynę wirtualną z włączoną tożsamością przypisaną przez system.

Tworzenie konta magazynu

W tej sekcji utworzysz konto magazynu.

  1. Wybierz przycisk + Utwórz zasób znajdujący się w lewym górnym rogu witryny Azure Portal.

  2. Wybierz pozycję Magazyn, a następnie pozycję Konto magazynu — obiekt blob, plik, tabela, kolejka.

  3. W polu Nazwa wprowadź nazwę konta magazynu.

  4. Opcje Model wdrażania i Rodzaj konta należy ustawić na Resource Manager i Magazyn (ogólnego przeznaczenia, wersja 1).

  5. Upewnij się, że Subskrypcja i Grupa zasobów pasują do wartości określonych podczas tworzenia maszyny wirtualnej w poprzednim kroku.

  6. Wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający sposób tworzenia nowego konta magazynu.

Tworzenie kontenera obiektów blob i przekazywanie pliku na konto magazynu

Pliki wymagają magazynu obiektów blob, dlatego musimy utworzyć kontener obiektów blob, w którym będziemy przechowywać plik. Następnie przekaż plik do kontenera obiektów blob na nowym koncie magazynu.

  1. Przejdź do nowo utworzonego konta magazynu.

  2. W sekcji Blob Service wybierz pozycję Kontenery.

  3. Wybierz pozycję + Kontener w górnej części strony.

  4. W polu Nowy kontener wprowadź nazwę kontenera , a następnie w opcji Poziom dostępu publicznego zachowaj wartość domyślną.

    Zrzut ekranu przedstawiający sposób tworzenia kontenera magazynu.

  5. Za pomocą wybranego edytora utwórz plik o nazwie hello world.txt na maszynie lokalnej. Otwórz plik i dodaj tekst Hello world!, a następnie zapisz go.

  6. Wybierz nazwę kontenera, aby przekazać plik do nowo utworzonego kontenera, a następnie wybierz pozycję Przekaż.

  7. W okienku Przekazywanie obiektu blob w sekcji Pliki wybierz ikonę folderu i przejdź do pliku hello_world.txt na komputerze lokalnym. Następnie wybierz plik i przekaż. Zrzut ekranu przedstawiający ekran przekazywania pliku tekstowego.

Udzielanie dostępu

W tej sekcji pokazano, jak udzielić maszynie wirtualnej dostępu do kontenera usługi Azure Storage. Przypisanej przez system tożsamości zarządzanej maszyny wirtualnej można użyć do pobierania danych w obiekcie blob usługi Azure Storage.

  1. Przejdź do nowo utworzonego konta magazynu.

  2. Wybierz pozycję Kontrola dostępu (IAM) .

  3. Wybierz pozycję Dodaj>przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.

  4. Przypisz następującą rolę. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

    Ustawienie Wartość
    Rola Czytelnik danych obiektu BLOB usługi Storage
    Przypisz dostęp do Tożsamość zarządzana
    Przypisane przez system Maszyna wirtualna
    Wybierz pozycję <maszyna wirtualna>

    Zrzut ekranu przedstawiający stronę dodawania przypisania roli.

Uzyskiwanie dostępu do danych

Usługa Azure Storage natywnie obsługuje uwierzytelnianie firmy Microsoft Entra, dzięki czemu może bezpośrednio akceptować tokeny dostępu uzyskane przy użyciu tożsamości zarządzanej. To podejście korzysta z integracji usługi Azure Storage z identyfikatorem Entra firmy Microsoft i różni się od podawania poświadczeń w parametry połączenia.

Oto przykładowy kod platformy .NET podczas otwierania połączenia z usługą Azure Storage. W przykładzie użyto tokenu dostępu, a następnie odczytuje zawartość utworzonego wcześniej pliku. Ten kod należy uruchomić na maszynie wirtualnej, aby mógł uzyskać dostęp do punktu końcowego tożsamości zarządzanej maszyny wirtualnej. Do korzystania z metody tokenu dostępu wymagany jest program .NET Framework 4.6 lub nowszy. Zastąp odpowiednio wartość <URI to blob file>. Tę wartość można uzyskać poprzez przejście do utworzonego i przekazanego do magazynu obiektów blob pliku, a następnie skopiowanie adresu URL w sekcji Właściwości na stronie Przegląd.

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

Odpowiedź zawiera zawartość pliku:

Hello world! :)

Wyłącz

Aby wyłączyć tożsamość przypisaną przez system na maszynie wirtualnej, ustaw stan tożsamości przypisanej przez system na wartość Wyłączone.

Zrzut ekranu przedstawia kartę Przypisane przez system dla maszyny wirtualnej, na której można wyłączyć stan Przypisane przez system.

Używanie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Windows w celu uzyskania dostępu do usługi Azure Storage za pośrednictwem poświadczeń sygnatury dostępu współdzielonego

W tym samouczku pokazano, jak uzyskać poświadczenia sygnatury dostępu współdzielonego (SAS) magazynu przy użyciu tożsamości przypisanej przez system dla maszyny wirtualnej z systemem Windows.

Sygnatura dostępu współdzielonego usługi umożliwia udzielanie ograniczonego dostępu do obiektów na koncie magazynu przez ograniczony czas i dla określonej usługi (w tym przypadku usługi blob). Sygnatura dostępu współdzielonego robi to bez uwidaczniania klucza dostępu do konta. W przypadku operacji magazynowania można użyć poświadczeń sygnatury dostępu współdzielonego w zwykły sposób; na przykład w przypadku korzystania z zestawu SDK magazynu. W tym samouczku przedstawiono przekazywanie i pobieranie obiektu blob przy użyciu programu PowerShell usługi Azure Storage.

Dowiesz się, jak:

  • Tworzenie konta magazynu
  • Udzielanie maszynie wirtualnej dostępu do sygnatury SAS konta magazynu w usłudze Resource Manager
  • Uzyskiwanie tokenu dostępu przy użyciu tożsamości maszyny wirtualnej oraz używanie go do pobrania sygnatury SAS z usługi Resource Manager

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Tworzenie konta magazynu

Jeśli jeszcze go nie masz, musisz utworzyć konto magazynu. W przeciwnym razie wykonaj następujące kroki, aby udzielić przypisanej przez system tożsamości zarządzanej maszyny wirtualnej dostępu do poświadczeń SAS istniejącego konta magazynu.

  1. Wybierz pozycję Magazyn, a następnie pozycję Konto magazynu.

  2. W panelu Tworzenie konta magazynu wprowadź nazwę konta magazynu.

  3. Upewnij się, że dla modelu wdrażania i typu konta ustawiono wartość Resource Manager i Ogólnego przeznaczenia.

  4. Sprawdź, czy subskrypcja i grupa zasobów są zgodne z elementami określonymi podczas tworzenia maszyny wirtualnej w poprzednim kroku.

  5. Wybierz pozycję Utwórz , aby utworzyć konto magazynu.

    Zrzut ekranu przedstawiający sposób tworzenia nowego konta magazynu.

Tworzenie kontenera obiektów blob na koncie magazynu

W dalszej części samouczka przekażesz i pobierzesz plik na nowe konto magazynu. Ponieważ pliki wymagają magazynu obiektów blob, należy utworzyć kontener obiektów blob do przechowywania pliku.

  1. Przejdź do nowo utworzonego konta magazynu.

  2. Wybierz link Kontenery w panelu po lewej stronie w obszarze Blob Service.

  3. Wybierz pozycję + Kontener w górnej części strony, a następnie powinien zostać wyświetlony panel Nowy kontener .

  4. Nadaj kontenerowi nazwę, określ poziom dostępu, a następnie wybierz przycisk OK. Podana tutaj nazwa jest używana w dalszej części samouczka.

    Zrzut ekranu przedstawiający sposób tworzenia kontenera magazynu.

Udzielanie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej dostępu do używania sygnatury SAS magazynu

Usługa Azure Storage nie obsługuje natywnie uwierzytelniania firmy Microsoft Entra. Można jednak użyć tożsamości zarządzanej do pobrania sygnatury dostępu współdzielonego magazynu z usługi Resource Manager, a następnie użyć sygnatury dostępu współdzielonego w celu uzyskania dostępu do magazynu. W tym kroku udzielasz przypisanej przez system tożsamości zarządzanej maszyny wirtualnej dostępu do sygnatury SAS konta magazynu.

  1. Przejdź z powrotem do nowo utworzonego konta magazynu.

  2. Wybierz pozycję Kontrola dostępu (IAM) .

  3. Wybierz pozycję Dodaj>przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.

  4. Przypisz następującą rolę. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

    Ustawienie Wartość
    Rola Współautor konta magazynu
    Przypisz dostęp do Tożsamość zarządzana
    Przypisane przez system Maszyna wirtualna
    Wybierz pozycję <maszyna wirtualna z systemem Windows>

    Zrzut ekranu przedstawiający stronę dodawania przypisania roli.

Uzyskiwanie tokenu dostępu przy użyciu tożsamości maszyny wirtualnej i używanie go do wywoływania usługi Azure Resource Manager

W pozostałej części tego samouczka będziesz pracować z maszyny wirtualnej. W tej części należy użyć poleceń cmdlet programu PowerShell usługi Azure Resource Manager. Jeśli nie masz zainstalowanego programu PowerShell, pobierz najnowszą wersję przed kontynuowaniem.

  1. W witrynie Azure Portal przejdź do pozycji Maszyny wirtualne, przejdź do maszyny wirtualnej z systemem Windows, a następnie na stronie Przegląd wybierz pozycję Połącz u góry.

  2. Wprowadź nazwę użytkownika i hasło dodane podczas tworzenia maszyny wirtualnej z systemem Windows.

  3. Ustanów połączenie pulpitu zdalnego z maszyną wirtualną.

  4. Otwórz program PowerShell w sesji zdalnej, a następnie użyj polecenia cmdlet programu PowerShell Invoke-WebRequest , aby uzyskać token usługi Azure Resource Manager z lokalnej tożsamości zarządzanej dla punktu końcowego zasobów platformy Azure.

       $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Method GET -Headers @{Metadata="true"}
    

    Uwaga

    Wartość parametru resource musi być dokładnie zgodna z oczekiwaniami identyfikatora Entra firmy Microsoft. W przypadku użycia identyfikatora zasobu usługi Azure Resource Manager należy uwzględnić końcowy ukośnik w identyfikatorze URI.

    Następnie wyodrębnij content element, który jest przechowywany jako ciąg w formacie JSON (JavaScript Object Notation) w $response obiekcie.

    $content = $response.Content | ConvertFrom-Json
    

    Następnie wyodrębnij token dostępu z odpowiedzi.

    $ArmToken = $content.access_token
    

Pobieranie poświadczeń SAS z usługi Azure Resource Manager w celu wykonywania wywołań do magazynu

Na koniec użyj programu PowerShell, aby wywołać usługę Resource Manager przy użyciu tokenu dostępu pobranego w poprzedniej sekcji. Ten token służy do tworzenia poświadczeń sygnatury dostępu współdzielonego magazynu. Po utworzeniu poświadczeń sygnatury dostępu współdzielonego możesz wywołać inne operacje magazynu.

W przypadku tego żądania użyj następujących parametrów żądania HTTP, aby utworzyć poświadczenia sygnatury dostępu współdzielonego:

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite. Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

Parametry w tym miejscu znajdują się w treści POST żądania dotyczącego poświadczeń sygnatury dostępu współdzielonego. Aby uzyskać więcej informacji na temat parametrów tworzenia poświadczeń sygnatury dostępu współdzielonego, zobacz dokumentację REST sygnatury dostępu współdzielonego usługi list.

  1. Przekonwertuj parametry na format JSON, a następnie wywołaj punkt końcowy magazynu listServiceSas , aby utworzyć poświadczenia sygnatury dostępu współdzielonego:

    $params = @{canonicalizedResource="/blob/<STORAGE-ACCOUNT-NAME>/<CONTAINER-NAME>";signedResource="c";signedPermission="rcw";signedProtocol="https";signedExpiry="2017-09-23T00:00:00Z"}
    $jsonParams = $params | ConvertTo-Json
    
    $sasResponse = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE-ACCOUNT-NAME>/listServiceSas/?api-version=2017-06-01 -Method POST -Body $jsonParams -Headers @{Authorization="Bearer $ArmToken"}
    

    Uwaga

    W adresie URL jest uwzględniana wielkość liter, dlatego upewnij się, że używasz dokładnie tego samego przypadku, gdy nazwano grupę zasobów, w tym wielkie litery "G" w elem resourceGroups.

  2. Następnie wyodrębnij poświadczenie sygnatury dostępu współdzielonego z odpowiedzi:

    $sasContent = $sasResponse.Content | ConvertFrom-Json
    $sasCred = $sasContent.serviceSasToken
    
  3. Jeśli sprawdzisz poświadczenia sygnatury dostępu współdzielonego, powinna zostać wyświetlona następująca zawartość:

    PS C:\> $sasCred
    sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
    
  4. Utwórz plik o nazwie test.txt. Następnie użyj poświadczeń sygnatury dostępu współdzielonego, aby uwierzytelnić się za New-AzStorageContent pomocą polecenia cmdlet, przekazać plik do kontenera obiektów blob, a następnie pobrać plik.

    echo "This is a test text file." > test.txt
    
  5. Pamiętaj, aby najpierw zainstalować polecenia cmdlet usługi Azure Storage przy użyciu polecenia Install-Module Azure.Storage. Następnie przekaż utworzony obiekt blob przy użyciu polecenia cmdlet programu PowerShell Set-AzStorageBlobContent :

    $ctx = New-AzStorageContext -StorageAccountName <STORAGE-ACCOUNT-NAME> -SasToken $sasCred
    Set-AzStorageBlobContent -File test.txt -Container <CONTAINER-NAME> -Blob testblob -Context $ctx
    

    Reakcja:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    
  6. Możesz również pobrać przekazany obiekt blob przy użyciu Get-AzStorageBlobContent polecenia cmdlet programu PowerShell:

    Get-AzStorageBlobContent -Blob testblob -Container <CONTAINER-NAME> -Destination test2.txt -Context $ctx
    

    Reakcja:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    

Uzyskiwanie dostępu do usługi Azure SQL Database przy użyciu przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Windows

W tym samouczku pokazano, jak używać tożsamości przypisanej przez system dla maszyny wirtualnej z systemem Windows w celu uzyskania dostępu do usługi Azure SQL Database. Tożsamości usługi zarządzanej są automatycznie zarządzane przez platformę Azure i umożliwiają uwierzytelnianie w usługach obsługujących uwierzytelnianie firmy Microsoft Entra bez konieczności wstawiania poświadczeń do kodu.

Dowiesz się, jak:

  • Udzielanie maszynie wirtualnej dostępu do usługi Azure SQL Database
  • Włączanie uwierzytelniania entra firmy Microsoft
  • Tworzenie w bazie danych zawartego użytkownika, który będzie reprezentować tożsamość maszyny wirtualnej przypisaną przez system
  • Uzyskiwanie tokenu dostępu przy użyciu tożsamości maszyny wirtualnej i używanie go do wykonywania zapytań w usłudze Azure SQL Database

Włącz

Włączenie tożsamości zarządzanej przypisanej przez system jest jednym kliknięciem. Można ją włączyć podczas tworzenia maszyny wirtualnej lub we właściwościach istniejącej maszyny wirtualnej.

Zrzut ekranu przedstawia kartę Przypisane przez system dla maszyny wirtualnej, na której można włączyć stan Przypisane przez system.

Aby włączyć tożsamość zarządzaną przypisaną przez system na nowej maszynie wirtualnej:

  1. Zaloguj się w witrynie Azure Portal.

  2. Utwórz maszynę wirtualną z włączoną tożsamością przypisaną przez system.

Udzielanie dostępu

Aby udzielić maszynie wirtualnej dostępu do bazy danych w usłudze Azure SQL Database, użyj istniejącego logicznego serwera SQL lub utwórz nowy. Aby utworzyć nowy serwer i bazę danych przy użyciu witryny Azure Portal, postępuj zgodnie z przewodnikiem Szybki start usługi Azure SQL. W dokumentacji usługi Azure SQL dostępne są również przewodniki Szybki start, które używają interfejsu wiersza polecenia platformy Azure oraz programu Azure PowerShell.

Wykonaj następujące kroki, aby udzielić maszynie wirtualnej dostępu do bazy danych:

  1. Włącz uwierzytelnianie microsoft Entra dla serwera.
  2. Tworzenie w bazie danych zawartego użytkownika, który będzie reprezentować tożsamość maszyny wirtualnej przypisaną przez system.

Włączanie uwierzytelniania entra firmy Microsoft

Aby skonfigurować uwierzytelnianie firmy Microsoft Entra:

  1. W witrynie Azure Portal wybierz pozycję Serwer SQL w obszarze nawigacji po lewej stronie.
  2. Wybierz serwer SQL, który chcesz włączyć dla uwierzytelniania firmy Microsoft Entra.
  3. W sekcji Ustawienia bloku wybierz pozycję Administrator usługi Active Directory.
  4. Na pasku poleceń wybierz pozycję Ustaw administratora.
  5. Wybierz konto użytkownika Microsoft Entra, które ma zostać administratorem serwera, a następnie wybierz pozycję Wybierz.
  6. Na pasku poleceń wybierz pozycję Zapisz.

Tworzenie zawartego użytkownika

W tej sekcji pokazano, jak utworzyć zawartego użytkownika w bazie danych, który reprezentuje tożsamość przypisaną przez system maszyny wirtualnej. W tym kroku musisz zainstalować program Microsoft SQL Server Management Studio (SSMS ). Przed rozpoczęciem warto zapoznać się z następującymi artykułami dotyczącymi integracji z firmą Microsoft Entra:

Bazy danych SQL wymagają unikatowych nazw wyświetlanych identyfikatorów entra firmy Microsoft. W związku z tym konta microsoft Entra, takie jak użytkownicy, grupy i jednostki usług (aplikacje), a nazwy maszyn wirtualnych włączone dla tożsamości zarządzanej muszą być jednoznacznie zdefiniowane w identyfikatorze Entra firmy Microsoft specyficznym dla odpowiednich nazw wyświetlanych. Program SQL sprawdza nazwy wyświetlane identyfikatora entra firmy Microsoft podczas tworzenia takich użytkowników w języku T-SQL. Jeśli nazwy wyświetlane nie są unikatowe, polecenie zakończy się niepowodzeniem i wyświetli monit o podanie unikatowej nazwy wyświetlanej identyfikatora entra firmy Microsoft dla każdego danego konta.

Aby utworzyć zawartego użytkownika

  1. Otwórz program SQL Server Management Studio.

  2. W oknie dialogowym Łączenie z serwerem wprowadź nazwę serwera w polu Nazwa serwera.

  3. W polu Uwierzytelnianie wybierz opcję Active Directory — uniwersalne z obsługą uwierzytelniania wieloskładnikowego.

  4. W polu Nazwa użytkownika wprowadź nazwę konta Microsoft Entra ustawionego jako administrator serwera, na przykład cjensen@fabrikam.com.

  5. Wybierz Opcje.

  6. W polu Połącz z bazą danych wpisz nazwę niesystemowej bazy danych, którą chcesz skonfigurować.

  7. Wybierz pozycję Połącz, a następnie zakończ proces logowania.

  8. W Eksploratorze obiektów rozwiń folder Bazy danych.

  9. Kliknij prawym przyciskiem myszy bazę danych użytkownika, a następnie wybierz pozycję Nowe zapytanie.

  10. W oknie zapytania wprowadź następujący wiersz, a następnie wybierz pozycję Wykonaj na pasku narzędzi:

    Uwaga

    Element VMName w poniższym poleceniu to nazwa maszyny wirtualnej, dla której w sekcji wymagań wstępnych włączono tożsamość przypisaną przez system.

    CREATE USER [VMName] FROM EXTERNAL PROVIDER
    

    Polecenie powinno zakończyć się pomyślnie przez utworzenie zawartego użytkownika dla tożsamości przypisanej przez system maszyny wirtualnej.

  11. Wyczyść okno zapytania, wprowadź następujący wiersz i wybierz pozycję Wykonaj na pasku narzędzi:

    Uwaga

    VMName w poniższym poleceniu jest nazwą maszyny wirtualnej, dla której włączono tożsamość przypisaną przez system w sekcji wymagań wstępnych.

    Jeśli wystąpi błąd "Jednostka VMName ma zduplikowaną nazwę wyświetlaną", dołącz instrukcję CREATE USER z instrukcją WITH OBJECT_ID='xxx'.

    ALTER ROLE db_datareader ADD MEMBER [VMName]
    

    Polecenie powinno zakończyć się pomyślnie, udzielając zawartemu użytkownikowi możliwości odczytu całej bazy danych.

Kod uruchomiony na maszynie wirtualnej może teraz uzyskać token przy użyciu przypisanej przez system tożsamości zarządzanej i użyć tokenu do uwierzytelniania na serwerze.

Uzyskiwanie dostępu do danych

W tej sekcji pokazano, jak uzyskać token dostępu przy użyciu przypisanej przez system tożsamości zarządzanej maszyny wirtualnej i użyć go do wywołania usługi Azure SQL. Usługa Azure SQL natywnie obsługuje uwierzytelnianie firmy Microsoft Entra, dzięki czemu może bezpośrednio akceptować tokeny dostępu uzyskane przy użyciu tożsamości zarządzanych dla zasobów platformy Azure. Ta metoda nie wymaga podania poświadczeń w parametry połączenia.

Oto przykład kodu platformy .NET podczas otwierania połączenia z usługą SQL przy użyciu uwierzytelniania tożsamości zarządzanej usługi Active Directory. Kod musi zostać uruchomiony na maszynie wirtualnej, aby móc uzyskać dostęp do punktu końcowego tożsamości zarządzanej przypisanej przez system maszyny wirtualnej.

Do użycia tej metody jest wymagany program .NET Framework 4.6.2 lub nowszy lub .NET Core 3.1 lub nowszy. Zastąp odpowiednio wartości AZURE-SQL-SERVERNAME i DATABASE, a następnie dodaj odwołanie NuGet do biblioteki Microsoft.Data.SqlClient.

using Microsoft.Data.SqlClient;

try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

Uwaga

Tożsamości zarządzane można używać podczas pracy z innymi opcjami programowania przy użyciu naszych zestawów SDK.

Możesz też użyć programu PowerShell, aby przetestować kompleksową konfigurację bez konieczności pisania i wdrażania aplikacji na maszynie wirtualnej.

  1. W portalu przejdź do pozycji Maszyny wirtualne, przejdź do maszyny wirtualnej z systemem Windows, a następnie w obszarze Przegląd wybierz pozycję Połącz.

  2. Wprowadź poświadczenia administratora maszyny wirtualnej dodane podczas tworzenia maszyny wirtualnej z systemem Windows.

  3. Po utworzeniu połączenia pulpitu zdalnego z maszyną wirtualną otwórz program PowerShell w sesji zdalnej.

  4. Za pomocą polecenia cmdlet programu PowerShell Invoke-WebRequest prześlij żądanie do punktu końcowego lokalnej tożsamości zarządzanej, aby uzyskać token dostępu dla usługi 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"}
    

    Skonwertuj odpowiedź z obiektu JSON do obiektu PowerShell.

    $content = $response.Content | ConvertFrom-Json
    

    Wyodrębnij token dostępu z odpowiedzi.

    $AccessToken = $content.access_token
    
  5. Otwórz połączenie z serwerem. Pamiętaj, aby zastąpić wartości AZURE SQL-SERVERNAME i DATABASE.

    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;"
    $SqlConnection.AccessToken = $AccessToken
    $SqlConnection.Open()
    

    Następnie utwórz i wyślij zapytanie do serwera. Pamiętaj, aby zastąpić wartość w pozycji 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)
    

Na koniec sprawdź wartość , $DataSet.Tables[0] aby wyświetlić wyniki zapytania.

Wyłącz

Aby wyłączyć tożsamość przypisaną przez system na maszynie wirtualnej, ustaw stan tożsamości przypisanej przez system na wartość Wyłączone.

Zrzut ekranu przedstawia kartę Przypisane przez system dla maszyny wirtualnej, na której można wyłączyć stan Przypisane przez system.

Używanie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej systemu Windows w celu uzyskania dostępu do usługi Azure Key Vault

W tym samouczku pokazano, jak maszyna wirtualna z systemem Windows może używać przypisanej przez system tożsamości zarządzanej w celu uzyskania dostępu do usługi Azure Key Vault. Usługa Key Vault umożliwia aplikacji klienckiej używanie wpisu tajnego do uzyskiwania dostępu do zasobów, które nie są zabezpieczone przez identyfikator Entra firmy Microsoft. Tożsamości zarządzane są automatycznie zarządzane przez platformę Azure. Umożliwiają one uwierzytelnianie w usługach obsługujących uwierzytelnianie firmy Microsoft Entra bez uwzględniania informacji uwierzytelniania w kodzie.

Dowiesz się, jak:

  • Udzielanie maszynie wirtualnej dostępu do wpisu tajnego przechowywanego w usłudze Key Vault
  • Uzyskiwanie tokenu dostępu przy użyciu tożsamości maszyny wirtualnej oraz używanie go do pobrania wpisu tajnego z usługi Key Vault

Tworzenie usługi Key Vault

Napiwek

Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.

W tej sekcji pokazano, jak udzielić maszynie wirtualnej dostępu do wpisu tajnego przechowywanego w usłudze Key Vault. W przypadku korzystania z tożsamości zarządzanych dla zasobów platformy Azure kod może uzyskać tokeny dostępu do uwierzytelniania w zasobach obsługujących uwierzytelnianie firmy Microsoft Entra. 

Jednak nie wszystkie usługi platformy Azure obsługują uwierzytelnianie firmy Microsoft Entra. Aby użyć tożsamości zarządzanych dla zasobów platformy Azure z tymi usługami, zapisz poświadczenia usługi w usłudze Azure Key Vault, a następnie użyj tożsamości zarządzanej maszyny wirtualnej, aby uzyskać dostęp do usługi Key Vault i pobrać te poświadczenia.

Najpierw należy utworzyć usługę Key Vault i udzielić przypisanej przez system tożsamości zarządzanej maszyny wirtualnej dostępu do usługi Key Vault.

  1. Zaloguj się w witrynie Azure Portal.

  2. W górnej części lewego paska nawigacyjnego wybierz pozycję Utwórz zasób.

  3. W polu Wyszukaj w witrynie Marketplace wpisz Ciąg Key Vault i naciśnij Enter.

  4. Wybierz pozycję Key Vault z wyników, a następnie wybierz pozycję Utwórz.

  5. Podaj nazwę nowego magazynu kluczy.

    Zrzut ekranu przedstawiający ekran Tworzenie magazynu kluczy.

  6. Wypełnij wszystkie wymagane informacje. Upewnij się, że wybrano subskrypcję i grupę zasobów używaną na potrzeby tego samouczka.

  7. Wybierz pozycję Przejrzyj i utwórz.

  8. Wybierz pozycję Utwórz.

Utwórz klucz tajny

Następnie należy dodać wpis tajny do usługi Key Vault, aby można było go później pobrać przy użyciu kodu uruchomionego na maszynie wirtualnej. W tej sekcji używasz programu PowerShell, ale te same pojęcia dotyczą dowolnego kodu wykonywanego na maszynie wirtualnej.

  1. Przejdź do nowo utworzonego magazynu kluczy.

  2. Wybierz pozycję Wpisy tajne, a następnie wybierz pozycję Dodaj.

  3. Wybierz Generuj/Import.

  4. Na ekranie Tworzenie wpisu tajnego w opcjach Przekazywania pozostaw wybraną opcję Ręczne.

  5. Wprowadź nazwę i wartość wpisu tajnego. Wartość może być dowolna. 

  6. Pozostaw pustą datę aktywacji i datę wygaśnięcia oraz zostaw opcję Włączone ustawioną na wartość Tak

  7. Wybierz pozycję Utwórz , aby utworzyć wpis tajny.

    Zrzut ekranu przedstawiający sposób tworzenia wpisu tajnego.

Udzielanie dostępu

Tożsamość zarządzana używana przez maszynę wirtualną musi mieć dostęp do odczytu wpisu tajnego przechowywanego przez usługę Key Vault.

  1. Przejdź do nowo utworzonego magazynu kluczy.

  2. Wybierz pozycję Zasady dostępu z menu po lewej stronie.

  3. Wybierz opcję Dodaj zasady dostępu.

    Zrzut ekranu przedstawiający ekran zasad dostępu do magazynu kluczy.

  4. W sekcji Dodawanie zasad dostępu w obszarze Konfigurowanie z szablonu (opcjonalnie) wybierz pozycję Zarządzanie wpisami tajnymi z menu rozwijanego.

  5. Wybierz pozycję Wybierz jednostkę, a następnie w polu wyszukiwania wprowadź nazwę utworzonej wcześniej maszyny wirtualnej. 

  6. Wybierz maszynę wirtualną z listy wyników, a następnie wybierz pozycję Wybierz.

  7. Wybierz opcję Dodaj.

  8. Wybierz pozycję Zapisz.

Uzyskiwanie dostępu do danych

W tej sekcji pokazano, jak uzyskać token dostępu przy użyciu tożsamości maszyny wirtualnej i użyć go do pobrania wpisu tajnego z usługi Key Vault. Jeśli nie masz zainstalowanego programu PowerShell 4.3.1 (lub nowszej wersji), musisz pobrać i zainstalować najnowszą wersję.

Uwaga

Metoda używania programu PowerShell do uwierzytelniania i pobierania wpisu tajnego jest preferowana w scenariuszach, w których tożsamości zarządzane są w szczególności wymagane lub podczas osadzania procesu w kodzie aplikacji.

Najpierw użyj przypisanej przez system tożsamości zarządzanej maszyny wirtualnej, aby uzyskać token dostępu do uwierzytelniania w usłudze Key Vault:

  1. W portalu przejdź do pozycji Maszyny wirtualne i przejdź do maszyny wirtualnej z systemem Windows, a następnie w obszarze Przegląd wybierz pozycję Połącz.
  2. Wprowadź nazwę użytkownika i hasło dodane podczas tworzenia maszyny wirtualnej z systemem Windows.
  3. Po utworzeniu połączenia pulpitu zdalnego z maszyną wirtualną otwórz program PowerShell w sesji zdalnej.
  4. W programie PowerShell wywołaj żądanie internetowe w dzierżawie, aby uzyskać token dla hosta lokalnego w konkretnym porcie dla maszyny wirtualnej.

Uwaga

W przypadku korzystania z suwerennej chmury, takiej jak GCC-H, użyj punktu końcowego vault.usgovcloudapi.net zamiast vault.azure.net w poleceniu cmdlet programu PowerShell.

Przykładowe żądanie programu PowerShell:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"} 

Uwaga

Podczas pracy z suwerennymi chmurami należy wprowadzić zmiany w punkcie końcowym określonym na końcu polecenia cmdlet.

Na przykład vault.usgovcloudapi.net należy go użyć podczas pracy z chmurą Azure Government, co jest wynikiem końcowym:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"

Aby potwierdzić, że sufiks jest zgodny ze środowiskiem, zapoznaj się z artykułem Omówienie zabezpieczeń usługi Azure Key Vault.

Odpowiedź powinna wyglądać następująco:

Zrzut ekranu przedstawiający żądanie z odpowiedzią na token.

Następnie wyodrębnij token dostępu z odpowiedzi.

   $KeyVaultToken = $Response.access_token

Na koniec użyj polecenia cmdlet programu PowerShell Invoke-WebRequest , aby pobrać wpis tajny utworzony wcześniej w usłudze Key Vault, przekazując token dostępu w nagłówku Autoryzacja. Będziesz potrzebować adresu URL usługi Key Vault, który znajduje się w sekcji Podstawowe elementy na stronie Przegląd usługi Key Vault.

Invoke-RestMethod -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}

Odpowiedź powinna wyglądać następująco:

  value       id                                                                                    attributes
  -----       --                                                                                    ----------
  'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16…

Po pobraniu wpisu tajnego z usługi Key Vault możesz użyć go do uwierzytelnienia w usłudze wymagającej nazwy i hasła.

Czyszczenie zasobów

Na koniec, gdy chcesz wyczyścić zasoby, zaloguj się do witryny Azure Portal, wybierz pozycję Grupy zasobów, zlokalizuj i wybierz grupę zasobów utworzoną w procesie tego samouczka (na przykład mi-test). Następnie użyj polecenia Usuń grupę zasobów.

Możesz również wyczyścić zasoby przy użyciu programu PowerShell lub interfejsu wiersza polecenia.

Uzyskiwanie dostępu do menedżera zasobów przy użyciu przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Windows

Napiwek

Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.

W tym samouczku wyjaśniono, jak utworzyć tożsamość przypisaną przez system, przypisać ją do maszyny wirtualnej z systemem Windows, a następnie użyć tej tożsamości, aby uzyskać dostęp do interfejsu API usługi Azure Resource Manager . Tożsamości usługi zarządzanej są zarządzane automatycznie przez platformę Azure. Umożliwiają one uwierzytelnianie usługom obsługującym uwierzytelnianie firmy Microsoft Entra bez konieczności osadzania poświadczeń w kodzie.

Dowiesz się, jak:

  • Udziel maszynie wirtualnej dostępu do usługi Azure Resource Manager.
  • Uzyskiwanie tokenu dostępu przy użyciu przypisanej przez system tożsamości zarządzanej maszyny wirtualnej w celu uzyskania dostępu do usługi Resource Manager.
  1. Zaloguj się do witryny Azure Portal przy użyciu konta administratora.

  2. Przejdź do karty Grupy zasobów.

  3. Wybierz grupę zasobów, której chcesz udzielić tożsamości zarządzanej maszyny wirtualnej.

  4. W panelu po lewej stronie wybierz pozycję Kontrola dostępu (zarządzanie dostępem i tożsamościami).

  5. Wybierz pozycję Dodaj, a następnie wybierz pozycję Dodaj przypisanie roli.

  6. Na karcie Rola wybierz pozycję Czytelnik. Ta rola umożliwia wyświetlanie wszystkich zasobów, ale nie pozwala na wprowadzanie żadnych zmian.

  7. Na karcie Członkowie w polu Przypisz dostęp do wybierz pozycję Tożsamość zarządzana, a następnie wybierz pozycję + Wybierz członków.

  8. Upewnij się, że na liście rozwijanej Subskrypcja znajduje się odpowiednia subskrypcja. W obszarze Grupa zasobów wybierz pozycję Wszystkie grupy zasobów.

  9. Z listy rozwijanej Zarządzanie tożsamościami wybierz pozycję Maszyna wirtualna.

  10. W obszarze Wybierz wybierz maszynę wirtualną z listy rozwijanej, a następnie wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający dodawanie roli czytelnika do tożsamości zarządzanej.

Pobranie tokenu dostępu

Użyj przypisanej przez system tożsamości zarządzanej maszyny wirtualnej i wywołaj usługę Resource Manager, aby uzyskać token dostępu.

Aby wykonać te kroki, potrzebujesz klienta SSH. Jeśli używasz systemu Windows, możesz użyć klienta SSH w Podsystem Windows dla systemu Linux. Jeżeli potrzebujesz pomocy w konfigurowaniu kluczy klienta SSH, zobacz Jak używać kluczy SSH z systemem Windows na platformie Azure lub Jak utworzyć i użyć parę publicznego i prywatnego klucza SSH dla maszyn wirtualnych z systemem Linux na platformie Azure.

  1. W portalu przejdź do maszyny wirtualnej z systemem Linux, a następnie w obszarze Przegląd wybierz pozycję Połącz.
  2. Połącz się z maszyną wirtualną przy użyciu wybranego klienta SSH.
  3. W oknie terminalu, używając polecenia curl, prześlij żądanie do lokalnego punktu końcowego tożsamości zarządzanych dla zasobów platformy Azure, aby uzyskać token dostępu dla usługi Azure Resource Manager.   Żądanie programu curl dla tokenu dostępu znajduje się poniżej.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Uwaga

Wartość parametru resource musi być dokładnie zgodna z oczekiwaniami identyfikatora Entra firmy Microsoft. W przypadku identyfikatora zasobu usługi Resource Manager należy uwzględnić końcowy ukośnik identyfikatora URI.

Odpowiedź zawiera token dostępu wymagany do uzyskania dostępu do usługi Azure Resource Manager.

Reakcja:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Użyj tego tokenu dostępu, aby uzyskać dostęp do usługi Azure Resource Manager; na przykład, aby przeczytać szczegóły grupy zasobów, do której wcześniej udzielono tego dostępu do maszyny wirtualnej. Zastąp wartości <SUBSCRIPTION-ID>, <RESOURCE-GROUP>i <ACCESS-TOKEN> utworzonymi wcześniej wartościami .

Uwaga

W adresie URL jest uwzględniana wielkość liter, dlatego upewnij się, że używasz dokładnego przypadku użytego wcześniej podczas nazywania grupy zasobów, a wielkie litery "G" w grupie zasobów.

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

Odpowiedź z powrotem z określonymi informacjami o grupie zasobów:

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Uzyskiwanie dostępu do usługi Azure Resource Manager przy użyciu tożsamości zarządzanej przypisanej przez użytkownika na maszynie wirtualnej z systemem Windows

W tym samouczku wyjaśniono, jak utworzyć tożsamość przypisaną przez użytkownika, przypisać ją do maszyny wirtualnej z systemem Windows, a następnie użyć tej tożsamości, aby uzyskać dostęp do interfejsu API usługi Azure Resource Manager . Tożsamości usługi zarządzanej są zarządzane automatycznie przez platformę Azure. Umożliwiają one uwierzytelnianie usługom obsługującym uwierzytelnianie firmy Microsoft Entra bez konieczności osadzania poświadczeń w kodzie.

Dowiesz się, jak:

  • Tworzenie tożsamości zarządzanej przypisanej przez użytkownika
  • Przypisywanie tożsamości przypisanej przez użytkownika do maszyny wirtualnej z systemem Windows
  • Udzielanie tożsamości przypisanej przez użytkownika dostępu do grupy zasobów w usłudze Azure Resource Manager
  • Uzyskiwanie tokenu dostępu przy użyciu tożsamości przypisanej przez użytkownika oraz używanie go do wywołania usługi Azure Resource Manager
  • Odczytywanie właściwości grupy zasobów

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Konfigurowanie programu Azure PowerShell lokalnie

Aby uruchomić skrypty w tym przykładzie, masz dwie opcje:

  • Użyj usługi Azure Cloud Shell, którą można otworzyć za pomocą przycisku Wypróbuj w prawym górnym rogu bloków kodu.
  • Uruchamianie skryptów lokalnie za pomocą programu Azure PowerShell zgodnie z opisem w następnej sekcji.

Aby użyć programu Azure PowerShell lokalnie na potrzeby tego samouczka (zamiast korzystania z usługi Cloud Shell), wykonaj następujące kroki:

  1. Zainstaluj najnowszą wersję programu Azure PowerShell, jeśli jeszcze tego nie zrobiono.

  2. Zaloguj się do platformy Azure:

    Connect-AzAccount
    
  3. Zainstaluj najnowszą wersję modułu PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Po uruchomieniu tego polecenia w następnym kroku może być konieczne wylogowanie Exit się z bieżącej sesji programu PowerShell.

  4. Zainstaluj wydaną wersję modułu Az.ManagedServiceIdentity . Musisz wykonać operacje tożsamości zarządzanej przypisanej przez użytkownika w tym samouczku:

    Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
    

Włącz

W przypadku scenariuszy opartych na tożsamości przypisanej przez użytkownika należy wykonać następujące kroki w tej sekcji:

  1. Utwórz tożsamość.
  2. Przypisz nowo utworzoną tożsamość.

Tworzenie tożsamości

W tej sekcji pokazano, jak utworzyć tożsamość przypisaną przez użytkownika, która jest tworzona jako autonomiczny zasób platformy Azure. Za pomocą polecenia cmdlet New-AzUserAssignedIdentity platforma Azure tworzy tożsamość w dzierżawie firmy Microsoft Entra, którą można przypisać do co najmniej jednego wystąpienia usługi platformy Azure.

Ważne

Podczas tworzenia tożsamości zarządzanych przypisanych przez użytkownika nazwa musi zaczynać się literą lub cyfrą i może zawierać kombinację znaków alfanumerycznych, łączników (-) i podkreśleń (_). Aby przypisanie do maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych działało prawidłowo, nazwa jest ograniczona do 24 znaków. Aby uzyskać więcej informacji, zobacz FAQs and known issues (Często zadawane pytania i znane problemy).

New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1

Odpowiedź zawiera szczegóły utworzonej tożsamości przypisanej przez użytkownika, podobnie jak w poniższym przykładzie. Zdefiniuj Id wartości i ClientId dla tożsamości przypisanej przez użytkownika, ponieważ są one używane w kolejnych krokach:

{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: aaaabbbb-0000-cccc-1111-dddd2222eeee
PrincipalId: aaaaaaaa-bbbb-cccc-1111-222222222222
ClientId: 00001111-aaaa-2222-bbbb-3333cccc4444
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-bbbb-cccc-1111-222222222222&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}

Przypisywanie tożsamości

W tej sekcji przedstawiono sposób przypisywania tożsamości przypisanej przez użytkownika do maszyny wirtualnej z systemem Windows. Tożsamość przypisana przez użytkownika może być używana przez klientów w obrębie wielu zasobów platformy Azure. Użyj poniższych poleceń, aby przypisać tożsamość przypisaną przez użytkownika do pojedynczej maszyny wirtualnej. Użyj właściwości Id zwróconej w poprzednim kroku dla parametru -IdentityID.

$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"

Udzielanie dostępu

W tej sekcji pokazano, jak udzielić tożsamości przypisanej przez użytkownika dostępu do grupy zasobów w usłudze Azure Resource Manager. Tożsamości zarządzane dla zasobów platformy Azure zapewniają tożsamości, których kod może używać do żądania tokenów dostępu w celu uwierzytelniania w interfejsach API zasobów, które obsługują uwierzytelnianie firmy Microsoft Entra. W tym samouczku kod będzie uzyskiwać dostęp do interfejsu API usługi Azure Resource Manager.

Aby kod mógł uzyskać dostęp do interfejsu API, musisz udzielić dostępu tożsamości do zasobu w usłudze Azure Resource Manager. W takim przypadku uzyskujesz dostęp do grupy zasobów, dla której znajduje się maszyna wirtualna. Zaktualizuj wartość <SUBSCRIPTIONID> zgodnie z wymaganiami środowiska.

$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"

Odpowiedź zawiera szczegóły utworzonego przypisania roli, podobne do poniższego przykładu:

RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: 00000000-0000-0000-0000-000000000000
ObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
ObjectType: ServicePrincipal
CanDelegate: False

Uzyskiwanie dostępu do danych

Napiwek

Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.

Pobranie tokenu dostępu

W pozostałej części samouczka pracujesz z utworzonej wcześniej maszyny wirtualnej.

  1. Zaloguj się w witrynie Azure Portal.

  2. W portalu przejdź do pozycji Maszyny wirtualne i przejdź do maszyny wirtualnej z systemem Windows. W obszarze Przegląd wybierz pozycję Połącz.

  3. Wprowadź nazwę użytkownika i hasło użyte podczas tworzenia maszyny wirtualnej z systemem Windows.

  4. Po utworzeniu połączenia pulpitu zdalnego z maszyną wirtualną otwórz program PowerShell w sesji zdalnej.

  5. Za pomocą polecenia cmdlet programu PowerShell Invoke-WebRequest prześlij żądanie do lokalnego punktu końcowego tożsamości zarządzanych dla zasobów platformy Azure, aby uzyskać token dostępu dla usługi Azure Resource Manager. Wartość client_id jest wartością zwracaną podczas tworzenia tożsamości zarządzanej przypisanej przez użytkownika.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"}
    $content = $response.Content | ConvertFrom-Json
    $ArmToken = $content.access_token
    

Odczytywanie właściwości

Na koniec użyj tokenu dostępu pobranego w poprzednim kroku, aby uzyskać dostęp do usługi Azure Resource Manager, a następnie zapoznaj się z właściwościami grupy zasobów, do której udzielono dostępu tożsamości przypisanej przez użytkownika. Zastąp <SUBSCRIPTION ID> element identyfikatorem subskrypcji środowiska.

(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/80c696ff-5efa-4909-a64d-f1b616f423ca/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content

Odpowiedź zawiera informacje o określonej grupie zasobów, podobne do poniższego przykładu:

{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}

Dowiedz się więcej