Udostępnij za pośrednictwem


Zabezpieczanie łączności z usługami i bazami danych Azure z Azure App Service

Usługa App Service może wymagać połączenia z innymi usługami Azure, takimi jak baza danych, magazyn lub inna aplikacja. To omówienie zaleca różne metody nawiązywania połączenia i kiedy ich używać.

Obecnie decyzja dotycząca podejścia do łączności jest ściśle związana z zarządzaniem sekretami. Typowy wzorzec używania tajnych danych w ciągach połączenia, takich jak nazwa użytkownika i hasło, klucz tajny itp., nie jest już uważany za najbezpieczniejsze podejście do łączności. Obecnie ryzyko jest jeszcze wyższe, ponieważ aktywni uczestnicy zagrożeń regularnie przeszukują publiczne repozytoria GitHub w poszukiwaniu przypadkowo zatwierdzonych tajnych danych połączeń. W przypadku aplikacji w chmurze najlepszym rozwiązaniem do zarządzania tajemnicami jest brak tajemnic. Podczas migracji do Azure App Service aplikacja może początkowo korzystać z łączności opartej na tajnych danych, a usługa App Service umożliwia bezpieczne przechowywanie tych tajnych danych. Azure może pomóc w zabezpieczeniu łączności zaplecza aplikacji za pośrednictwem uwierzytelniania Microsoft Entra, co całkowicie eliminuje tajne dane w aplikacji.

Metoda połączenia Kiedy używać
Nawiązywanie połączenia przy użyciu tożsamości aplikacji * Chcesz całkowicie usunąć poświadczenia, klucze lub wpisy tajne z aplikacji.
* Usługa Azure podrzędna obsługuje uwierzytelnianie Microsoft Entra, takie jak Microsoft Graph.
* Zasób podrzędny nie musi znać bieżącego zalogowanego użytkownika lub nie potrzebuje szczegółowej autoryzacji bieżącego zalogowanego użytkownika.
Nawiązywanie połączenia w imieniu zalogowanego użytkownika * Aplikacja musi uzyskać dostęp do zasobu podrzędnego w imieniu zalogowanego użytkownika.
* Usługa Azure podrzędna obsługuje uwierzytelnianie Microsoft Entra, takie jak Microsoft Graph.
* Zasób podrzędny musi wykonywać szczegółową autoryzację bieżącego zalogowanego użytkownika.
Połącz przy użyciu tajnych danych * Zasób końcowy wymaga tajnych danych połączenia.
* Aplikacja łączy się z usługami innych niż Azure, takimi jak lokalny serwer bazy danych.
* Usługa Azure podrzędna nie obsługuje jeszcze uwierzytelniania Microsoft Entra.

Nawiązywanie połączenia przy użyciu tożsamości aplikacji

Jeśli aplikacja używa już jednego zestawu poświadczeń w celu uzyskania dostępu do usługi Azure podrzędnej, możesz szybko przekonwertować połączenie, aby zamiast tego użyć tożsamości aplikacji. Tożsamość zarządzana z Microsoft Entra ID pozwala usłudze App Service na dostęp do zasobów bez tajnych danych, a dostęp można zarządzać za pomocą kontroli dostępu opartej na rolach (RBAC). Tożsamość zarządzana może łączyć się z dowolnym zasobem Azure obsługującym uwierzytelnianie Microsoft Entra, a uwierzytelnianie odbywa się przy użyciu tokenów krótkotrwałych.

Na poniższej ilustracji przedstawiono usługę App Service łączącą się z innymi usługami Azure:

  • Użytkownik odwiedza witrynę usługi App Service Azure.
  • B: Bezpiecznie połącz się z usługi App Service do innej usługi Azure przy użyciu zarządzanej tożsamości.
  • C: Bezpiecznie nawiąż połączenie z App Service do Microsoft Graph przy użyciu tożsamości zarządzanej.

Diagram przedstawiający, jak tożsamość zarządzana uzyskuje dostęp do zasobu z tożsamością użytkownika lub bez niej.

Przykłady używania sekretów aplikacji do nawiązywania połączenia z bazą danych:

Nawiązywanie połączenia w imieniu zalogowanego użytkownika

Aplikacja może wymagać połączenia z usługą podrzędną w imieniu zalogowanego użytkownika. Usługa App Service umożliwia łatwe uwierzytelnianie użytkowników przy użyciu najpopularniejszych dostawców tożsamości (zobacz Uwierzytelnianie i Autoryzacja w Azure App Service i Azure Functions). Jeśli używasz dostawcy Microsoft (uwierzytelnianie Microsoft Entra), możesz następnie przekierować zalogowanego użytkownika do dowolnej usługi docelowej. Na przykład:

  • Uruchom zapytanie bazy danych, które zwraca poufne dane, do których zalogowany użytkownik ma uprawnienia do odczytu.
  • Pobierz dane osobowe lub podejmij działania jako zalogowany użytkownik w Microsoft Graph.

Na poniższej ilustracji przedstawiono aplikację, która bezpiecznie uzyskuje dostęp do bazy danych SQL w imieniu zalogowanego użytkownika.

Diagram architektury dla scenariusza szkoleniowego.

Oto niektóre typowe scenariusze:

Połącz przy użyciu sekretów

Istnieją dwa zalecane sposoby używania wpisów tajnych w aplikacji: używanie wpisów tajnych przechowywanych w Azure Key Vault lub wpisach tajnych w ustawieniach aplikacji usługi App Service.

Używanie sekretów z Key Vault

Azure Key Vault można używać do bezpiecznego przechowywania wpisów tajnych i kluczy, monitorowania dostępu i używania wpisów tajnych oraz upraszczania administrowania wpisami tajnymi aplikacji. Jeśli usługa podrzędna nie obsługuje uwierzytelniania Microsoft Entra lub wymaga ciągu połączenia lub klucza, użyj Key Vault do przechowywania sekrety i połącz aplikację z Key Vault, korzystając z tożsamości zarządzanej, aby pobierać sekrety. Aplikacja może uzyskiwać dostęp do tajnych danych Key Vault jako odwołania do Key Vault w ustawieniach aplikacji.

Zalety tożsamości zarządzanych zintegrowanych z Key Vault obejmują:

  • Dostęp do sekretu w skarbcu kluczy jest dostępny tylko dla aplikacji.
  • Współautorzy aplikacji, tacy jak administratorzy, mogą mieć pełną kontrolę nad zasobami usługi App Service, a jednocześnie nie mają dostępu do tajemnic skarbca kluczy.
  • Nie jest wymagana żadna zmiana kodu, jeśli kod aplikacji uzyskuje już dostęp do tajnych danych połączenia przy użyciu ustawień aplikacji.
  • Key Vault zapewnia monitorowanie i inspekcję osób, które uzyskiwały dostęp do tajemnic.
  • Rotacja tajemnic w magazynie kluczy nie wymaga żadnych zmian w usłudze Azure App Service.

Na poniższej ilustracji przedstawiono łączenie usługi App Service z Key Vault przy użyciu tożsamości zarządzanej, a następnie uzyskiwanie dostępu do usługi Azure przy użyciu wpisów tajnych przechowywanych w Key Vault:

Diagram przedstawiający usługę App Service, używającą tajemnicy przechowywanej w Key Vault i zarządzanej z pomocą tożsamości zarządzanej, aby połączyć się z narzędziami Foundry Tools.

Używanie sekretów w ustawieniach aplikacji

W przypadku aplikacji łączących się z usługami przy użyciu wpisów tajnych (takich jak nazwy użytkowników, hasła i klucze interfejsu API) usługa App Service może przechowywać je bezpiecznie w ustawieniach aplikacji. Te sekrety są wstrzykiwane do kodu aplikacji jako zmienne środowiskowe przy starcie aplikacji. Ustawienia aplikacji są zawsze szyfrowane podczas przechowywania (szyfrowane w spoczynku). Aby uzyskać bardziej zaawansowane zarządzanie tajemnicami, takie jak rotacja tajemnic, zasady dostępu i historia inspekcji, spróbuj użyć Key Vault.

Przykłady używania sekretów aplikacji do nawiązywania połączenia z bazą danych: