Felügyelt identitások használata Azure-erőforrásokhoz azure-beli virtuális gépen hozzáférési jogkivonat beszerzéséhez

Az Azure-erőforrások felügyelt identitásai a Microsoft Entra ID egyik funkciója. Each of the Azure services that support managed identities for Azure resources are subject to their own timeline. Mielőtt nekikezdene, tekintse át az erőforrásához tartozó felügyelt identitások elérhetőségi állapotát, valamint az ismert problémákat.

Az Azure-erőforrásokhoz tartozó kezelt identitások az Azure-szolgáltatásokat automatikusan kezelt identitással látják el a Microsoft Entra ID-ban. Ezzel az identitással hitelesítést végezhet bármely olyan szolgáltatásban, amely támogatja a Microsoft Entra-hitelesítést anélkül, hogy hitelesítő adatokkal kellene rendelkeznie a kódban.

Ez a cikk különböző kód- és szkript-példákat tartalmaz a jogkivonatok beszerzéséhez. Útmutatást is tartalmaz a jogkivonatok lejárati és HTTP-hibáinak kezelésével kapcsolatban.

Előfeltételek

Ha a cikkben szereplő Azure PowerShell-példákat szeretné használni, mindenképpen telepítse az Azure PowerShell legújabb verzióját.

Fontos

  • A cikkben szereplő összes mintakód/szkript feltételezi, hogy az ügyfél egy Azure-erőforrásokhoz tartozó felügyelt identitásokkal rendelkező virtuális gépen fut. Az Azure Portalon a virtuális gép "Csatlakozás" funkciójával távolról csatlakozhat a virtuális géphez. Az Azure-erőforrások felügyelt identitásainak virtuális gépen való engedélyezésével kapcsolatos részletekért lásd : Felügyelt identitások konfigurálása Azure-erőforrásokhoz egy virtuális gépen az Azure Portal használatával, vagy az egyik változatcikk (PowerShell, parancssori felület, sablon vagy Azure SDK használata).

Fontos

  • Az Azure-erőforrások felügyelt identitásainak biztonsági határa az az erőforrás, amelyben az identitást használják. A virtuális gépen futó összes kód/szkript lekérhet és lekérhet jogkivonatokat a rajta elérhető felügyelt identitásokhoz.

Áttekintés

Egy ügyfélalkalmazás csak felügyelt identitásalkalmazás hozzáférési jogkivonatot kérhet egy adott erőforrás eléréséhez. A jogkivonat az Azure-erőforrások szolgáltatásnév felügyelt identitásán alapul. Ezért nincs szükség arra, hogy az ügyfél saját szolgáltatásnév alatt szerezzen be hozzáférési jogkivonatot. A jogkivonat alkalmas arra, hogy tulajdonosi jogkivonatként használja az ügyfél hitelesítő adatait igénylő szolgáltatásközi hívásokban.

Hivatkozás Leírás
Jogkivonat lekérése HTTP használatával Az Azure-erőforrások tokenvégpontjaihoz tartozó felügyelt identitások protokolladatai
Jogkivonat lekérése az Azure.Identity használatával Jogkivonat lekérése az Azure.Identity-kódtár használatával
Jogkivonat lekérése a .NET-hez készült Microsoft.Azure.Services.AppAuthentication kódtár használatával Példa a Microsoft.Azure.Services.AppAuthentication kódtár .NET-ügyfélről való használatára
Jogkivonat lekérése C használatával# Példa felügyelt identitások használatára az Azure-erőforrások REST-végpontja számára egy C#-ügyfélből
Jogkivonat lekérése Java használatával Példa felügyelt identitások használatára az Azure-erőforrások REST-végpontja számára Java-ügyfélből
Jogkivonat lekérése a Go használatával Példa felügyelt identitások használatára az Azure-erőforrások REST-végpontjához Go-ügyfélből
Jogkivonat lekérése a PowerShell használatával Példa felügyelt identitások használatára az Azure-erőforrások REST-végpontja számára Egy PowerShell-ügyfélről
Jogkivonat lekérése a CURL használatával Példa felügyelt identitások azure-erőforrások REST-végpontjának használatára Bash/CURL-ügyfélről
Jogkivonat gyorsítótárazásának kezelése Útmutató lejárt hozzáférési jogkivonatok kezeléséhez
Error handling Útmutató az Azure-erőforrások jogkivonatvégpontjának felügyelt identitásaiból visszaadott HTTP-hibák kezeléséhez
Erőforrás-azonosítók az Azure-szolgáltatásokhoz Forrásazonosítók lekérése a támogatott Azure-szolgáltatásokhoz

