Używanie tożsamości zarządzanych z maszynami wirtualnymi platformy Azure

Ukończone

Chcesz uruchomić aplikację śledzącą zapasy w ramach maszyny wirtualnej, która ma przypisaną tożsamość zarządzaną. Ta konfiguracja umożliwia aplikacji używanie usługi Azure Key Vault do uwierzytelniania bez konieczności przechowywania nazwy użytkownika i hasła w kodzie.

Teraz gdy Twoja firma przeprowadziła migrację maszyny wirtualnej ze środowiska lokalnego na platformę Azure, możesz usunąć zakodowane szczegóły uwierzytelniania z kodu aplikacji. Chcesz użyć bezpieczniejszego tokenu tożsamości zarządzanej w celu uzyskania dostępu do zasobów platformy Azure.

W tej lekcji dowiesz się, w jaki sposób tożsamość jest zarządzana na maszynach wirtualnych platformy Azure. Dowiesz się również, w jaki sposób współdziała ona z usługą Azure Resource Manager w celu tworzenia bezpieczniejszego środowiska dla aplikacji.

Tożsamość zarządzana na maszynach wirtualnych platformy Azure

Na maszynie wirtualnej użyj tożsamości zarządzanej, aby uzyskać dostęp do wielu zasobów platformy Azure bez konieczności określania poświadczeń w kodzie aplikacji. Tożsamości zarządzane umożliwiają automatyczne uwierzytelnianie w tle. Twoja aplikacja pozostanie tak łatwa w użyciu i bezpieczna, jak to tylko możliwe.

Tożsamość zarządzaną można przypisać do maszyny wirtualnej podczas tworzenia kompilacji lub w dowolnym momencie. Tożsamość zarządzaną można przypisać do istniejącej maszyny wirtualnej przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu PowerShell.

W poprzedniej lekcji przedstawiono tożsamości zarządzane przypisane przez system i tożsamości zarządzane przypisane przez użytkownika. Tożsamość zarządzaną przypisaną przez system można włączyć w sekcji Tożsamość w ustawieniach maszyny wirtualnej. Gdy to zrobisz, oto co się stanie:

  1. Maszyna wirtualna wysyła żądanie dotyczące tożsamości zarządzanej.
  2. W usłudze Microsoft Entra ID jednostka usługi jest tworzona dla maszyny wirtualnej w ramach dzierżawy, której ufa subskrypcja.
  3. Usługa Azure Resource Manager aktualizuje punkt końcowy tożsamości usługi Azure Instance Metadata Service przy użyciu identyfikatora klienta i certyfikatu jednostki usługi.
  4. Informacje nowej jednostki usługi są używane do udzielenia maszynie wirtualnej dostępu do zasobów platformy Azure. Aby przyznać aplikacji dostęp do magazynu kluczy, użyj kontroli dostępu opartej na rolach (RBAC) w usłudze Microsoft Entra ID. Przypisz wymaganą rolę do jednostki usługi maszyny wirtualnej. Można na przykład przypisać role Czytelnik lub Współautor.
  5. Wywołanie jest wykonywane do identyfikatora Entra firmy Microsoft w celu żądania tokenu dostępu przy użyciu identyfikatora klienta i certyfikatu.
  6. Identyfikator entra firmy Microsoft zwraca token dostępu do tokenu internetowego JSON.

Po zakończeniu konfiguracji nie musisz tworzyć żadnych innych poświadczeń, aby uzyskać dostęp do innych zasobów hostowanych na platformie Azure, które obsługują uwierzytelnianie firmy Microsoft Entra.

Kontrola dostępu i uwierzytelnianie

Kontrola dostępu na podstawie ról to system autoryzacji, który jest oparty na usłudze Azure Resource Manager. Służy do udzielania szczegółowego dostępu do zasobów na platformie Azure.

Uprawnienia są tworzone za pomocą dostępu na podstawie ról. Dostęp na podstawie ról składa się z trzech elementów: podmiotu zabezpieczeń, definicji roli i zakresu.

Używanie tożsamości zarządzanej w aplikacji

Aplikacja działająca w ramach zasobu platformy Azure, takiego jak maszyna wirtualna lub aplikacja funkcji, używa tożsamości zarządzanej do uwierzytelniania i uzyskiwania dostępu do innych zasobów.

Proces uwierzytelniania i dostępu obejmuje serię żądań do usługi Azure Instance Metadata Service:

  1. Usługa weryfikuje tożsamość skojarzoną z aplikacją.
  2. Generuje ona token dostępu do zasobów.
  3. Aplikacja wysyła token do zasobu, do którego musi uzyskać dostęp.
  4. Token jest uwierzytelniany.
  5. Jeśli token jest prawidłowy, zasób weryfikuje, czy token reprezentuje tożsamość z odpowiednimi prawami autoryzacji względem żądania.
  6. Jeśli ten test zakończy się powodzeniem, aplikacja może uzyskać dostęp do zasobu.

Aby w dużej mierze uniknąć złożoności, w kodzie można użyć interfejsu API AzureServiceTokenProvider. Obiekt AzureServiceTokenProvider pobiera identyfikator podmiotu zabezpieczeń dla aplikacji i generuje token dostępu do zasobów. Przy użyciu metody GetAccessTokenAsync należy określić zasób, dla którego ma zostać wygenerowany token dostępu. Podaj identyfikator URI usługi hostującej ten zasób.

Poniższy przykład w języku C# generuje token dla usługi Azure Storage.

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
var token = await azureServiceTokenProvider.GetAccessTokenAsync("https://storage.azure.com/");

Inne interfejsy API usługi Azure Storage mogą użyć tego tokenu w celu uwierzytelnienia i autoryzowania dostępu.