Połączenia bez hasła dla usług platformy Azure

Uwaga

Połączenia bez hasła to niezależna od języka funkcja obejmująca wiele usług platformy Azure. Chociaż bieżąca dokumentacja koncentruje się na kilku językach i usługach, obecnie pracujemy nad tworzeniem dodatkowej dokumentacji dla innych języków i usług.

W tym artykule opisano wyzwania związane z zabezpieczeniami haseł i wprowadzono połączenia bez hasła dla usług platformy Azure.

Wyzwania związane z zabezpieczeniami przy użyciu haseł i wpisów tajnych

Hasła i klucze tajne powinny być używane ostrożnie, a deweloperzy nigdy nie muszą umieszczać ich w niezabezpieczonej lokalizacji. Wiele aplikacji łączy się z bazą danych zaplecza, pamięcią podręczną, obsługą komunikatów i usługami zdarzeń przy użyciu nazw użytkowników, haseł i kluczy dostępu. W przypadku ujawnienia tych poświadczeń można użyć do uzyskania nieautoryzowanego dostępu do poufnych informacji, takich jak wykaz sprzedaży utworzony na potrzeby nadchodzącej kampanii lub dane klientów, które muszą być prywatne.

Osadzanie haseł w samej aplikacji stanowi ogromne zagrożenie bezpieczeństwa z wielu powodów, w tym odnajdywanie za pośrednictwem repozytorium kodu. Wielu deweloperów zewnętrznych takich haseł przy użyciu zmiennych środowiskowych, dzięki czemu aplikacje mogą ładować je z różnych środowisk. Jednak powoduje to przeniesienie ryzyka z samego kodu na środowisko wykonawcze. Każdy, kto uzyskuje dostęp do środowiska, może ukraść hasła, co z kolei zwiększa ryzyko eksfiltracji danych.

W poniższym przykładzie kodu pokazano, jak nawiązać połączenie z usługą Azure Storage przy użyciu klucza konta magazynu. Wielu deweloperów gravitate w kierunku tego rozwiązania, ponieważ czuje się znajome opcje, z którymi pracowali w przeszłości, mimo że nie jest to idealne rozwiązanie. Jeśli aplikacja aktualnie używa kluczy dostępu, rozważ migrację do połączeń bez hasła.

// Connection using secret access keys
BlobServiceClient blobServiceClient = new(
    new Uri("https://<storage-account-name>.blob.core.windows.net"),
    new StorageSharedKeyCredential("<storage-account-name>", "<your-access-key>"));

Deweloperzy muszą być sumienni, aby nigdy nie ujawniać tych typów kluczy lub wpisów tajnych w niezabezpieczonej lokalizacji. Wiele firm ma ścisłe wymagania dotyczące zabezpieczeń umożliwiające łączenie się z usługami platformy Azure bez ujawniania haseł deweloperom, operatorom lub innym osobom. Często używają magazynu do przechowywania i ładowania haseł do aplikacji, a także zmniejszają ryzyko, dodając wymagania i procedury rotacji haseł. Z kolei takie podejście zwiększa złożoność operacyjną i czasami prowadzi do awarii połączeń aplikacji.

Połączenia bez hasła i Zero Trust

Teraz możesz używać połączeń bez hasła w aplikacjach, aby łączyć się z usługami opartymi na platformie Azure bez konieczności rotacji haseł. W niektórych przypadkach wymagana jest konfiguracja — nie jest wymagany nowy kod. Zero Trust używa zasady "nigdy nie ufaj, zawsze weryfikuj i bez poświadczeń". Oznacza to zabezpieczenie całej komunikacji przez zaufanie maszynom lub użytkownikom tylko po zweryfikowaniu tożsamości i przed udzieleniem im dostępu do usług zaplecza.

Zalecaną opcją uwierzytelniania dla bezpiecznych połączeń bez hasła jest użycie tożsamości zarządzanych i kontroli dostępu opartej na rolach (RBAC) na platformie Azure w połączeniu. Dzięki temu podejściu nie trzeba ręcznie śledzić wielu różnych wpisów tajnych dla tożsamości zarządzanych i zarządzać nimi, ponieważ te zadania są bezpiecznie obsługiwane wewnętrznie przez platformę Azure.