Jogkivonat lekérése HTTP használatával

A hozzáférési jogkivonatok beszerzésének alapvető felülete a REST-en alapul, így a virtuális gépen futó minden olyan ügyfélalkalmazás számára elérhetővé válik, amely HTTP REST-hívásokat indíthat. Ez a megközelítés hasonló a Microsoft Entra programozási modellhez, kivéve, ha az ügyfél egy végpontot használ a virtuális gépen (szemben a Microsoft Entra-végponttal).

Mintakérés az Azure Instance Metadata Service (IMDS) végpont használatával (ajánlott):

GET 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' HTTP/1.1 Metadata: true
Elem Leírás
GET A HTTP-parancs, amely azt jelzi, hogy adatokat szeretne lekérni a végpontról. Ebben az esetben egy OAuth hozzáférési jogkivonat.
http://169.254.169.254/metadata/identity/oauth2/token Az Azure-erőforrások végpontjának felügyelt identitásai a példány metaadat-szolgáltatásához.
api-version Egy lekérdezési sztringparaméter, amely az IMDS-végpont API-verzióját jelzi. Használjon API-verziót vagy újabb verziót 2018-02-01 .
resource Egy lekérdezési sztringparaméter, amely a célerőforrás alkalmazásazonosítójának URI-ját jelzi. A kibocsátott jogkivonat (célközönség) jogcímén is megjelenik aud . Ez a példa egy jogkivonatot kér az Azure Resource Manager eléréséhez, amely az alkalmazásazonosító URI-jával rendelkezik https://management.azure.com/.
Metadata A felügyelt identitások által igényelt HTTP-kérelem fejlécmezője. Ezeket az információkat a rendszer a kiszolgálóoldali hamisítási (SSRF) támadások elhárítására használja. Ennek az értéknek "true" (igaz) értékre kell állítania, minden kisbetű esetén.
object_id (Nem kötelező) Egy lekérdezési sztringparaméter, amely annak a felügyelt identitásnak a object_id jelzi, amelyhez a jogkivonatot meg szeretné adni. Kötelező, ha a virtuális gép több felhasználó által hozzárendelt felügyelt identitást használ.
client_id (Nem kötelező) Egy lekérdezési sztringparaméter, amely annak a felügyelt identitásnak a client_id jelzi, amelyhez a jogkivonatot meg szeretné adni. Kötelező, ha a virtuális gép több felhasználó által hozzárendelt felügyelt identitást használ.
msi_res_id (Nem kötelező) Egy lekérdezési sztringparaméter, amely annak a felügyelt identitásnak a msi_res_id (Azure-erőforrás-azonosítóját) jelzi, amelyhez a jogkivonatot használni szeretné. Kötelező, ha a virtuális gép több felhasználó által hozzárendelt felügyelt identitást használ.

Mintaválasz:

HTTP/1.1 200 OK
Content-Type: application/json
{
  "access_token": "eyJ0eXAi...",
  "refresh_token": "",
  "expires_in": "3599",
  "expires_on": "1506484173",
  "not_before": "1506480273",
  "resource": "https://management.azure.com/",
  "token_type": "Bearer"
}
Elem Leírás
access_token A kért hozzáférési jogkivonat. Védett REST API meghívásakor a jogkivonat a Authorization kérelem fejlécmezőjében "tulajdonosi" jogkivonatként van beágyazva, így az API hitelesítheti a hívót.
refresh_token Az Azure-erőforrások felügyelt identitásai nem használják.
expires_in A hozzáférési jogkivonat érvényessége a lejárat előtt a kiállítás időpontjától kezdődően továbbra is érvényes marad. A kiállítás időpontja a jogkivonat jogcímében iat található.
expires_on A hozzáférési jogkivonat lejárati ideje. A dátum a "1970-01-01T0:0:0Z UTC" másodpercek száma (a jogkivonat jogcímének exp felel meg).
not_before A hozzáférési jogkivonat érvénybe lépésekor érvényes és elfogadható idő. A dátum a "1970-01-01T0:0:0Z UTC" másodpercek száma (a jogkivonat jogcímének nbf felel meg).
resource Az az erőforrás, amelyhez a hozzáférési jogkivonatot kérték, amely megfelel a resource kérés lekérdezési sztringparaméterének.
token_type A jogkivonat típusa, amely egy "Tulajdonos" hozzáférési jogkivonat, ami azt jelenti, hogy az erőforrás hozzáférést adhat a jogkivonat tulajdonosának.

