Tworzenie aplikacji przy użyciu tożsamości zarządzanych firmy Microsoft Entra

Ukończone

Utworzono już maszynę wirtualną platformy Azure i przypisano tożsamość zarządzaną przez system. Aplikacje uruchomione na tej maszynie wirtualnej powinny uwierzytelniać żądania wysyłane do zasobów platformy Azure. Zamiast korzystać z haseł do kluczy wspólnych, użyjesz tożsamości zarządzanej przypisanej przez system.

W tej lekcji dowiesz się więcej o tym, w jaki sposób aplikacje mogą używać tożsamości zarządzanych na potrzeby uwierzytelniania. Zobaczysz, jak używać usługi Azure Key Vault do definiowania zasad autoryzacji i włączysz uwierzytelnionej tożsamości odczytywanie informacji tajnych.

Tożsamości zarządzane

W poprzedniej lekcji przedstawiono, że pomoc techniczna platformy Azure tożsamości zarządzane przypisane przez system i tożsamości zarządzane przypisane przez użytkownika. Platforma Azure tworzy tożsamość zarządzaną przypisaną przez system i zarządza nią. Jest ona ściśle powiązana z konkretnym zasobem. Jeśli na przykład tworzysz maszynę wirtualną, która ma tożsamość zarządzaną przypisaną przez system, platforma Azure automatycznie tworzy tożsamość. Platforma Azure skojarzy ją z maszyną wirtualną. Jeśli maszyna wirtualna zostanie usunięta, tożsamość również zostanie usunięta.

Tożsamości zarządzane przypisane przez użytkownika są niezależne od dowolnego zasobu. Tożsamość zarządzana przypisana przez użytkownika jest tworzona ręcznie, a następnie przypisujesz ją do zasobu lub usługi, takiego jak aplikacja do śledzenia zapasów. Po uruchomieniu aplikacji jest używana tożsamość zarządzana przypisana przez użytkownika. Przypisujesz do tej tożsamości prawa dostępu do zasobów platformy Azure, do których aplikacja musi uzyskać dostęp. Możesz skorzystać z tej metody, aby wdrożyć aplikację na wielu maszynach wirtualnych. Aplikacja używa tej tożsamości zarządzanej przypisanej przez użytkownika zamiast konfigurowania przypisanej przez system tożsamości zarządzanej dla każdej maszyny wirtualnej.

Tworzenie tożsamości zarządzanej przypisanej przez użytkownika i zarządzanie nią

Tożsamość zarządzaną przypisaną przez użytkownika można utworzyć w witrynie Azure Portal lub w wierszu polecenia. Następujące polecenie używa interfejsu wiersza polecenia platformy Azure:

az identity create \
  --name <identity name>
  --resource-group <resource group>

Uruchom następujące polecenie, aby wyświetlić listę tożsamości, w tym tożsamości zarządzanych przypisanych przez system. Zwróć uwagę na identyfikator podmiotu zabezpieczeń swojej tożsamości. Platforma Azure używa tego identyfikatora do przypisywania i weryfikowania uprawnień.

az identity list \
  --resource-group <resource group>

Po utworzeniu tożsamości możesz użyć identyfikatora podmiotu zabezpieczeń, aby skojarzyć tożsamość z zasobami.

Aby użyć tożsamości z aplikacją funkcji platformy Azure, uruchom następujące polecenie:

az functionapp identity assign \
  --name <function app name> \
  --resource-group <resource group> \
  --role <principal id>

Aplikacja funkcji używa tej tożsamości do działania. Może ona uzyskać dostęp do zasobów, które są dostępne dla tożsamości.

Wymagane polecenia różnią się w zależności od zasobu. Aby na przykład przyznać tożsamości możliwość odczytu i wyświetlania listy kluczy z usługi Azure Key Vault, uruchom następujące polecenie:

az keyvault set-policy \
    --name <key vault name> \
    --object-id <principal id> \
    --secret-permissions get list

Aby usunąć tożsamość zarządzaną przypisaną przez użytkownika, uruchom następujące polecenie:

az identity delete \
  --name <identity name>
  --resource-group <resource group>

Używanie tożsamości zarządzanej z usługą Azure Key Vault

Dostawca DefaultAzureCredential umożliwia używanie tożsamości zarządzanych do uwierzytelniania podczas wdrażania aplikacji na platformie Azure i używania poświadczeń lokalnego dewelopera podczas programowania. Aby użyć wartości DefaultAzureCredential, należy zainstalować pakiet Azure.Identity:

dotnet install Azure.Identity

Za pomocą elementu DefaultAzureCredentialmożemy teraz utworzyć uwierzytelniony SecretClientelement .

var client = new SecretClient(new Uri(keyVaultUrl), new DefaultAzureCredential());

Po utworzeniu klienta zostanie pobrany nazwany klucz tajny.

KeyVaultSecret secretWithValue = await client.GetSecretAsync(secret.Name).ConfigureAwait(false);