Samouczek: uzyskiwanie dostępu do zasobów platformy Azure przy użyciu maszyny wirtualnej/zestawu skalowania maszyn wirtualnych z systemem Linux
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 Linux 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 Linux 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 Linux w celu uzyskania dostępu do usługi Azure Data Lake Store.
Dowiesz się, jak:
- Udzielanie maszynie wirtualnej praw dostępu do usługi Azure Data Lake Store.
- Uzyskiwanie tokenu dostępu przy użyciu przypisanej przez system tożsamości zarządzanej maszyny wirtualnej do uzyskiwania dostępu do usługi Azure Data Lake Store.
Przyznaj dostęp
W tej sekcji pokazano, jak 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ącego wystąpienia usługi Data Lake Store lub utworzyć nowe. Aby utworzyć wystąpienie usługi Data Lake Store przy użyciu witryny Azure Portal, wykonaj czynności opisane w przewodniku Szybki start dotyczącym 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 przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Linux uprawnienia do odczytu, zapisu i wykonywania plików w tym folderze:
- W witrynie Azure Portal wybierz pozycję Data Lake Store w okienku po lewej stronie.
- Wybierz wystąpienie usługi Data Lake Store, którego chcesz używać.
- Wybierz pozycję Eksplorator danych na pasku poleceń.
- Zostanie zaznaczony folder główny wystąpienia usługi Data Lake Store. Wybierz pozycję Uzyskaj 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. Wybierz pozycję Odczyt i Wykonaj, dodaj do tego folderu, dodaj tylko jako uprawnienie dostępu, a następnie wybierz przycisk OK. Dodawanie uprawnienia powinno zakończyć się pomyślnie.
- Zamknij okienko Dostęp.
- Utwórz nowy folder, a następnie 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.
- Wybierz maszynę wirtualną z wyników wyszukiwania, a następnie wybierz pozycję Wybierz.
- Wybierz pozycję Wybierz uprawnienia, a następnie wybierz pozycję Odczyt, a następnie zapisz i wykonaj.
- Wybierz pozycję , aby dodać do tego folderu, a następnie dodaj jako wpis uprawnień dostępu i domyślny wpis uprawnień, a następnie wybierz przycisk OK. Dodawanie uprawnienia powinno zakończyć się pomyślnie.
Tożsamości zarządzane dla zasobów platformy Azure mogą teraz wykonywać wszystkie operacje na plikach w utworzonym folderze. Aby uzyskać więcej informacji na temat zarządzania dostępem do usługi Data Lake Store, zobacz Kontrola dostępu w usłudze Data Lake Store.
Pobranie tokenu dostępu
W tej sekcji pokazano, jak uzyskać token dostępu i wywołać system plików usługi Data Lake Store. 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 entra do punktu końcowego systemu plików usługi Data Lake Store. Token dostępu znajduje się w nagłówku autoryzacji w formacie 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).
Następnie uwierzytelniasz się w interfejsie API REST dla systemu plików usługi Data Lake Store przy użyciu biblioteki cURL, aby wysyłać żądania REST.
Uwaga
Zestawy SDK klientów dla systemu plików usługi Data Lake Store jeszcze nie obsługują tożsamości zarządzanych dla zasobów platformy Azure.
Aby wykonać te kroki, potrzebujesz klienta SSH. Jeśli używasz systemu Windows, możesz użyć klienta SSH w pozycji 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 sekcji Przegląd wybierz pozycję Połącz.
Połącz się z maszyną wirtualną przy użyciu wybranego klienta protokołu SSH.
W oknie terminalu za pomocą narzędzia cURL wykonaj żądanie do lokalnego punktu końcowego tożsamości zarządzanych platformy Azure dla zasobów platformy Azure w celu uzyskania tokenu dostępu dla systemu plików usługi Data Lake Store. Identyfikator zasobu usługi Data Lake Store to
https://datalake.azure.net/
. Ważne jest, aby na końcu identyfikatora zasobu uwzględnić kreskę ukośną.curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -H Metadata:true
Odpowiedź oznaczająca powodzenie zwraca token dostępu służący do uwierzytelniania w usłudze Data Lake Store:
{"access_token":"eyJ0eXAiOiJ...", "refresh_token":"", "expires_in":"3599", "expires_on":"1508119757", "not_before":"1508115857", "resource":"https://datalake.azure.net/", "token_type":"Bearer"}
Za pomocą narzędzia cURL wyślij żądanie do punktu końcowego REST systemu plików usługi Data Lake Store, aby wyświetlić listę folderów w folderze głównym. Jest to najlepszy sposób sprawdzania, czy wszystko jest poprawnie skonfigurowane. Skopiuj wartość tokenu dostępu z poprzedniego kroku. Ważne jest, aby ciąg
Bearer
w nagłówku Autoryzacja miał wielkie litery "B". Nazwę wystąpienia usługi Data Lake Store można znaleźć w sekcji Przegląd okienka Data Lake Store w witrynie Azure Portal.curl https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -H "Authorization: Bearer <ACCESS_TOKEN>"
Prawidłowa odpowiedź wygląda następująco:
{"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY","blockSize":0,"accessTime":1507934941392,"modificationTime":1508105430590,"replication":0,"permission":"770","owner":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071","group":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071"}]}}
Teraz przekaż plik do wystąpienia usługi Data Lake Store. Najpierw utwórz plik do przekazania.
echo "Test file." > Test1.txt
Za pomocą narzędzia cURL wyślij żądanie do punktu końcowego REST systemu plików usługi Data Lake Store, aby przekazać plik do utworzonego wcześniej folderu. Przekazywanie obejmuje przekierowanie, a narzędzie cURL automatycznie przeprowadza przekierowanie.
curl -i -X PUT -L -T Test1.txt -H "Authorization: Bearer <ACCESS_TOKEN>" 'https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/<FOLDER_NAME>/Test1.txt?op=CREATE'
Prawidłowa odpowiedź wygląda następująco:
HTTP/1.1 100 Continue HTTP/1.1 307 Temporary Redirect Cache-Control: no-cache, no-cache, no-store, max-age=0 Pragma: no-cache Expires: -1 Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true x-ms-request-id: 756f6b24-0cca-47ef-aa12-52c3b45b954c ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=15724800; includeSubDomains Date: Sun, 15 Oct 2017 22:10:30 GMT Content-Length: 0 HTTP/1.1 100 Continue HTTP/1.1 201 Created Cache-Control: no-cache, no-cache, no-store, max-age=0 Pragma: no-cache Expires: -1 Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true x-ms-request-id: af5baa07-3c79-43af-a01a-71d63d53e6c4 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=15724800; includeSubDomains Date: Sun, 15 Oct 2017 22:10:30 GMT Content-Length: 0
Na koniec możesz teraz używać innych interfejsów API systemu plików usługi Data Lake Store do dołączania do plików, pobierania plików i nie tylko.
Używanie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Linux do uzyskiwania 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 Linux w celu uzyskania dostępu do usługi Azure Storage.
Dowiesz się, jak:
- Tworzenie konta magazynu
- Tworzenie kontenera obiektów blob na koncie magazynu
- Udzielanie tożsamości zarządzanej maszyny wirtualnej z systemem Linux dostępu do kontenera usługi Azure Storage
- Uzyskiwanie tokenu dostępu i używanie go do wywoływania usługi Azure Storage
Tworzenie konta magazynu
Aby uruchomić skrypty interfejsu wiersza polecenia w tym przykładzie, masz dwie opcje:
- Użyj usługi Azure Cloud Shell w witrynie Azure Portal lub za pośrednictwem przycisku Wypróbuj znajdującego się w prawym górnym rogu każdego bloku kodu.
- Zainstaluj najnowszą wersję interfejsu wiersza polecenia w wersji 2.0 (2.0.23 lub nowszej), jeśli wolisz używać lokalnej konsoli interfejsu wiersza polecenia.
Najpierw utwórz 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 obszarze 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.
Wybierz pozycję Blob Service, a następnie pozycję Kontenery.
Wybierz pozycję + Kontener w górnej części strony.
Wybierz pozycję Nowy kontener, a następnie wprowadź nazwę kontenera.
Upewnij się, że poziom dostępu publicznego jest wartością 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, a następnie pozycję Przekaż. Spowoduje to przekazanie pliku do nowo utworzonego kontenera.
W okienku Przekazywanie obiektu blob w sekcji Pliki wybierz ikonę folderu i przejdź do pliku hello_world.txt na komputerze lokalnym.
Wybierz plik, a następnie wybierz pozycję Przekaż.
Udzielanie maszynie wirtualnej dostępu do kontenera usługi Azure Storage
Tożsamość zarządzana maszyny wirtualnej służy do pobierania danych w obiekcie blob usługi Azure Storage. Tożsamości zarządzane dla zasobów platformy Azure mogą służyć do uwierzytelniania w zasobach obsługujących uwierzytelnianie firmy Microsoft Entra. Udziel dostępu, przypisując rolę storage-blob-data-reader do tożsamości zarządzanej w zakresie grupy zasobów zawierającej konto magazynu.
Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Uwaga
Aby uzyskać więcej informacji na temat różnych ról, których można użyć do udzielania uprawnień do magazynu, zobacz Autoryzowanie dostępu do obiektów blob i kolejek przy użyciu identyfikatora Microsoft Entra
Uzyskiwanie tokenu dostępu i używanie go do wywoływania usługi Azure Storage
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. Jest to część integracji usługi Azure Storage z identyfikatorem Entra firmy Microsoft i różni się od podawania poświadczeń w parametry połączenia.
Aby wykonać poniższe kroki, musisz pracować na utworzonej wcześniej maszynie wirtualnej, a do nawiązania połączenia z nią użyć klienta protokołu SSH.
Jeśli używasz systemu Windows, możesz użyć klienta SSH w pozycji 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 witrynie Azure Portal przejdź do pozycji Maszyny wirtualne, przejdź do maszyny wirtualnej z systemem Linux, a następnie na stronie Przegląd wybierz pozycję Połącz. Skopiuj ciąg, aby nawiązać połączenie z maszyną wirtualną.
Połącz się z maszyną wirtualną przy użyciu wybranego klienta SSH.
W oknie terminalu użyj narzędzia CURL, aby wysłać żądanie do lokalnego punktu końcowego tożsamości zarządzanej w celu uzyskania tokenu dostępu dla usługi Azure Storage.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
Użyj tokenu dostępu, aby uzyskać dostęp do usługi Azure Storage. Na przykład aby odczytać zawartość przykładowego pliku, który został wcześniej przekazany do kontenera, zastąp wartości
<STORAGE ACCOUNT>
,<CONTAINER NAME>
i<FILE NAME>
wartościami określonymi wcześniej oraz<ACCESS TOKEN>
tokenem zwróconym w poprzednim kroku.curl https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME> -H "x-ms-version: 2017-11-09" -H "Authorization: Bearer <ACCESS TOKEN>"
Odpowiedź zawiera zawartość pliku:
Hello world! :)
Na koniec możesz również przechowywać token w zmiennej i przekazać go do drugiego polecenia, jak pokazano poniżej:
# Run the first curl command and capture its output in a variable
access_token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq -r '.access_token')
# Run the second curl command with the access token
curl "https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME>" \
-H "x-ms-version: 2017-11-09" \
-H "Authorization: Bearer $access_token"
Używanie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Linux 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 zarządzanej przypisanej przez system dla maszyny wirtualnej z systemem Linux; w szczególności poświadczenia sygnatury dostępu współdzielonego usługi.
Uwaga
Klucz sygnatury dostępu współdzielonego wygenerowany w tym samouczku nie będzie ograniczony/powiązany z maszyną wirtualną.
Sygnatura dostępu współdzielonego usługi zapewnia ograniczony dostęp do obiektów na koncie magazynu bez ujawniania klucza dostępu konta. Dostępu można udzielić przez ograniczony czas i określonej usłudze. Poświadczenia sygnatury dostępu współdzielonego można używać jak zwykle podczas wykonywania operacji magazynu; na przykład w przypadku korzystania z zestawu STORAGE SDK. W tym samouczku przekażesz i pobierzesz obiekt blob przy użyciu interfejsu wiersza polecenia usługi Azure Storage.
Dowiesz się, jak:
- Tworzenie konta magazynu
- Tworzenie kontenera obiektów blob na koncie 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
Tworzenie konta magazynu
Jeśli jeszcze go nie masz, musisz utworzyć konto magazynu. Możesz pominąć ten krok i udzielić przypisanej przez system tożsamości zarządzanej maszyny wirtualnej dostępu do kluczy istniejącego konta magazynu.
Wybierz przycisk +/Utwórz nową usługę znajdujący się w lewym górnym rogu witryny Azure Portal.
Wybierz pozycję Magazyn, a następnie pozycję Konto magazynu, a następnie zostanie wyświetlony panel Tworzenie konta magazynu.
Wprowadź nazwę konta magazynu. Zapamiętaj tę nazwę, ponieważ będzie ona potrzebna później.
Upewnij się, że model wdrażania ma ustawioną wartość Resource Manager, a typ konta jest ustawiony na Wartość Ogólnego przeznaczenia.
Upewnij się, że subskrypcja i grupa zasobów są zgodne z tymi określonymi podczas tworzenia maszyny wirtualnej.
Wybierz pozycję Utwórz , aby zakończyć tworzenie 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, w którym ma być przechowywany plik.
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 zostanie wyświetlony panel Nowy kontener .
Nadaj kontenerowi nazwę, wybierz poziom dostępu, a następnie wybierz przycisk OK. Będzie potrzebna nazwa określona 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 natywnie obsługuje uwierzytelnianie firmy Microsoft Entra, więc możesz użyć przypisanej przez system tożsamości zarządzanej maszyny wirtualnej do pobrania sygnatury dostępu współdzielonego magazynu z usługi Resource Manager. Następnie możesz użyć sygnatury dostępu współdzielonego, aby uzyskać dostęp do magazynu.
W tej sekcji udzielasz przypisanej przez system tożsamości zarządzanej maszyny wirtualnej dostępu do sygnatury dostępu współdzielonego konta magazynu. Przypisz rolę Współautor konta magazynu do tożsamości zarządzanej w zakresie grupy zasobów zawierającej konto magazynu.
Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Uwaga
Aby uzyskać więcej informacji na temat różnych ról, których można użyć do udzielania uprawnień do magazynu, zobacz Autoryzowanie dostępu do obiektów blob i kolejek przy użyciu identyfikatora Entra firmy Microsoft.
Uzyskiwanie tokenu dostępu przy użyciu tożsamości maszyny wirtualnej oraz używanie go do wywołania usługi Azure Resource Manager
W pozostałej części tego samouczka będziesz pracować z utworzonej wcześniej maszyny wirtualnej.
Do wykonania tych kroków potrzebny jest klient SSH. Jeśli używasz systemu Windows, możesz użyć klienta SSH w Podsystem Windows dla systemu Linux. Jeśli potrzebujesz pomocy przy konfigurowaniu kluczy klienta SSH, zobacz:
- Jak używać kluczy protokołu SSH w systemie Windows na platformie Azure
- Tworzenie i używanie pary kluczy publicznych i prywatnych SSH dla maszyn wirtualnych z systemem Linux na platformie Azure.
Po utworzeniu klienta SSH wykonaj następujące kroki:
- W witrynie Azure Portal przejdź do pozycji Maszyny wirtualne, a następnie przejdź do maszyny wirtualnej z systemem Linux.
- Na stronie Przegląd wybierz pozycję Połącz w górnej części ekranu.
- Skopiuj ciąg, aby nawiązać połączenie z maszyną wirtualną.
- Połącz się z maszyną wirtualną przy użyciu klienta SSH.
- Wprowadź hasło dodane podczas tworzenia maszyny wirtualnej z systemem Linux. Logowanie powinno wtedy zostać pomyślnie wykonane.
- Użyj programu CURL, aby uzyskać token dostępu dla usługi Azure Resource Manager.
Żądanie programu CURL oraz odpowiedź 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%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true
Uwaga
W poprzednim żądaniu wartość parametru resource
musi być dokładnym dopasowaniem tego, czego oczekuje identyfikator 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.
W poniższej odpowiedzi element access_token został skrócony pod kątem zwięzłości.
{
"access_token":"eyJ0eXAiOiJ...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://management.azure.com",
"token_type":"Bearer"
}
Pobieranie poświadczeń SAS z usługi Azure Resource Manager w celu wykonywania wywołań do magazynu
Następnie użyj narzędzia CURL, aby wywołać usługę Resource Manager przy użyciu tokenu dostępu pobranego w poprzedniej sekcji. Użyj tego polecenia, aby utworzyć poświadczenia sygnatury dostępu współdzielonego magazynu. Po utworzeniu poświadczeń sygnatury dostępu współdzielonego możesz wywołać operacje przekazywania/pobierania 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.
}
Uwzględnij te parametry w treści żądania POST dla poświadczeń sygnatury dostępu współdzielonego. Aby uzyskać więcej informacji o parametrach potrzebnych do tworzenia poświadczeń SAS, zobacz Dokumentację interfejsu REST sygnatury dostępu współdzielonego usługi listy.
Użyj następującego żądania CURL, aby uzyskać poświadczenia SAS. Upewnij się, że parametry <SUBSCRIPTION ID>
, <RESOURCE GROUP>
, <STORAGE ACCOUNT NAME>
, <CONTAINER NAME>
i <EXPIRATION TIME>
zostały zastąpione własnymi wartościami. Zastąp wartość <ACCESS TOKEN>
tokenem dostępu pobranym wcześniej:
curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer <ACCESS TOKEN>"
Uwaga
W poprzednim adresie URL uwzględniana jest wielkość liter, dlatego upewnij się, że używasz wielkich małych liter dla grup zasobów, aby odpowiednio je odzwierciedlić. Ponadto ważne jest, aby wiedzieć, że jest to żądanie POST, a nie żądanie GET.
Odpowiedź programu CURL zwróci poświadczenia SAS:
{"serviceSasToken":"sv=2015-04-05&sr=c&spr=https&st=2017-09-22T00%3A10%3A00Z&se=2017-09-22T02%3A00%3A00Z&sp=rcw&sig=QcVwljccgWcNMbe9roAJbD8J5oEkYoq%2F0cUPlgriBn0%3D"}
Na maszynie wirtualnej z systemem Linux utwórz przykładowy plik obiektów blob w celu przekazania do kontenera magazynu obiektów blob przy użyciu następującego polecenia:
echo "This is a test file." > test.txt
Następnie uwierzytelnij się przy użyciu polecenia interfejsu wiersza polecenia az storage
przy użyciu poświadczeń sygnatury dostępu współdzielonego, a następnie przekaż plik do kontenera obiektów blob. W tym kroku musisz zainstalować najnowszy interfejs wiersza polecenia platformy Azure na maszynie wirtualnej, jeśli jeszcze tego nie zrobiono.
az storage blob upload --container-name
--file
--name
--account-name
--sas-token
Reakcja:
Finished[#############################################################] 100.0000%
{
"etag": "\"0x8D4F9929765C139\"",
"lastModified": "2017-09-21T03:58:56+00:00"
}
Możesz również pobrać plik przy użyciu interfejsu wiersza polecenia platformy Azure i uwierzytelnić się przy użyciu poświadczeń sygnatury dostępu współdzielonego.
Żądanie:
az storage blob download --container-name
--file
--name
--account-name
--sas-token
Reakcja:
{
"content": null,
"metadata": {},
"name": "testblob",
"properties": {
"appendBlobCommittedBlockCount": null,
"blobType": "BlockBlob",
"contentLength": 16,
"contentRange": "bytes 0-15/16",
"contentSettings": {
"cacheControl": null,
"contentDisposition": null,
"contentEncoding": null,
"contentLanguage": null,
"contentMd5": "Aryr///Rb+D8JQ8IytleDA==",
"contentType": "text/plain"
},
"copy": {
"completionTime": null,
"id": null,
"progress": null,
"source": null,
"status": null,
"statusDescription": null
},
"etag": "\"0x8D4F9929765C139\"",
"lastModified": "2017-09-21T03:58:56+00:00",
"lease": {
"duration": null,
"state": "available",
"status": "unlocked"
},
"pageBlobSequenceNumber": null,
"serverEncrypted": false
},
"snapshot": null
}
uzyskiwanie dostępu do usługi Azure Storage za pośrednictwem klucza dostępu przy użyciu przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Linux
Ten samouczek przedstawia sposób używania tożsamości zarządzanej przypisanej przez system do maszyny wirtualnej z systemem Linux w celu pobrania kluczy dostępu do konta magazynu. Klucz dostępu do magazynu można używać jak zwykle podczas wykonywania operacji magazynu; na przykład w przypadku korzystania z zestawu STORAGE SDK. Na potrzeby tego samouczka przekażesz i pobierzesz obiekty blob przy użyciu interfejsu wiersza polecenia platformy Azure.
Dowiesz się, jak:
- Udzielanie maszynie wirtualnej dostępu do kluczy dostępu 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 kluczy dostępu magazynu z usługi Resource Manager
Tworzenie konta magazynu
Jeśli nie masz istniejącego konta magazynu przed rozpoczęciem tego samouczka, musisz go utworzyć. Jeśli masz istniejące konto magazynu, wykonaj następujące kroki, aby udzielić przypisanej przez system tożsamości zarządzanej maszyny wirtualnej dostępu do kluczy dla istniejącego konta magazynu.
Wybierz przycisk +/Utwórz nową usługę znajdujący się w lewym górnym rogu witryny Azure Portal.
Wybierz pozycję Magazyn, a następnie pozycję Konto magazynu, a następnie zostanie wyświetlony panel Tworzenie konta magazynu.
Wprowadź nazwę konta magazynu. Zapamiętaj tę nazwę, ponieważ będzie ona potrzebna później.
Upewnij się, że model wdrażania ma ustawioną wartość Resource Manager, a typ konta jest ustawiony na Wartość Ogólnego przeznaczenia.
Upewnij się, że subskrypcja i grupa zasobów są zgodne z tymi określonymi podczas tworzenia maszyny wirtualnej.
Wybierz pozycję Utwórz , aby zakończyć tworzenie 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, w którym ma być przechowywany plik.
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 zostanie wyświetlony panel Nowy kontener .
Nadaj kontenerowi nazwę, wybierz poziom dostępu, a następnie wybierz przycisk OK. Będzie potrzebna nazwa określona w dalszej części samouczka.
Udzielanie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej dostępu do używania kluczy dostępu konta magazynu
Usługa Azure Storage nie obsługuje natywnie uwierzytelniania firmy Microsoft Entra. Można jednak użyć przypisanej przez system tożsamości zarządzanej maszyny wirtualnej, aby pobrać sygnaturę 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. Udziel dostępu, przypisując rolę Współautor konta magazynu do tożsamości zarządzanej w zakresie grupy zasobów zawierającej konto magazynu.
Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.
Uwaga
Aby uzyskać więcej informacji na temat różnych ról, których można użyć do udzielania uprawnień do magazynu, zobacz Autoryzowanie dostępu do obiektów blob i kolejek przy użyciu identyfikatora Entra firmy Microsoft.
Uzyskiwanie tokenu dostępu przy użyciu tożsamości maszyny wirtualnej oraz używanie go do wywołania usługi Azure Resource Manager
W pozostałej części samouczka pracujemy nad utworzoną wcześniej maszyną wirtualną.
Aby wykonać te kroki, potrzebujesz klienta SSH. Jeśli używasz systemu Windows, możesz użyć klienta SSH w pozycji 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 witrynie Azure Portal przejdź do pozycji Maszyny wirtualne, wybierz maszynę wirtualną z systemem Linux, a następnie na stronie Przegląd wybierz pozycję Połącz u góry. Skopiuj ciąg, aby nawiązać połączenie z maszyną wirtualną.
Połącz się z maszyną wirtualną przy użyciu klienta SSH.
Następnie należy wprowadzić hasło dodane podczas tworzenia maszyny wirtualnej z systemem Linux.
Użyj programu CURL, aby uzyskać token dostępu dla usługi Azure Resource Manager.
Żądanie programu CURL oraz odpowiedź 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%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true
Uwaga
W poprzednim żądaniu 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. W poniższej odpowiedzi element access_token został skrócony, aby zapewnić zwięzłość informacji.
{ "access_token": "eyJ0eXAiOiJ...", "refresh_token": "", "expires_in": "3599", "expires_on": "1504130527", "not_before": "1504126627", "resource": "https://management.azure.com", "token_type": "Bearer" }
Uzyskiwanie kluczy dostępu konta magazynu z usługi Azure Resource Manager w celu wykonywania wywołań magazynu
Teraz użyj programu CURL, aby wywołać usługę Resource Manager przy użyciu tokenu dostępu pozyskanego w poprzedniej sekcji, aby pobrać klucz dostępu do magazynu. Po uzyskaniu klucza dostępu do magazynu możemy wywołać operacje przekazywania/pobierania magazynu. Pamiętaj, aby zastąpić parametry <SUBSCRIPTION ID>
, <RESOURCE GROUP>
i <STORAGE ACCOUNT NAME>
własnymi wartościami. Zastąp wartość <ACCESS TOKEN>
tokenem dostępu pobranym wcześniej:
curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listKeys?api-version=2016-12-01 --request POST -d "" -H "Authorization: Bearer <ACCESS TOKEN>"
Uwaga
W tekście w poprzednim adresie URL rozróżniana jest wielkość liter, więc upewnij się, że stosujesz odpowiednie małe i wielkie litery dla grup zasobów, aby odpowiednio je przedstawić. Ponadto ważna informacja jest taka, że jest to żądanie POST, a nie GET. Należy upewnić się, że zostaje przekazana wartość do przechwytywania limitu długości z parametrem -d, który może mieć wartość NULL.
Odpowiedź programu CURL zapewnia listę kluczy:
{"keys":[{"keyName":"key1","permissions":"Full","value":"iqDPNt..."},{"keyName":"key2","permissions":"Full","value":"U+uI0B..."}]}
Utwórz przykładowy plik obiektu blob do przekazania do kontenera magazynu obiektów blob. Na maszynie wirtualnej z systemem Linux można to zrobić za pomocą następującego polecenia.
echo "This is a test file." > test.txt
Następnie przeprowadź uwierzytelnianie przy użyciu polecenia az storage
interfejsu wiersza polecenia, korzystając z klucza dostępu do magazynu, i przekaż plik do kontenera obiektów blob. W tym kroku musisz zainstalować najnowszy interfejs wiersza polecenia platformy Azure na maszynie wirtualnej, jeśli jeszcze tego nie zrobiono.
az storage blob upload -c <CONTAINER NAME> -n test.txt -f test.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>
Reakcja:
Finished[#############################################################] 100.0000%
{
"etag": "\"0x8D4F9929765C139\"",
"lastModified": "2017-09-12T03:58:56+00:00"
}
Ponadto możesz pobrać plik przy użyciu interfejsu wiersza polecenia platformy Azure oraz przeprowadzić uwierzytelnianie przy użyciu klucza dostępu do magazynu.
Żądanie:
az storage blob download -c <CONTAINER NAME> -n test.txt -f test-download.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>
Reakcja:
{
"content": null,
"metadata": {},
"name": "test.txt",
"properties": {
"appendBlobCommittedBlockCount": null,
"blobType": "BlockBlob",
"contentLength": 21,
"contentRange": "bytes 0-20/21",
"contentSettings": {
"cacheControl": null,
"contentDisposition": null,
"contentEncoding": null,
"contentLanguage": null,
"contentMd5": "LSghAvpnElYyfUdn7CO8aw==",
"contentType": "text/plain"
},
"copy": {
"completionTime": null,
"id": null,
"progress": null,
"source": null,
"status": null,
"statusDescription": null
},
"etag": "\"0x8D5067F30D0C283\"",
"lastModified": "2017-09-28T14:42:49+00:00",
"lease": {
"duration": null,
"state": "available",
"status": "unlocked"
},
"pageBlobSequenceNumber": null,
"serverEncrypted": false
},
"snapshot": null
}
Używanie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Linux do uzyskiwania dostępu do usługi Azure Key Vault
W tym samouczku pokazano, jak maszyna wirtualna z systemem Linux 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życie wpisu tajnego w celu uzyskania dostępu do zasobów, które nie są zabezpieczone przez identyfikator Entra firmy Microsoft. 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 uwzględniania informacji o uwierzytelnianiu 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 i używanie go do pobierania wpisu tajnego z usługi Key Vault
Tworzenie usługi Key Vault
Potrzebna jest również maszyna wirtualna z systemem Linux z włączonymi tożsamościami zarządzanymi przypisanymi przez system.
- Jeśli musisz utworzyć maszynę wirtualną na potrzeby tego samouczka, możesz skorzystać z artykułu zatytułowanego Tworzenie maszyny wirtualnej z systemem Linux przy użyciu witryny Azure Portal
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. Korzystając z tożsamości zarządzanych dla zasobów platformy Azure, kod może uzyskać tokeny dostępu w celu uwierzytelnienia 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.
Wybierz pozycję Utwórz.
Podaj nazwę nowego magazynu kluczy.
Wypełnij wszystkie wymagane informacje, upewniając się, że wybrano subskrypcję i grupę zasobów, w której utworzono maszynę wirtualną używaną na potrzeby tego samouczka.
Wybierz pozycję Przejrzyj i utwórz, a następnie 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żyjesz programu PowerShell. Jednak te same pojęcia dotyczą dowolnego kodu wykonywanego na tej maszynie wirtualnej.
Przejdź do nowo utworzonego magazynu kluczy.
Wybierz pozycję Wpisy tajne, a następnie wybierz pozycję Dodaj.
Wybierz Generuj/Import.
W sekcji Tworzenie wpisu tajnego przejdź do pozycji Opcje przekazywania i upewnij się, że wybrano opcję Ręczne.
Wprowadź nazwę i wartość wpisu tajnego. Wartość może być dowolna.
Pozostaw wyczyść datę aktywacji i datę wygaśnięcia i upewnij się, że opcja Włączone ma wartość Tak.
Wybierz pozycję Utwórz , aby utworzyć wpis tajny.
Przyznaj dostęp
Tożsamość zarządzana używana przez maszynę wirtualną musi mieć dostęp do odczytu wpisu tajnego przechowywanego w usłudze Key Vault.
Przejdź do nowo utworzonego magazynu kluczy.
Wybierz pozycję Zasady dostępu w obszarze nawigacji 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.
Wybierz opcję Dodaj.
Wybierz pozycję Zapisz.
Uzyskiwanie dostępu do danych
Aby wykonać te kroki, potrzebujesz klienta SSH. Jeśli używasz systemu Windows, możesz użyć klienta SSH w pozycji 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.
Ważne
Wszystkie zestawy SDK platformy Azure obsługują bibliotekę Azure.Identity, która ułatwia uzyskiwanie tokenów firmy Microsoft w celu uzyskania dostępu do usług docelowych. Dowiedz się więcej na temat zestawów AZURE SDK i uzyskiwania dostępu do biblioteki Azure.Identity.
- 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żyj programu cURL, aby wysłać żądanie do lokalnego punktu końcowego tożsamości zarządzanych dla zasobów platformy Azure w celu uzyskania tokenu dostępu dla usługi Azure Key Vault. Żą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%3A%2F%2Fvault.azure.net' -H Metadata:true
```
The response includes the access token you need to access Resource Manager.
Response:
```bash
{"access_token":"eyJ0eXAi...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://vault.azure.net",
"token_type":"Bearer"}
Możesz użyć tego tokenu dostępu, aby przeprowadzić uwierzytelnianie do usługi Azure Key Vault. Kolejne żądanie programu CURL przedstawia sposób odczytu wpisu tajnego z usługi Key Vault przy użyciu programu CURL i interfejsu API REST usługi Key Vault. Potrzebny jest adres URL usługi Key Vault, który znajduje się w sekcji Podstawy na stronie Przegląd usługi Key Vault. Potrzebny jest również token dostępu uzyskany podczas poprzedniego wywołania.
curl 'https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01' -H "Authorization: Bearer <ACCESS TOKEN>"
Odpowiedź wygląda następująco:
{"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}}
Po pobraniu wpisu tajnego z usługi Key Vault możesz użyć go do uwierzytelniania w usłudze wymagającej nazwy i hasła.
Czyszczenie zasobów
Gdy wszystko będzie gotowe do wyczyszczenia zasobów, zaloguj się do witryny Azure Portal, wybierz pozycję Grupy zasobów, zlokalizuj i wybierz grupę zasobów utworzoną w procesie tego samouczka, taką jak mi-test
. Możesz użyć polecenia Usuń grupę zasobów lub za pomocą programu PowerShell lub interfejsu wiersza polecenia.
Używanie przypisanej przez system tożsamości zarządzanej maszyny wirtualnej z systemem Linux w celu uzyskania dostępu do grupy zasobów w usłudze Resource Manager
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 Linux, a następnie użyć tej tożsamości w celu uzyskania dostępu 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.
Dowiedz się, jak odbywa się:
- 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 menedżera zasobów.
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 opcji 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.
Na liście rozwijanej Wybierz wybierz maszynę wirtualną, 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 menedżera zasobów, 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 witrynie Azure Portal przejdź do maszyny wirtualnej z systemem Linux.
- 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 potrzebny 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. Aby na przykład przeczytać szczegóły grupy zasobów, do której wcześniej udzielono dostępu tej 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 pliku resourceGroup
.
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 grupy zasobów w usłudze Resource Manager przy użyciu przypisanej przez użytkownika tożsamości zarządzanej maszyny wirtualnej z systemem Linux
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 użytkownika, przypisać ją do maszyny wirtualnej z systemem Linux, a następnie użyć tej tożsamości w celu uzyskania dostępu 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.
Utwórz tożsamość zarządzaną przypisaną przez użytkownika za pomocą polecenia az identity create. Parametr -g
określa grupę zasobów, w której zostanie utworzona tożsamość zarządzana przypisana przez użytkownika, a parametr -n
określa jej nazwę. Upewnij się, że parametry <RESOURCE GROUP>
i <UAMI NAME>
zostały zastąpione własnymi wartościami:
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).
az identity create -g <RESOURCE GROUP> -n <UAMI NAME>
Odpowiedź zawiera szczegóły utworzonej tożsamości zarządzanej przypisanej przez użytkownika, podobne do poniższego przykładu. Zanotuj wartość id
dla tożsamości zarządzanej przypisanej przez użytkownika, ponieważ będzie używana w następnym kroku:
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>/credentials?tid=5678&oid=9012&aid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"id": "/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>",
"location": "westcentralus",
"name": "<UAMI NAME>",
"principalId": "9012",
"resourceGroup": "<RESOURCE GROUP>",
"tags": {},
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
Przypisywanie tożsamości do maszyny wirtualnej z systemem Linux
Tożsamość zarządzana 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ść zarządzaną przypisaną przez użytkownika do pojedynczej maszyny wirtualnej. Użyj właściwości Id
zwróconej w poprzednim kroku dla parametru -IdentityID
.
Przypisz tożsamość zarządzaną przypisaną przez użytkownika do maszyny wirtualnej z systemem Linux za pomocą polecenia az vm identity assign. Upewnij się, że parametry <RESOURCE GROUP>
i <VM NAME>
zostały zastąpione własnymi wartościami. Użyj właściwości id
zwróconej w poprzednim kroku dla wartości parametru --identities
.
az vm identity assign -g <RESOURCE GROUP> -n <VM NAME> --identities "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>"
Udzielanie dostępu do grupy zasobów w usłudze Azure Resource Manager
Tożsamości zarządzane to 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 grupa zasobów, w której znajduje się maszyna wirtualna. Zaktualizuj wartość <SUBSCRIPTION ID>
i <RESOURCE GROUP>
zgodnie z potrzebami środowiska. Dodatkowo zastąp element <UAMI PRINCIPALID>
właściwością principalId
zwróconą przez polecenie az identity create
w części Tworzenie przypisanej przez użytkownika tożsamości zarządzanej:
az role assignment create --assignee <UAMI PRINCIPALID> --role 'Reader' --scope "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP> "
Odpowiedź zawiera szczegóły utworzonego przypisania roli, podobne do poniższego przykładu:
{
"id": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
"name": "00000000-0000-0000-0000-000000000000",
"properties": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "/subscriptions/<SUBSCRIPTION ID>/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
"scope": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>"
},
"resourceGroup": "<RESOURCE GROUP>",
"type": "Microsoft.Authorization/roleAssignments"
}
Uzyskiwanie tokenu dostępu przy użyciu tożsamości maszyny wirtualnej oraz używanie go do wywołania usługi Resource Manager
Napiwek
Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.
W pozostałej części samouczka pracujesz z utworzonej wcześniej maszyny wirtualnej.
Aby wykonać te kroki, potrzebujesz klienta SSH. Jeśli używasz systemu Windows, możesz użyć klienta SSH w pozycji Podsystem Windows dla systemu Linux.
Zaloguj się w witrynie Azure Portal.
W portalu przejdź do pozycji Maszyny wirtualne, a następnie przejdź do swojej maszyny wirtualnej z systemem Linux i w obszarze Omówienie kliknij pozycję Połącz. Skopiuj ciąg, aby nawiązać połączenie z maszyną wirtualną.
Połącz się z maszyną wirtualną przy użyciu wybranego klienta SSH. Jeśli używasz systemu Windows, możesz użyć klienta SSH w pozycji 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 oknie terminalu użyj narzędzia CURL, aby wysłać żądanie do punktu końcowego tożsamości usługi Azure Instance Metadata Service (IMDS), aby uzyskać token dostępu dla usługi Azure Resource Manager.
Żądanie programu CURL służące do uzyskiwania tokenu dostępu zostało przedstawione w poniższym przykładzie. Pamiętaj o zastąpieniu elementu
<CLIENT ID>
właściwościąclientId
zwróconą przez polecenieaz identity create
w części Tworzenie przypisanej przez użytkownika tożsamości zarządzanej:curl -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com/&client_id=<UAMI CLIENT ID>"
Uwaga
Wartość parametru
resource
musi być dokładnie zgodna z oczekiwaniami identyfikatora Entra firmy Microsoft. W przypadku użycia identyfikatora zasobu usługi Resource Manager należy uwzględnić końcowy ukośnik w identyfikatorze URI.Odpowiedź zawiera token dostępu wymagany do uzyskania dostępu do usługi Azure Resource Manager.
Przykładowa odpowiedź:
{ "access_token":"eyJ0eXAiOi...", "refresh_token":"", "expires_in":"3599", "expires_on":"1504130527", "not_before":"1504126627", "resource":"https://management.azure.com", "token_type":"Bearer" }
Użyj tokenu dostępu, aby uzyskać dostęp do usługi Azure Resource Manager, i przeczytaj właściwości grupy zasobów, do której wcześniej udzielono dostępu tożsamości zarządzanej przypisanej przez użytkownika. Pamiętaj o zastąpieniu elementów
<SUBSCRIPTION ID>
i<RESOURCE GROUP>
wartościami określonymi wcześniej oraz elementu<ACCESS TOKEN>
tokenem zwróconym w poprzednim kroku.Uwaga
W adresie URL jest uwzględniana wielkość liter, dlatego pamiętaj, aby użyć dokładnie tego samego przypadku, który został użyty wcześniej podczas nazywania grupy zasobów, a wielkie litery "G" w pliku
resourceGroups
.curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS TOKEN>"
Odpowiedź zawiera informacje o określonej grupie zasobów podobne do następującego przykładu:
{ "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/DevTest", "name":"DevTest", "location":"westus", "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