Jogkivonat lekérése az Azure Identity-ügyfélkódtár használatával

A felügyelt identitások használatának ajánlott módja az Azure Identity-ügyfélkódtár használata. Minden Azure SDK integrálva van a Azure.Identity DefaultAzureCredentialt támogató kódtárral. Ez az osztály megkönnyíti a felügyelt identitások Azure SDK-kkal való használatát.Tudj meg többet

  1. Telepítse az Azure.Identity-csomagot és más szükséges Azure SDK-kódtárcsomagokat, például az Azure.Security.KeyVault.Secrets csomagot.

  2. Használja az alábbi mintakódot. Nem kell aggódnia a jogkivonatok beszerzése miatt. Közvetlenül használhatja az Azure SDK-ügyfeleket. A kód bemutatja, hogyan szerezheti be a jogkivonatot, ha szükséges.

    using Azure.Core;
    using Azure.Identity;
    
    string userAssignedClientId = "<your managed identity client Id>";
    var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions { ManagedIdentityClientId = userAssignedClientId });
    var accessToken = credential.GetToken(new TokenRequestContext(new[] { "https://vault.azure.net" }));
    // To print the token, you can convert it to string 
    String accessTokenString = accessToken.Token.ToString();
    
    //You can use the credential object directly with Key Vault client.     
    var client = new SecretClient(new Uri("https://myvault.vault.azure.net/"), credential);
    

Jogkivonat lekérése a .NET-hez készült Microsoft.Azure.Services.AppAuthentication kódtár használatával

A .NET-alkalmazások és -függvények esetében az Azure-erőforrások felügyelt identitásaival a legegyszerűbben a Microsoft.Azure.Services.AppAuthentication csomagon keresztül lehet dolgozni. Ez a kódtár lehetővé teszi a kód helyi tesztelését a fejlesztői gépen. A kódot a Visual Studio felhasználói fiókjával, az Azure CLI-vel vagy az Active Directory integrált hitelesítésével tesztelheti. A kódtár helyi fejlesztési lehetőségeiről a Microsoft.Azure.Services.AppAuthentication referenciájában olvashat bővebben. Ez a szakasz bemutatja, hogyan kezdheti el a kódtár használatát.

  1. Adjon hozzá hivatkozásokat a Microsoft.Azure.Services.AppAuthentication és a Microsoft.Azure.KeyVault NuGet-csomagokra az alkalmazáshoz.

  2. Adja hozzá a következő kódot az alkalmazáshoz:

    using Microsoft.Azure.Services.AppAuthentication;
    using Microsoft.Azure.KeyVault;
    // ...
    var azureServiceTokenProvider = new AzureServiceTokenProvider();
    string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://management.azure.com/");
    // OR
    var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
    

A Microsoft.Azure.Services.AppAuthentication szolgáltatásról és az általa elérhető műveletekről a Microsoft.Azure.Services.AppAuthentication referenciában, valamint az Azure-erőforrások felügyelt identitásaival rendelkező App Service és KeyVault .NET-mintában talál további információt.

Jogkivonat lekérése C használatával#

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Web.Script.Serialization; 

// Build request to acquire managed identities for Azure resources token
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/");
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>));
    string accessToken = list["access_token"];
}
catch (Exception e)
{
    string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
}

Jogkivonat lekérése Java használatával

Ezzel a JSON-kódtárzal lekérhet egy jogkivonatot a Java használatával.

import java.io.*;
import java.net.*;
import com.fasterxml.jackson.core.*;
 
class GetMSIToken {
    public static void main(String[] args) throws Exception {
 
        URL msiEndpoint = new URL("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/");
        HttpURLConnection con = (HttpURLConnection) msiEndpoint.openConnection();
        con.setRequestMethod("GET");
        con.setRequestProperty("Metadata", "true");
 
        if (con.getResponseCode()!=200) {
            throw new Exception("Error calling managed identity token endpoint.");
        }
 
        InputStream responseStream = con.getInputStream();
 
        JsonFactory factory = new JsonFactory();
        JsonParser parser = factory.createParser(responseStream);
 
        while(!parser.isClosed()){
            JsonToken jsonToken = parser.nextToken();
 
            if(JsonToken.FIELD_NAME.equals(jsonToken)){
                String fieldName = parser.getCurrentName();
                jsonToken = parser.nextToken();
 
                if("access_token".equals(fieldName)){
                    String accesstoken = parser.getValueAsString();
                    System.out.println("Access Token: " + accesstoken.substring(0,5)+ "..." + accesstoken.substring(accesstoken.length()-5));
                    return;
                }
            }
        }
    }
}

Jogkivonat lekérése a Go használatával

package main

import (
  "fmt"
  "io/ioutil"
  "net/http"
  "net/url"
  "encoding/json"
)

type responseJson struct {
  AccessToken string `json:"access_token"`
  RefreshToken string `json:"refresh_token"`
  ExpiresIn string `json:"expires_in"`
  ExpiresOn string `json:"expires_on"`
  NotBefore string `json:"not_before"`
  Resource string `json:"resource"`
  TokenType string `json:"token_type"`
}

func main() {
    
    // Create HTTP request for a managed services for Azure resources token to access Azure Resource Manager
    var msi_endpoint *url.URL
    msi_endpoint, err := url.Parse("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01")
    if err != nil {
      fmt.Println("Error creating URL: ", err)
      return 
    }
    msi_parameters := msi_endpoint.Query()
    msi_parameters.Add("resource", "https://management.azure.com/")
    msi_endpoint.RawQuery = msi_parameters.Encode()
    req, err := http.NewRequest("GET", msi_endpoint.String(), nil)
    if err != nil {
      fmt.Println("Error creating HTTP request: ", err)
      return 
    }
    req.Header.Add("Metadata", "true")

    // Call managed services for Azure resources token endpoint
    client := &http.Client{}
    resp, err := client.Do(req) 
    if err != nil{
      fmt.Println("Error calling token endpoint: ", err)
      return
    }

    // Pull out response body
    responseBytes,err := ioutil.ReadAll(resp.Body)
    defer resp.Body.Close()
    if err != nil {
      fmt.Println("Error reading response body : ", err)
      return
    }

    // Unmarshall response body into struct
    var r responseJson
    err = json.Unmarshal(responseBytes, &r)
    if err != nil {
      fmt.Println("Error unmarshalling the response:", err)
      return
    }

    // Print HTTP response and marshalled response body elements to console
    fmt.Println("Response status:", resp.Status)
    fmt.Println("access_token: ", r.AccessToken)
    fmt.Println("refresh_token: ", r.RefreshToken)
    fmt.Println("expires_in: ", r.ExpiresIn)
    fmt.Println("expires_on: ", r.ExpiresOn)
    fmt.Println("not_before: ", r.NotBefore)
    fmt.Println("resource: ", r.Resource)
    fmt.Println("token_type: ", r.TokenType)
}

Jogkivonat lekérése a PowerShell használatával

Az alábbi példa bemutatja, hogyan használhatja az Azure-erőforrások REST-végpontjának felügyelt identitásait egy PowerShell-ügyfélből a következőre:

  1. Hozzáférési jogkivonat beszerzése.
  2. A hozzáférési jogkivonat használatával meghívhat egy Azure Resource Manager REST API-t, és információkat kérhet le a virtuális gépről. Mindenképpen cserélje le az előfizetés azonosítóját, az erőforráscsoport nevét és a <SUBSCRIPTION-ID>virtuális gép nevét az , <RESOURCE-GROUP>és <VM-NAME>a virtuális gép nevére.
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' -Headers @{Metadata="true"}

Példa a hozzáférési jogkivonat válaszból való elemzésére:

# Get an access token for managed identities for Azure resources
$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' `
                              -Headers @{Metadata="true"}
$content =$response.Content | ConvertFrom-Json
$access_token = $content.access_token
echo "The managed identities for Azure resources access token is $access_token"

# Use the access token to get resource information for the VM
$vmInfoRest = (Invoke-WebRequest -Uri 'https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Compute/virtualMachines/<VM-NAME>?api-version=2017-12-01' -Method GET -ContentType "application/json" -Headers @{ Authorization ="Bearer $access_token"}).content
echo "JSON returned from call to get VM info:"
echo $vmInfoRest

Jogkivonat lekérése a CURL használatával

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 -s

Példa a hozzáférési jogkivonat válaszból való elemzésére:

response=$(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 -s)
access_token=$(echo $response | python -c 'import sys, json; print (json.load(sys.stdin)["access_token"])')
echo The managed identities for Azure resources access token is $access_token

Jogkivonat gyorsítótárazása

A felügyelt identitások alrendszere gyorsítótárazza a jogkivonatokat, de továbbra is javasoljuk, hogy implementálja a jogkivonatok gyorsítótárazását a kódban. Olyan forgatókönyvekre kell felkészülnie, amelyekben az erőforrás azt jelzi, hogy a jogkivonat lejárt.

A Microsoft Entra ID-ra irányuló bejövő hívások csak akkor következnek be, ha:

  • A gyorsítótár-hiba azért fordul elő, mert nincs token az Azure-erőforrások alrendszer-gyorsítótárának felügyelt identitásaiban.
  • A gyorsítótárazott jogkivonat lejárt.

Error handling

A felügyelt identitások végpontja a HTTP-válaszüzenet fejlécének állapotkód mezőjén keresztül jelez hibákat 4xx vagy 5xx hibaként:

Állapotkód Hiba oka Kezelés
404 Nem található. Az IMDS-végpont frissül. Próbálkozzon újra exponenciális visszalépéssel. Lásd az alábbi útmutatást.
410 Az IMDS frissítéseken megy keresztül Az IMDS 70 másodpercen belül elérhető lesz
429 Túl sok kérés. Elérte az IMDS-szabályozás korlátját. Próbálkozzon újra exponenciális visszalépéssel. Lásd az alábbi útmutatást.
4xx Hiba a kérelemben. Egy vagy több kérelemparaméter helytelen volt. Ne próbálkozzon újra. További információkért tekintse meg a hiba részleteit. A 4xx hibák tervezési időből állnak.
5xx Átmeneti hiba a szolgáltatásból. Az Azure-erőforrások alrendszerének vagy a Microsoft Entra ID-nak a felügyelt identitásai átmeneti hibát eredményeztek. Legalább 1 másodperc várakozás után újrapróbálkozhat. Ha túl gyorsan vagy túl gyakran próbálkozik újra, előfordulhat, hogy az IMDS és/vagy a Microsoft Entra ID sebességkorlátozási hibát (429) ad vissza.
timeout Az IMDS-végpont frissül. Próbálkozzon újra exponenciális visszalépéssel. Lásd az alábbi útmutatást.

Hiba esetén a megfelelő HTTP-válasz törzse tartalmazza a JSON-t a hiba részleteivel:

Elem Leírás
error Hibaazonosító.
error_description A hiba részletes leírása. A hibaleírások bármikor változhatnak. Ne írjon olyan kódot, amely a hibaleírásban szereplő értékek alapján ágaz.

HTTP-válaszhivatkozás

Ez a szakasz a lehetséges hibaválaszokat dokumentálja. A "200 OK" állapot sikeres válasz, és a hozzáférési jogkivonat a válasz törzsében, a JSON-ban, a access_token elemben található.

