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.
- Jeśli musisz utworzyć maszynę wirtualną na potrzeby tego samouczka, zobacz Tworzenie maszyny wirtualnej z włączoną tożsamością przypisaną przez system.
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.
Aby włączyć tożsamość zarządzaną przypisaną przez system na nowej maszynie wirtualnej:
Zaloguj się w witrynie Azure Portal.
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:
- W witrynie Azure Portal wybierz pozycję Data Lake Store w obszarze nawigacji po lewej stronie.
- Wybierz usługę Data Lake Store, której chcesz użyć w tym samouczku.
- Wybierz pozycję Eksplorator danych na pasku poleceń.
- Zostanie zaznaczony folder główny usługi Data Lake Store. Wybierz pozycję Dostęp na pasku poleceń.
- 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.
- Wybierz pozycję Wybierz uprawnienia, a następnie Odczyt i Wykonaj. Dodaj do tego folderu, a następnie wybierz pozycję Tylko uprawnienie dostępu.
- Wybierz przycisk OK, a następnie zamknij blok Dostęp . Dodawanie uprawnienia powinno zakończyć się pomyślnie.
- 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.
- Wybierz utworzony folder, a następnie wybierz pozycję Dostęp na pasku poleceń.
- Wybierz pozycję Dodaj, a następnie w polu Wybierz wprowadź nazwę maszyny wirtualnej i wybierz pozycję Wybierz.
- 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ń.
- 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.
W portalu przejdź do pozycji Maszyny wirtualne, przejdź do maszyny wirtualnej z systemem Windows. Następnie w obszarze Przegląd wybierz pozycję Połącz.
Wprowadź nazwę użytkownika i hasło dodane podczas tworzenia maszyny wirtualnej z systemem Windows.
Po utworzeniu połączenia pulpitu zdalnego z maszyną wirtualną otwórz program PowerShell w sesji zdalnej.
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 tohttps://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
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ągBearer
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
Teraz spróbuj przekazać plik do usługi Data Lake Store. Najpierw utwórz plik do przekazania.
echo "Test file." > Test1.txt
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.- Wyślij żądanie i pobierz przekierowanie do lokalizacji, w której powinien zostać przekazany plik.
- 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.
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.
Aby włączyć tożsamość zarządzaną przypisaną przez system na nowej maszynie wirtualnej:
Zaloguj się w witrynie Azure Portal.
Utwórz maszynę wirtualną z włączoną tożsamością przypisaną przez system.
Tworzenie konta magazynu
W tej sekcji utworzysz konto magazynu.
Wybierz przycisk + Utwórz zasób znajdujący się w lewym górnym rogu witryny Azure Portal.
Wybierz pozycję Magazyn, a następnie pozycję Konto magazynu — obiekt blob, plik, tabela, kolejka.
W polu Nazwa wprowadź nazwę konta magazynu.
Opcje Model wdrażania i Rodzaj konta należy ustawić na Resource Manager i Magazyn (ogólnego przeznaczenia, wersja 1).
Upewnij się, że Subskrypcja i Grupa zasobów pasują do wartości określonych podczas tworzenia maszyny wirtualnej w poprzednim kroku.
Wybierz pozycję Utwórz.
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.
Przejdź do nowo utworzonego konta magazynu.
W sekcji Blob Service wybierz pozycję Kontenery.
Wybierz pozycję + Kontener w górnej części strony.
W polu Nowy kontener wprowadź nazwę kontenera , a następnie w opcji Poziom dostępu publicznego zachowaj wartość domyślną.
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.
Wybierz nazwę kontenera, aby przekazać plik do nowo utworzonego kontenera, a następnie wybierz pozycję Przekaż.
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ż.
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.
Przejdź do nowo utworzonego konta magazynu.
Wybierz pozycję Kontrola dostępu (IAM) .
Wybierz pozycję Dodaj>przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.
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>
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.
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.
Wybierz pozycję Magazyn, a następnie pozycję Konto magazynu.
W panelu Tworzenie konta magazynu wprowadź nazwę konta magazynu.
Upewnij się, że dla modelu wdrażania i typu konta ustawiono wartość Resource Manager i Ogólnego przeznaczenia.
Sprawdź, czy subskrypcja i grupa zasobów są zgodne z elementami określonymi podczas tworzenia maszyny wirtualnej w poprzednim kroku.
Wybierz pozycję Utwórz , aby utworzyć konto 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.
Przejdź do nowo utworzonego konta magazynu.
Wybierz link Kontenery w panelu po lewej stronie w obszarze Blob Service.
Wybierz pozycję + Kontener w górnej części strony, a następnie powinien zostać wyświetlony panel Nowy kontener .
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.
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.
Przejdź z powrotem do nowo utworzonego konta magazynu.
Wybierz pozycję Kontrola dostępu (IAM) .
Wybierz pozycję Dodaj>przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.
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>
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.
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.
Wprowadź nazwę użytkownika i hasło dodane podczas tworzenia maszyny wirtualnej z systemem Windows.
Ustanów połączenie pulpitu zdalnego z maszyną wirtualną.
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.
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
.Następnie wyodrębnij poświadczenie sygnatury dostępu współdzielonego z odpowiedzi:
$sasContent = $sasResponse.Content | ConvertFrom-Json $sasCred = $sasContent.serviceSasToken
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
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
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 PowerShellSet-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
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.
Aby włączyć tożsamość zarządzaną przypisaną przez system na nowej maszynie wirtualnej:
Zaloguj się w witrynie Azure Portal.
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:
- Włącz uwierzytelnianie microsoft Entra dla serwera.
- 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:
- W witrynie Azure Portal wybierz pozycję Serwer SQL w obszarze nawigacji po lewej stronie.
- Wybierz serwer SQL, który chcesz włączyć dla uwierzytelniania firmy Microsoft Entra.
- W sekcji Ustawienia bloku wybierz pozycję Administrator usługi Active Directory.
- Na pasku poleceń wybierz pozycję Ustaw administratora.
- Wybierz konto użytkownika Microsoft Entra, które ma zostać administratorem serwera, a następnie wybierz pozycję Wybierz.
- 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:
- Uwierzytelnianie uniwersalne z usługami SQL Database i Azure Synapse Analytics (obsługa programu SSMS dla uwierzytelniania wieloskładnikowego)
- Konfigurowanie uwierzytelniania entra firmy Microsoft i zarządzanie nim za pomocą usługi SQL Database lub Azure Synapse Analytics
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
Otwórz program SQL Server Management Studio.
W oknie dialogowym Łączenie z serwerem wprowadź nazwę serwera w polu Nazwa serwera.
W polu Uwierzytelnianie wybierz opcję Active Directory — uniwersalne z obsługą uwierzytelniania wieloskładnikowego.
W polu Nazwa użytkownika wprowadź nazwę konta Microsoft Entra ustawionego jako administrator serwera, na przykład cjensen@fabrikam.com.
Wybierz Opcje.
W polu Połącz z bazą danych wpisz nazwę niesystemowej bazy danych, którą chcesz skonfigurować.
Wybierz pozycję Połącz, a następnie zakończ proces logowania.
W Eksploratorze obiektów rozwiń folder Bazy danych.
Kliknij prawym przyciskiem myszy bazę danych użytkownika, a następnie wybierz pozycję Nowe zapytanie.
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.
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.
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.
Wprowadź poświadczenia administratora maszyny wirtualnej dodane podczas tworzenia maszyny wirtualnej z systemem Windows.
Po utworzeniu połączenia pulpitu zdalnego z maszyną wirtualną otwórz program PowerShell w sesji zdalnej.
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
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.
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.
Zaloguj się w witrynie Azure Portal.
W górnej części lewego paska nawigacyjnego wybierz pozycję Utwórz zasób.
W polu Wyszukaj w witrynie Marketplace wpisz Ciąg Key Vault i naciśnij Enter.
Wybierz pozycję Key Vault z wyników, a następnie wybierz pozycję Utwórz.
Podaj nazwę nowego magazynu kluczy.
Wypełnij wszystkie wymagane informacje. Upewnij się, że wybrano subskrypcję i grupę zasobów używaną na potrzeby tego samouczka.
Wybierz pozycję Przejrzyj i utwórz.
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.
Przejdź do nowo utworzonego magazynu kluczy.
Wybierz pozycję Wpisy tajne, a następnie wybierz pozycję Dodaj.
Wybierz Generuj/Import.
Na ekranie Tworzenie wpisu tajnego w opcjach Przekazywania pozostaw wybraną opcję Ręczne.
Wprowadź nazwę i wartość wpisu tajnego. Wartość może być dowolna.
Pozostaw pustą datę aktywacji i datę wygaśnięcia oraz zostaw opcję Włączone ustawioną na wartość Tak.
Wybierz pozycję Utwórz , aby utworzyć wpis tajny.
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.
Przejdź do nowo utworzonego magazynu kluczy.
Wybierz pozycję Zasady dostępu z menu po lewej stronie.
Wybierz opcję Dodaj zasady dostępu.
W sekcji Dodawanie zasad dostępu w obszarze Konfigurowanie z szablonu (opcjonalnie) wybierz pozycję Zarządzanie wpisami tajnymi z menu rozwijanego.
Wybierz pozycję Wybierz jednostkę, a następnie w polu wyszukiwania wprowadź nazwę utworzonej wcześniej maszyny wirtualnej.
Wybierz maszynę wirtualną z listy wyników, a następnie wybierz pozycję Wybierz.
Wybierz opcję Dodaj.
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:
- 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.
- Wprowadź nazwę użytkownika i hasło dodane podczas tworzenia maszyny wirtualnej z systemem Windows.
- Po utworzeniu połączenia pulpitu zdalnego z maszyną wirtualną otwórz program PowerShell w sesji zdalnej.
- 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:
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.
Zaloguj się do witryny Azure Portal przy użyciu konta administratora.
Przejdź do karty Grupy zasobów.
Wybierz grupę zasobów, której chcesz udzielić tożsamości zarządzanej maszyny wirtualnej.
W panelu po lewej stronie wybierz pozycję Kontrola dostępu (zarządzanie dostępem i tożsamościami).
Wybierz pozycję Dodaj, a następnie wybierz pozycję Dodaj przypisanie roli.
Na karcie Rola wybierz pozycję Czytelnik. Ta rola umożliwia wyświetlanie wszystkich zasobów, ale nie pozwala na wprowadzanie żadnych zmian.
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.
Upewnij się, że na liście rozwijanej Subskrypcja znajduje się odpowiednia subskrypcja. W obszarze Grupa zasobów wybierz pozycję Wszystkie grupy zasobów.
Z listy rozwijanej Zarządzanie tożsamościami wybierz pozycję Maszyna wirtualna.
W obszarze Wybierz wybierz maszynę wirtualną z listy rozwijanej, a następnie wybierz pozycję Zapisz.
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.
- W portalu przejdź do maszyny wirtualnej z systemem Linux, a następnie w obszarze Przegląd wybierz pozycję Połącz.
- Połącz się z maszyną wirtualną przy użyciu wybranego klienta SSH.
- 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 programucurl
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:
Zainstaluj najnowszą wersję programu Azure PowerShell, jeśli jeszcze tego nie zrobiono.
Zaloguj się do platformy Azure:
Connect-AzAccount
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.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:
- Utwórz tożsamość.
- 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-0000-1111-2222-bbbbbbbbbbbb&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.
Zaloguj się w witrynie Azure Portal.
W portalu przejdź do pozycji Maszyny wirtualne i przejdź do maszyny wirtualnej z systemem Windows. W obszarze Przegląd wybierz pozycję Połącz.
Wprowadź nazwę użytkownika i hasło użyte podczas tworzenia maszyny wirtualnej z systemem Windows.
Po utworzeniu połączenia pulpitu zdalnego z maszyną wirtualną otwórz program PowerShell w sesji zdalnej.
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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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
- Co to są tożsamości zarządzane dla zasobów platformy Azure?
- Szybki start: uzyskiwanie dostępu do usługi Azure Resource Manager przy użyciu tożsamości zarządzanej przypisanej przez użytkownika na maszynie wirtualnej
- Tworzenie, wyświetlanie listy lub usuwanie tożsamości zarządzanej przypisanej przez użytkownika przy użyciu programu Azure PowerShell