Jak używać tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure na potrzeby logowania

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.

Ten artykuł zawiera przykłady skryptów programu PowerShell i interfejsu wiersza polecenia na potrzeby logowania przy użyciu tożsamości zarządzanych dla jednostki usługi zasobów platformy Azure oraz wskazówki dotyczące ważnych tematów, takich jak obsługa błędó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.

Wymagania wstępne

  • Jeśli nie znasz funkcji tożsamości zarządzanych dla zasobów platformy Azure, zobacz to omówienie. Jeśli nie masz jeszcze konta platformy Azure, przed kontynuowaniem utwórz bezpłatne konto.

Jeśli planujesz używać przykładów programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure w tym artykule, pamiętaj o zainstalowaniu najnowszej wersji programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.

Ważne

Omówienie

Tożsamości zarządzane dla zasobów platformy Azure zapewniają obiekt jednostki usługi, który jest tworzony podczas włączania tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej. Jednostka usługi może mieć dostęp do zasobów platformy Azure i używana jako tożsamość przez klientów skryptu/wiersza polecenia na potrzeby logowania i dostępu do zasobów. Tradycyjnie, aby uzyskać dostęp do zabezpieczonych zasobów w ramach własnej tożsamości, klient skryptu musi:

  • być zarejestrowane i wyrażane na to zgodę przy użyciu identyfikatora Entra firmy Microsoft jako poufnej/internetowej aplikacji klienckiej
  • zaloguj się w ramach jednostki usługi przy użyciu poświadczeń aplikacji (które są prawdopodobnie osadzone w skrypecie)

W przypadku tożsamości zarządzanych dla zasobów platformy Azure klient skryptu nie musi już wykonywać żadnych czynności, ponieważ może się zalogować w ramach tożsamości zarządzanych dla jednostki usługi zasobów platformy Azure.

Interfejs wiersza polecenia platformy Azure

Poniższy skrypt pokazuje, jak:

  1. Zaloguj się do identyfikatora Entra firmy Microsoft w ramach tożsamości zarządzanej maszyny wirtualnej dla jednostki usługi zasobów platformy Azure

  2. Wywołaj usługę Azure Resource Manager i uzyskaj identyfikator jednostki usługi maszyny wirtualnej. Interfejs wiersza polecenia automatycznie zarządza pozyskiwaniem/używaniem tokenów. Pamiętaj, aby zastąpić nazwę maszyny wirtualnej .<VM-NAME>

    az login --identity
    
    $spID=$(az resource list -n <VM-NAME> --query [*].identity.principalId --out tsv)
    echo The managed identity for Azure resources service principal ID is $spID
    

Azure PowerShell

Poniższy skrypt pokazuje, jak:

  1. Zaloguj się do identyfikatora Entra firmy Microsoft w ramach tożsamości zarządzanej maszyny wirtualnej dla jednostki usługi zasobów platformy Azure

  2. Wywołaj polecenie cmdlet usługi Azure Resource Manager, aby uzyskać informacje o maszynie wirtualnej. Program PowerShell automatycznie zarządza użyciem tokenu.

    Add-AzAccount -identity
    
    # Call Azure Resource Manager to get the service principal ID for the VM's managed identity for Azure resources. 
    $vmInfoPs = Get-AzVM -ResourceGroupName <RESOURCE-GROUP> -Name <VM-NAME>
    $spID = $vmInfoPs.Identity.PrincipalId
    echo "The managed identity for Azure resources service principal ID is $spID"
    

Identyfikatory zasobów dla usług platformy Azure

Zobacz Usługi platformy Azure, które obsługują uwierzytelnianie firmy Microsoft Entra, aby uzyskać listę zasobów, które obsługują identyfikator Firmy Microsoft Entra i zostały przetestowane przy użyciu tożsamości zarządzanych dla zasobów platformy Azure oraz ich odpowiednich identyfikatorów zasobów.

Wskazówki dotyczące obsługi błędów

Odpowiedzi, takie jak następujące, mogą wskazywać, że tożsamość zarządzana maszyny wirtualnej dla zasobów platformy Azure nie została poprawnie skonfigurowana:

  • PowerShell: Invoke-WebRequest: Nie można nawiązać połączenia z serwerem zdalnym
  • Interfejs wiersza polecenia: msi: nie można pobrać tokenu z http://localhost:50342/oauth2/token błędem "HTTP Połączenie ionPool(host='localhost', port=50342)

Jeśli wystąpi jeden z tych błędów, wróć do maszyny wirtualnej platformy Azure w witrynie Azure Portal i przejdź do strony Tożsamość i upewnij się, że przypisano system ma wartość "Tak".

Następne kroki