Állapotkód Hiba Hiba leírása Megoldás
400 Hibás kérés invalid_resource AADSTS50001: Az URI> nevű< alkalmazás nem található a TENANT-ID> nevű <bérlőben. Ez az üzenet azt jelzi, hogy a bérlői rendszergazda nem telepítette-e az alkalmazást, vagy egy bérlői felhasználó sem járult hozzá. Lehet, hogy nem a megfelelő bérlőnek küldte el a hitelesítési kérelmet.\ (csak Linux)
400 Hibás kérés bad_request_102 Nincs megadva a szükséges metaadat-fejléc Metadata A kérelem fejlécmezője hiányzik a kérésből, vagy helytelenül van formázva. Az értéket minden kisbetűs értékként truekell megadni. Egy példát az előző REST szakaszban található "Mintakérés" című szakaszban talál.
401 Unauthorized unknown_source Ismeretlen forrás <URI-ja> Ellenőrizze, hogy a HTTP GET-kérelem URI-ja megfelelően van-e formázva. A scheme:host/resource-path részt a következőként http://localhost:50342/oauth2/tokenkell megadni: . Egy példát az előző REST szakaszban található "Mintakérés" című szakaszban talál.
invalid_request A kérés hiányzik egy kötelező paraméterből, érvénytelen paraméterértéket tartalmaz, több paramétert is tartalmaz, vagy más módon helytelenül formázott.
unauthorized_client Az ügyfél nem jogosult hozzáférési jogkivonat kérésére ezzel a módszerrel. Olyan virtuális gépre irányuló kérés okozza, amely nem rendelkezik megfelelően konfigurált Azure-erőforrások felügyelt identitásával. Ha segítségre van szüksége a virtuális gépek konfigurálásához, tekintse meg az Azure-erőforrások felügyelt identitásainak konfigurálása egy virtuális gépen az Azure Portal használatával című témakört.
access_denied Az erőforrás tulajdonosa vagy engedélyezési kiszolgálója elutasította a kérést.
unsupported_response_type Az engedélyezési kiszolgáló nem támogatja a hozzáférési jogkivonat beszerzését ezzel a módszerrel.
invalid_scope A kért hatókör érvénytelen, ismeretlen vagy hibás.
500 Belső kiszolgálóhiba ismeretlen Nem sikerült lekérni a jogkivonatot az Active Directoryból. További részletekért lásd a naplófájlokat a <fájl elérési útján> Ellenőrizze, hogy a virtuális gép rendelkezik-e engedélyezett Azure-erőforrások felügyelt identitásával. Ha segítségre van szüksége a virtuális gépek konfigurálásához, tekintse meg az Azure-erőforrások felügyelt identitásainak konfigurálása egy virtuális gépen az Azure Portal használatával című témakört.

Ellenőrizze azt is, hogy a HTTP GET-kérelem URI-ja megfelelően van-e formázva, különösen a lekérdezési sztringben megadott erőforrás URI-ja. Tekintse meg az előző REST szakaszban található "Mintakérés" című részt egy példához, vagy olyan Azure-szolgáltatásokhoz, amelyek támogatják a Microsoft Entra-hitelesítést a szolgáltatások listájához és a hozzájuk tartozó erőforrás-azonosítókhoz.

Fontos

  • Az IMDS nem proxy mögött használható, és ez nem támogatott. A proxyk megkerülésére vonatkozó példákért tekintse meg az Azure Instance Metadata-mintákat.

Újrapróbálkozás – útmutató

Javasoljuk, hogy próbálkozzon újra, ha 404-, 429- vagy 5xx-ös hibakódot kap (lásd a fenti hibakezelést ). Ha 410-et kap, az azt jelzi, hogy az IMDS frissítéseken megy keresztül, és legfeljebb 70 másodperc alatt lesz elérhető.

A szabályozás korlátai az IMDS-végpontra irányuló hívások számára vonatkoznak. A szabályozási küszöbérték túllépésekor az IMDS-végpont korlátozza a további kéréseket, amíg a szabályozás érvényben van. Ebben az időszakban az IMDS-végpont a 429-es HTTP-állapotkódot adja vissza ("Túl sok kérés"), és a kérések sikertelenek.

Újrapróbálkozáshoz a következő stratégiát javasoljuk:

Újrapróbálkozási stratégia Beállítások Értékek Működési elv
ExponentialBackoff Ismétlések száma
Visszatartás (min.)
Visszatartás (max.)
Visszatartás (változás)
Első gyors újrapróbálkozás
5
0 másodperc
60 másodperc
2 másodperc
false
1. kísérlet – 0 mp. késleltetés
2. kísérlet – kb. 2 mp. késleltetés
3. kísérlet – kb. 6 mp. késleltetés
4. kísérlet – kb. 14 mp. késleltetés
5. kísérlet – kb. 30 mp. késleltetés

Erőforrás-azonosítók az Azure-szolgáltatásokhoz

Az Azure-erőforrások felügyelt identitásait támogató erőforrások listáját a felügyelt identitásokkal rendelkező Azure-szolgáltatásokban találja.

Következő lépések

  • Ha azure-beli virtuális gépen szeretné engedélyezni az Azure-erőforrások felügyelt identitását, olvassa el az Azure-erőforrások felügyelt identitásainak konfigurálása virtuális gépen az Azure Portal használatával című témakört.