Połączenia bez hasła z usługami platformy Azure można skonfigurować przy użyciu usługi Service Połączenie or lub skonfigurować je ręcznie. Usługa Połączenie or umożliwia tożsamości zarządzane w usługach hostingu aplikacji, takich jak Azure Spring Apps, aplikacja systemu Azure Service i Azure Container Apps. Usługa Połączenie or konfiguruje również usługi zaplecza z połączeniami bez hasła przy użyciu tożsamości zarządzanych i kontroli dostępu opartej na rolach platformy Azure oraz nawilża aplikacje z niezbędnymi informacjami o połączeniu.

Jeśli sprawdzisz uruchomione środowisko aplikacji skonfigurowane pod kątem połączeń bez hasła, zobaczysz pełną parametry połączenia. Parametry połączenia prowadzi na przykład adres serwera bazy danych, nazwę bazy danych i instrukcję delegowania uwierzytelniania do wtyczki uwierzytelniania platformy Azure, ale nie zawiera żadnych haseł ani wpisów tajnych.

Poniższy film wideo ilustruje połączenia bez hasła z aplikacji do usług platformy Azure, korzystając z aplikacji Java jako przykładu. Zbliża się podobne pokrycie dla innych języków.


Wprowadzenie do wartości domyślnejAzureCredential

Połączenia bez hasła z usługami platformy Azure za pośrednictwem usługi Microsoft Entra ID i kontroli dostępu opartej na rolach (RBAC) można zaimplementować za pomocą DefaultAzureCredential bibliotek klienta tożsamości platformy Azure.

Ważne

Niektóre języki muszą implementować DefaultAzureCredential jawnie w kodzie, a inne wykorzystują DefaultAzureCredential wewnętrznie za pośrednictwem bazowych wtyczek lub sterowników.

DefaultAzureCredential obsługuje wiele metod uwierzytelniania i automatycznie określa, które powinny być używane w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (lokalnych deweloperów i produkcji) bez implementowania kodu specyficznego dla środowiska.

Kolejność i lokalizacje, w których DefaultAzureCredential wyszukuje poświadczenia, różnią się w zależności od języków:

Na przykład podczas pracy lokalnej z platformą .NET DefaultAzureCredential zazwyczaj uwierzytelnia się przy użyciu konta, które deweloper użył do logowania się do programu Visual Studio, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Po wdrożeniu aplikacji na platformie Azure DefaultAzureCredential automatycznie odnajduje i używa tożsamości zarządzanej skojarzonej usługi hostingu, takiej jak usługa aplikacja systemu Azure Service. Do tego przejścia nie są wymagane żadne zmiany kodu.

Uwaga

Tożsamość zarządzana zapewnia tożsamość zabezpieczeń reprezentującą aplikację lub usługę. Tożsamość jest zarządzana przez platformę Azure i nie wymaga aprowizacji ani rotacji wpisów tajnych. Więcej informacji na temat tożsamości zarządzanych można uzyskać w dokumentacji przeglądu .

W poniższym przykładzie kodu pokazano, jak nawiązać połączenie z usługą Service Bus przy użyciu połączeń bez hasła. W innej dokumentacji opisano sposób przeprowadzania migracji do tej konfiguracji dla określonej usługi bardziej szczegółowo. Aplikacja .NET może przekazać wystąpienie DefaultAzureCredential klasy klienta usługi do konstruktora. DefaultAzureCredential program automatycznie odnajduje poświadczenia, które są dostępne w tym środowisku.

ServiceBusClient serviceBusClient = new(
    new Uri("https://<your-service-bus-namespace>.blob.core.windows.net"),
    new DefaultAzureCredential());

Zobacz też

Aby uzyskać bardziej szczegółowe wyjaśnienie połączeń bez hasła, zobacz przewodnik dla deweloperów Konfigurowanie połączeń bez hasła między wieloma aplikacjami i usługami platformy Azure.