Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozważ użycie standardowego mechanizmu uwierzytelniania do uwierzytelniania w aplikacji internetowej
| Tytuł | Szczegóły |
|---|---|
| Składnik | Aplikacja internetowa |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Szczegóły | Uwierzytelnianie to proces, w którym jednostka potwierdza swoją tożsamość, zazwyczaj za pośrednictwem poświadczeń, takich jak nazwa użytkownika i hasło. Dostępnych jest wiele protokołów uwierzytelniania, które mogą być brane pod uwagę. Poniżej wymieniono niektóre z nich:
Rozważ użycie standardowego mechanizmu uwierzytelniania w celu zidentyfikowania procesu źródłowego |
Aplikacje muszą bezpiecznie obsługiwać scenariusze uwierzytelniania, które zakończyły się niepowodzeniem
| Tytuł | Szczegóły |
|---|---|
| Składnik | Aplikacja internetowa |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Szczegóły | Aplikacje, które jawnie uwierzytelniają użytkowników, muszą bezpiecznie obsługiwać scenariusze uwierzytelniania, które zakończyły się niepowodzeniem. Mechanizm uwierzytelniania musi:
Testowanie dla:
|
Włączanie uwierzytelniania krokowego lub adaptacyjnego
| Tytuł | Szczegóły |
|---|---|
| Składnik | Aplikacja internetowa |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Szczegóły | Sprawdź, czy aplikacja ma dodatkową autoryzację (np. uwierzytelnianie przyrostowe lub adaptacyjne, za pośrednictwem uwierzytelniania wieloskładnikowego, takiego jak wysyłanie protokołu OTP w wiadomości SMS, wiadomości e-mail lub monitowanie o ponowne uwierzytelnienie), dlatego użytkownik jest kwestionowany przed udzieleniem dostępu do poufnych informacji. Ta reguła dotyczy również wprowadzania krytycznych zmian na koncie lub akcji Oznacza to również, że dostosowanie uwierzytelniania musi zostać zaimplementowane w taki sposób, aby aplikacja prawidłowo wymuszała autoryzację kontekstową, aby nie zezwalać na nieautoryzowane manipulowanie za pomocą na przykład manipulowania parametrami |
Upewnij się, że interfejsy administracyjne są odpowiednio zablokowane
| Tytuł | Szczegóły |
|---|---|
| Składnik | Aplikacja internetowa |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Szczegóły | Pierwszym rozwiązaniem jest przyznanie dostępu tylko z określonego źródłowego zakresu adresów IP do interfejsu administracyjnego. Jeśli to rozwiązanie nie będzie możliwe, zawsze zaleca się wymuszenie krokowego lub adaptacyjnego uwierzytelniania w celu zalogowania się do interfejsu administracyjnego |
Bezpieczne implementowanie funkcji zapomnianych haseł
| Tytuł | Szczegóły |
|---|---|
| Składnik | Aplikacja internetowa |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Szczegóły | Pierwszą rzeczą jest sprawdzenie, czy nie pamiętasz hasła, a inne ścieżki odzyskiwania wysyłają link, w tym token aktywacji ograniczony czasowo, a nie hasło. Dodatkowe uwierzytelnianie na podstawie tokenów nietrwałych (np. tokenu SMS, natywnych aplikacji mobilnych itp.) może być wymagane, jak również przed wysłaniem linku. Po drugie, nie należy blokować konta użytkowników, podczas gdy proces uzyskiwania nowego hasła jest w toku. Może to prowadzić do ataku typu "odmowa usługi" za każdym razem, gdy osoba atakująca zdecyduje się celowo zablokować użytkowników za pomocą zautomatyzowanego ataku. Po trzecie, za każdym razem, gdy nowe żądanie zmiany hasła jest w toku, wyświetlany komunikat powinien być uogólniony, aby zapobiec ujawnieniu nazwy użytkownika. Po czwarte, zawsze nie zezwalaj na używanie starych haseł i implementowanie silnych zasad haseł. |
Upewnij się, że zostały zaimplementowane zasady haseł i kont
| Tytuł | Szczegóły |
|---|---|
| Składnik | Aplikacja internetowa |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Szczegóły | Należy zaimplementować zasady haseł i kont zgodnie z zasadami organizacyjnymi i najlepszymi rozwiązaniami. Aby bronić przed atakami siłowymi i słownikowymi, należy zaimplementować silne zasady haseł w celu zapewnienia, że użytkownicy tworzą złożone hasło (np. minimalna długość 12 znaków, alfanumeryczne i znaki specjalne). Zasady blokady konta można zaimplementować w następujący sposób:
Aby bronić się przed atakami na konta domyślne i przewidywalne, sprawdź, czy wszystkie klucze i hasła są zamienialne i są generowane lub zastępowane po czasie instalacji. Jeśli aplikacja musi automatycznie generować hasła, upewnij się, że wygenerowane hasła są losowe i mają wysoką entropię. |
Implementowanie kontrolek w celu zapobiegania wyliczaniu nazwy użytkownika
| Tytuł | Szczegóły |
|---|---|
| Składnik | Aplikacja internetowa |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Etapy | Wszystkie komunikaty o błędach powinny być uogólnione, aby zapobiec wyliczaniu nazwy użytkownika. Czasami nie można również uniknąć wycieku informacji w funkcjach, takich jak strona rejestracji. W tym miejscu należy użyć metod ograniczania szybkości, takich jak CAPTCHA, aby zapobiec automatycznemu atakowi atakującemu. |
Jeśli to możliwe, użyj uwierzytelniania systemu Windows do nawiązywania połączenia z programem SQL Server
| Tytuł | Szczegóły |
|---|---|
| Składnik | baza danych |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Lokalne |
| Atrybuty | Wersja SQL — wszystkie wersje |
| Dokumentacja | SQL Server — wybieranie trybu uwierzytelniania |
| Etapy | Uwierzytelnianie systemu Windows używa protokołu zabezpieczeń Kerberos, zapewnia wymuszanie zasad haseł w odniesieniu do walidacji złożoności silnych haseł, zapewnia obsługę blokady konta i obsługuje wygaśnięcie hasła. |
Jeśli to możliwe, użyj uwierzytelniania entra firmy Microsoft do nawiązywania połączenia z usługą SQL Database
| Tytuł | Szczegóły |
|---|---|
| Składnik | baza danych |
| Faza SDL | Budowa |
| Aplikacyjne technologie | SQL Azure |
| Atrybuty | Wersja SQL — wersja 12 |
| Dokumentacja | Nawiązywanie połączenia z bazą danych SQL przy użyciu uwierzytelniania Microsoft Entra |
| Etapy | Minimalna wersja: Azure SQL Database V12 wymagana do umożliwienia usłudze Azure SQL Database używania uwierzytelniania Microsoft Entra w Microsoft Directory |
Gdy jest używany tryb uwierzytelniania SQL, upewnij się, że zasady konta i hasła są wymuszane na serwerze SQL
| Tytuł | Szczegóły |
|---|---|
| Składnik | baza danych |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Zasady haseł programu SQL Server |
| Etapy | W przypadku korzystania z uwierzytelniania programu SQL Server nazwy logowania są tworzone w programie SQL Server, które nie są oparte na kontach użytkowników systemu Windows. Zarówno nazwa użytkownika, jak i hasło są tworzone przy użyciu programu SQL Server i przechowywane w programie SQL Server. Program SQL Server może używać mechanizmów zasad haseł systemu Windows. Może ona stosować te same zasady złożoności i wygasania używane w systemie Windows do haseł używanych w programie SQL Server. |
Nie używaj uwierzytelniania SQL w zawartych bazach danych
| Tytuł | Szczegóły |
|---|---|
| Składnik | baza danych |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Lokalne wdrożenie, Usługi SQL Azure |
| Atrybuty | Wersja SQL — MSSQL2012, wersja SQL — wersja 12 |
| Dokumentacja | Najlepsze praktyki w zakresie bezpieczeństwa z bazami danych w trybie izolowanym |
| Etapy | Brak wymuszonych zasad haseł może zwiększyć prawdopodobieństwo ustanowienia słabego poświadczenia w zawartej bazie danych. Korzystanie z uwierzytelniania systemu Windows. |
Używanie poświadczeń uwierzytelniania dla urządzenia przy użyciu tokenów SaS
| Tytuł | Szczegóły |
|---|---|
| Składnik | Azure Event Hubs |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Omówienie uwierzytelniania i modelu zabezpieczeń usługi Event Hubs |
| Etapy | Model zabezpieczeń w usłudze Event Hubs jest oparty na kombinacji tokenów Shared Access Signature (SAS) i publikatorów zdarzeń. Nazwa wydawcy reprezentuje identyfikator urządzenia, który odbiera token. Pomoże to skojarzyć tokeny wygenerowane z odpowiednimi urządzeniami. Wszystkie komunikaty są oznaczane nadawcą po stronie usługi, co umożliwia wykrywanie prób fałszowania źródła wewnątrz ładunku. Podczas uwierzytelniania urządzeń wygeneruj unikalny dla każdego urządzenia token SaS przypisany do jedynego wydawcy. |
Włącz uwierzytelnianie wieloskładnikowe Microsoft Entra dla administratorów platformy Azure
| Tytuł | Szczegóły |
|---|---|
| Składnik | Granica zaufania platformy Azure |
| Faza SDL | Wdrożenie |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Co to jest uwierzytelnianie wieloskładnikowe firmy Microsoft? |
| Etapy | Uwierzytelnianie wieloskładnikowe (MFA) to metoda uwierzytelniania, która wymaga więcej niż jednej metody weryfikacji i dodaje krytyczną drugą warstwę zabezpieczeń do logowania i transakcji użytkownika. Działa to przez wymaganie co najmniej dwóch następujących metod weryfikacji:
|
Ograniczanie dostępu anonimowego do klastra usługi Service Fabric
| Tytuł | Szczegóły |
|---|---|
| Składnik | Granica zaufania usługi Service Fabric |
| Faza SDL | Wdrożenie |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Środowisko — Azure |
| Dokumentacja | Scenariusze zabezpieczeń klastra usługi Service Fabric |
| Etapy | Klastry powinny być zawsze zabezpieczone, aby uniemożliwić nieautoryzowanym użytkownikom nawiązywanie połączenia z klastrem, zwłaszcza gdy ma uruchomione obciążenia produkcyjne. Podczas tworzenia klastra usługi Service Fabric upewnij się, że tryb zabezpieczeń jest ustawiony na "bezpieczny" i skonfiguruj wymagany certyfikat serwera X.509. Utworzenie klastra "niezabezpieczonego" umożliwi każdemu anonimowemu użytkownikowi nawiązanie z nim połączenia, jeśli uwidacznia punkty końcowe zarządzania z publicznym Internetem. |
Upewnij się, że certyfikat od klienta do węzła w Service Fabric różni się od certyfikatu od węzła do węzła.
| Tytuł | Szczegóły |
|---|---|
| Składnik | Granica zaufania usługi Service Fabric |
| Faza SDL | Wdrożenie |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Środowisko — Azure, Środowisko — autonomiczne |
| Dokumentacja | Zabezpieczenie certyfikatu klienta do węzła w Service Fabric, Połącz się z bezpiecznym klastrem przy użyciu certyfikatu klienta |
| Etapy | Zabezpieczenia certyfikatów typu klient-węzeł są konfigurowane podczas tworzenia klastra za pośrednictwem witryny Azure Portal, szablonów usługi Resource Manager lub autonomicznego szablonu JSON przez określenie certyfikatu klienta administratora i/lub certyfikatu klienta użytkownika. Określone certyfikaty klienta administracyjnego i klienta użytkownika powinny być inne niż certyfikaty podstawowe i pomocnicze określone dla zabezpieczeń typu Node-to-node. |
Używanie identyfikatora Entra firmy Microsoft do uwierzytelniania klientów w klastrach usługi Service Fabric
| Tytuł | Szczegóły |
|---|---|
| Składnik | Granica zaufania usługi Service Fabric |
| Faza SDL | Wdrożenie |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Środowisko — Azure |
| Dokumentacja | Scenariusze zabezpieczeń klastra — zalecenia dotyczące zabezpieczeń |
| Etapy | Klastry działające na platformie Azure mogą również zabezpieczyć dostęp do punktów końcowych zarządzania przy użyciu identyfikatora Entra firmy Microsoft, oprócz certyfikatów klienta. W przypadku klastrów platformy Azure zaleca się używanie zabezpieczeń firmy Microsoft Entra do uwierzytelniania klientów i certyfikatów na potrzeby zabezpieczeń typu node-to-node. |
Upewnij się, że certyfikaty Service Fabric są uzyskiwane z zatwierdzonego urzędu certyfikacji.
| Tytuł | Szczegóły |
|---|---|
| Składnik | Granica zaufania usługi Service Fabric |
| Faza SDL | Wdrożenie |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Środowisko — Azure |
| Dokumentacja | Certyfikaty X.509 i usługa Service Fabric |
| Etapy | Usługa Service Fabric używa certyfikatów serwera X.509 do uwierzytelniania węzłów i klientów. Ważne kwestie do rozważenia podczas korzystania z certyfikatów na platformach usługowych:
|
Używanie standardowych scenariuszy uwierzytelniania obsługiwanych przez serwer tożsamości
| Tytuł | Szczegóły |
|---|---|
| Składnik | Serwer tożsamości |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Etapy | Poniżej przedstawiono typowe interakcje obsługiwane przez usługę Identity Server:
|
Zastąp domyślną pamięć podręczną tokenów usługi Identity Server skalowalną alternatywą
| Tytuł | Szczegóły |
|---|---|
| Składnik | Serwer tożsamości |
| Faza SDL | Wdrożenie |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Etapy | Usługa IdentityServer ma prostą wbudowaną pamięć podręczną. Chociaż jest to dobre dla aplikacji natywnych na małą skalę, nie jest ona skalowana dla aplikacji w warstwie środkowej i zapleczu z następujących powodów:
|
Upewnij się, że pliki binarne wdrożonej aplikacji są podpisane cyfrowo
| Tytuł | Szczegóły |
|---|---|
| Składnik | Granica zaufania maszyny |
| Faza SDL | Wdrożenie |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Etapy | Upewnij się, że pliki binarne wdrożonej aplikacji są podpisane cyfrowo, aby można było zweryfikować integralność plików binarnych |
Włączanie uwierzytelniania podczas nawiązywania połączenia z kolejkami MSMQ w WCF
| Tytuł | Szczegóły |
|---|---|
| Składnik | WCF (Windows Communication Foundation) |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Uniwersalny, NET Framework 3 |
| Atrybuty | Nie dotyczy |
| Dokumentacja | MSDN |
| Etapy | Program nie może włączyć uwierzytelniania podczas nawiązywania połączenia z kolejkami MSMQ, co pozwala osobie atakującej na anonimowe przesyłanie komunikatów do kolejki celem ich późniejszego przetworzenia. Jeśli uwierzytelnianie nie jest używane do nawiązywania połączenia z kolejką MSMQ używanej do dostarczania komunikatu do innego programu, osoba atakująca może przesłać anonimową wiadomość, która jest złośliwa. |
Przykład
Element <netMsmqBinding/> poniższego pliku konfiguracji programu WCF instruuje program WCF, aby wyłączyć uwierzytelnianie podczas nawiązywania połączenia z kolejką MSMQ na potrzeby dostarczania komunikatów.
<bindings>
<netMsmqBinding>
<binding>
<security>
<transport msmqAuthenticationMode=""None"" />
</security>
</binding>
</netMsmqBinding>
</bindings>
Skonfiguruj usługę MSMQ tak, aby wymagać uwierzytelniania domeny lub certyfikatu systemu Windows przez cały czas dla dowolnych komunikatów przychodzących lub wychodzących.
Przykład
Element <netMsmqBinding/> poniższego pliku konfiguracji programu WCF instruuje program WCF, aby umożliwić uwierzytelnianie certyfikatów podczas nawiązywania połączenia z kolejką MSMQ. Klient jest uwierzytelniany przy użyciu certyfikatów X.509. Certyfikat klienta musi znajdować się w magazynie certyfikatów serwera.
<bindings>
<netMsmqBinding>
<binding>
<security>
<transport msmqAuthenticationMode=""Certificate"" />
</security>
</binding>
</netMsmqBinding>
</bindings>
WCF-Nie ustawiaj parametru clientCredentialType komunikatu na brak
| Tytuł | Szczegóły |
|---|---|
| Składnik | WCF (Windows Communication Foundation) |
| Faza SDL | Budowa |
| Aplikacyjne technologie | .NET Framework 3 |
| Atrybuty | Typ poświadczeń klienta — brak |
| Dokumentacja | MSDN, Umocnienie |
| Etapy | Brak uwierzytelniania oznacza, że każdy może uzyskać dostęp do tej usługi. Usługa, która nie uwierzytelnia swoich klientów, umożliwia dostęp do wszystkich użytkowników. Skonfiguruj aplikację do uwierzytelniania przy użyciu poświadczeń klienta. Można to zrobić, ustawiając parametr clientCredentialType na Windows lub Certyfikat. |
Przykład
<message clientCredentialType=""Certificate""/>
WCF-Nie ustawiaj klienta transportuCredentialType na wartość none
| Tytuł | Szczegóły |
|---|---|
| Składnik | WCF (Windows Communication Foundation) |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Ogólny, .NET Framework 3 |
| Atrybuty | Typ poświadczeń klienta — brak |
| Dokumentacja | MSDN, Umocnienie |
| Etapy | Brak uwierzytelniania oznacza, że każdy może uzyskać dostęp do tej usługi. Usługa, która nie uwierzytelnia swoich klientów, umożliwia wszystkim użytkownikom dostęp do jej funkcji. Skonfiguruj aplikację do uwierzytelniania przy użyciu poświadczeń klienta. Można to zrobić, ustawiając typ poświadczeń klienta transportu na Windows lub Certyfikat. |
Przykład
<transport clientCredentialType=""Certificate""/>
Upewnij się, że standardowe techniki uwierzytelniania są używane do zabezpieczania internetowych interfejsów API
| Tytuł | Szczegóły |
|---|---|
| Składnik | Internetowy interfejs API |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Uwierzytelnianie i autoryzacja w internetowym interfejsie API ASP.NET, zewnętrzne usługi uwierzytelniania za pomocą interfejsu API sieci Web ASP.NET (C#) |
| Etapy | Uwierzytelnianie to proces, w którym jednostka potwierdza swoją tożsamość, zazwyczaj za pośrednictwem poświadczeń, takich jak nazwa użytkownika i hasło. Dostępnych jest wiele protokołów uwierzytelniania, które mogą być brane pod uwagę. Poniżej wymieniono niektóre z nich:
Linki w sekcji odnośników zawierają szczegółowe informacje techniczne na temat sposoby implementacji każdego schematu uwierzytelniania w celu zabezpieczenia interfejsu API w sieci. |
Używanie standardowych scenariuszy uwierzytelniania obsługiwanych przez identyfikator Entra firmy Microsoft
| Tytuł | Szczegóły |
|---|---|
| Składnik | Microsoft Entra ID |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Scenariusze uwierzytelniania dla identyfikatora Entra firmy Microsoft, przykłady kodu firmy Microsoft Entra, przewodnik dewelopera firmy Microsoft Entra |
| Etapy | Microsoft Entra ID upraszcza proces uwierzytelniania dla deweloperów, oferując tożsamość jako usługę z obsługą standardowych protokołów branżowych, takich jak OAuth 2.0 i OpenID Connect. Poniżej przedstawiono pięć podstawowych scenariuszy aplikacji obsługiwanych przez identyfikator firmy Microsoft Entra:
Zapoznaj się z linkami w sekcji referencyjnej, aby uzyskać szczegółowe informacje o implementacji niskiego poziomu |
Zastąp domyślną pamięć podręczną tokenów biblioteki MSAL rozproszoną pamięcią podręczną
| Tytuł | Szczegóły |
|---|---|
| Składnik | Microsoft Entra ID |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Serializacja pamięci podręcznej tokenu w MSAL.NET |
| Etapy | Domyślna pamięć podręczna używana przez bibliotekę MSAL (Biblioteka uwierzytelniania firmy Microsoft) to pamięć podręczna w pamięci i jest skalowalna. Istnieją jednak różne opcje, których można użyć jako alternatywy, takich jak rozproszona pamięć podręczna tokenów. Mają one mechanizmy L1/L2, gdzie L1 znajduje się w pamięci, a L2 jest implementacją rozproszonej pamięci podręcznej. Można je odpowiednio skonfigurować tak, aby ograniczać pamięć L1, szyfrować lub ustawiać zasady eksmisji. Inne alternatywy to pamięci podręczne Redis, SQL Server lub Azure Cosmos DB. Implementację rozproszonej pamięci podręcznej tokenów można znaleźć w następującym samouczku: Rozpoczynanie pracy z ASP.NET Core MVC. |
Zadbaj o to, aby funkcja TokenReplayCache była używana w celu zapobieżenia ponownemu odtwarzaniu tokenów uwierzytelniania MSAL.
| Tytuł | Szczegóły |
|---|---|
| Składnik | Microsoft Entra ID |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nowoczesne uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft dla aplikacji internetowych |
| Etapy | Właściwość TokenReplayCache umożliwia deweloperom zdefiniowanie pamięci podręcznej odtwarzania tokenu, magazynu, który może służyć do zapisywania tokenów w celu sprawdzenia, czy nie można używać tokenu więcej niż raz. Jest to środek przeciwko powszechnemu atakowi, trafnie nazywanemu atakiem ponownego odtwarzania tokenu: osoba atakująca przechwycąc token wysłany podczas logowania może spróbować wysłać go ponownie do aplikacji ("powtórzenie" w celu ustanowienia nowej sesji). Na przykład w przepływie udzielania kodu OIDC po pomyślnym uwierzytelnieniu użytkownika żądanie do punktu końcowego "/signin-oidc" jednostki uzależnionej jest wykonywane z parametrami "id_token", "code" i "state". Jednostka uzależniona weryfikuje to żądanie i ustanawia nową sesję. Jeśli przeciwnik przechwytuje to żądanie i odtwarza je, może ustanowić pomyślną sesję i sfałszować użytkownika. Obecność wartości nonce w OpenID Connect może ograniczyć, ale nie całkowicie wyeliminować okoliczności, w których atak może zostać pomyślnie przeprowadzony. Aby chronić swoje aplikacje, deweloperzy mogą dostarczyć implementację ITokenReplayCache i przypisać instancję do TokenReplayCache. |
Przykład
// ITokenReplayCache defined in MSAL
public interface ITokenReplayCache
{
bool TryAdd(string securityToken, DateTime expiresOn);
bool TryFind(string securityToken);
}
Przykład
Oto przykładowa implementacja interfejsu ITokenReplayCache. (Dostosuj i zaimplementuj strukturę buforowania specyficznego dla projektu)
public class TokenReplayCache : ITokenReplayCache
{
private readonly ICacheProvider cache; // Your project-specific cache provider
public TokenReplayCache(ICacheProvider cache)
{
this.cache = cache;
}
public bool TryAdd(string securityToken, DateTime expiresOn)
{
if (this.cache.Get<string>(securityToken) == null)
{
this.cache.Set(securityToken, securityToken);
return true;
}
return false;
}
public bool TryFind(string securityToken)
{
return this.cache.Get<string>(securityToken) != null;
}
}
Zaimplementowana pamięć podręczna musi być przywoływała w opcjach OIDC za pośrednictwem właściwości "TokenValidationParameters" w następujący sposób.
OpenIdConnectOptions openIdConnectOptions = new OpenIdConnectOptions
{
AutomaticAuthenticate = true,
... // other configuration properties follow..
TokenValidationParameters = new TokenValidationParameters
{
TokenReplayCache = new TokenReplayCache(/*Inject your cache provider*/);
}
}
Należy pamiętać, że aby przetestować skuteczność tej konfiguracji, zaloguj się do chronionej mechanizmem OIDC lokalnej aplikacji i przechwyć żądanie do punktu końcowego "/signin-oidc" w Fiddlerze. Gdy ochrona nie jest włączona, ponowne wykonanie tego żądania w narzędziu fiddler spowoduje ustawienie nowego pliku cookie sesji. Po ponownym odtworzeniu żądania po dodaniu ochrony TokenReplayCache aplikacja zgłosi wyjątek w następujący sposób: SecurityTokenReplayDetectedException: IDX10228: The securityToken has previously been validated, securityToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ1......
Używanie bibliotek MSAL do zarządzania żądaniami tokenów od klientów OAuth2 do Microsoft Entra ID (lub lokalnego AD)
| Tytuł | Szczegóły |
|---|---|
| Składnik | Microsoft Entra ID |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Biblioteka MSAL |
| Etapy | Biblioteka Microsoft Authentication Library (MSAL) umożliwia deweloperom uzyskiwanie tokenów zabezpieczających z Platforma tożsamości Microsoft w celu uwierzytelniania użytkowników i uzyskiwania dostępu do zabezpieczonych internetowych interfejsów API. Może służyć do zapewnienia bezpiecznego dostępu do programu Microsoft Graph, innych interfejsów API firmy Microsoft, internetowych interfejsów API innych firm lub własnego internetowego interfejsu API. Biblioteka MSAL obsługuje wiele różnych architektur aplikacji i platform, takich jak .NET, JavaScript, Java, Python, Android i iOS. |
Biblioteka MSAL zapewnia wiele sposobów uzyskiwania tokenów przy użyciu spójnego interfejsu API dla wielu platform. Nie ma potrzeby bezpośredniego używania bibliotek lub kodu OAuth względem protokołu w aplikacji i może uzyskiwać tokeny w imieniu użytkownika lub aplikacji (jeśli ma to zastosowanie do platformy).
Biblioteka MSAL obsługuje również pamięć podręczną tokenów i odświeża tokeny, gdy zbliżają się do wygaśnięcia. Biblioteka MSAL może również pomóc w określeniu, dla których odbiorców ma się odbywać logowanie aplikacji, ułatwieniu konfigurowania aplikacji z plików konfiguracyjnych oraz rozwiązywaniu problemów związanych z aplikacją.
Uwierzytelnianie urządzeń łączących się z usługą Field Gateway
| Tytuł | Szczegóły |
|---|---|
| Składnik | Brama pola IoT |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Nie dotyczy |
| Etapy | Upewnij się, że każde urządzenie jest uwierzytelniane przez Field Gateway, zanim zaakceptuje się od niego dane i zanim ułatwi się komunikację z bramą Cloud Gateway. Upewnij się również, że urządzenia łączą się za pomocą poświadczeń przypisanych do każdego z nich, aby można je było jednoznacznie zidentyfikować. |
Upewnij się, że urządzenia łączące się z bramą w chmurze są uwierzytelnione
| Tytuł | Szczegóły |
|---|---|
| Składnik | Brama IoT w chmurze |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Ogólne, C#, Node.js, |
| Atrybuty | Nie dotyczy, wybór bramy — Azure IoT Hub |
| Dokumentacja | N/A, Azure IoT Hub z platformą .NET, Wprowadzenie do centrum IoT i środowiska Node JS, Zabezpieczanie IoT przy użyciu SAS i certyfikatów, repozytorium Git |
| Kroki |
- Ogólne: Uwierzytelnianie urządzenia przy użyciu protokołu Transport Layer Security (TLS) lub IPsec. Infrastruktura powinna obsługiwać używanie klucza wstępnego (PSK) na tych urządzeniach, które nie mogą obsługiwać pełnej kryptografii asymetrycznej. Skorzystaj z identyfikatora Entra firmy Microsoft, protokołu OAuth.
-
C#: Podczas tworzenia wystąpienia DeviceClient domyślnie metoda Create tworzy wystąpienie DeviceClient, które używa protokołu AMQP do komunikowania się z usługą IoT Hub. Aby użyć protokołu HTTPS, użyj zastępowania metody Utwórz, które pozwala na określenie protokołu. Jeśli używasz protokołu HTTPS, powinieneś także dodać
Microsoft.AspNet.WebApi.Clientpakiet NuGet do projektu, aby uwzględnićSystem.Net.Http.Formattingprzestrzeń nazw.
Przykład
static DeviceClient deviceClient;
static string deviceKey = "{device key}";
static string iotHubUri = "{iot hub hostname}";
var messageString = "{message in string format}";
var message = new Message(Encoding.ASCII.GetBytes(messageString));
deviceClient = DeviceClient.Create(iotHubUri, new DeviceAuthenticationWithRegistrySymmetricKey("myFirstDevice", deviceKey));
await deviceClient.SendEventAsync(message);
Przykład
Node.js: Uwierzytelnianie
Klucz symetryczny
- Tworzenie centrum IoT na platformie Azure
- Tworzenie wpisu w rejestrze tożsamości urządzeń
var device = new iothub.Device(null); device.deviceId = <DeviceId > registry.create(device, function(err, deviceInfo, res) {}) - Tworzenie symulowanego urządzenia
var clientFromConnectionString = require('azure-iot-device-amqp').clientFromConnectionString; var Message = require('azure-iot-device').Message; var connectionString = 'HostName=<HostName>DeviceId=<DeviceId>SharedAccessKey=<SharedAccessKey>'; var client = clientFromConnectionString(connectionString);Token sygnatury dostępu współdzielonego
- Jest wewnętrznie generowane podczas korzystania z klucza symetrycznego, ale możemy go również ręcznie wygenerować i użyć.
- Zdefiniuj protokół :
var Http = require('azure-iot-device-http').Http; - Utwórz token sygnatury dostępu współdzielonego:
resourceUri = encodeURIComponent(resourceUri.toLowerCase()).toLowerCase(); var deviceName = "<deviceName >"; var expires = (Date.now() / 1000) + expiresInMins * 60; var toSign = resourceUri + '\n' + expires; // using crypto var decodedPassword = new Buffer(signingKey, 'base64').toString('binary'); const hmac = crypto.createHmac('sha256', decodedPassword); hmac.update(toSign); var base64signature = hmac.digest('base64'); var base64UriEncoded = encodeURIComponent(base64signature); // construct authorization string var token = "SharedAccessSignature sr=" + resourceUri + "%2fdevices%2f"+deviceName+"&sig=" + base64UriEncoded + "&se=" + expires; if (policyName) token += "&skn="+policyName; return token; - Nawiązywanie połączenia przy użyciu tokenu sas:
Client.fromSharedAccessSignature(sas, Http);Certyfikaty
- Generowanie certyfikatu X509 z podpisem własnym przy użyciu dowolnego narzędzia, takiego jak OpenSSL, w celu wygenerowania plików cert i .key do przechowywania certyfikatu i klucza odpowiednio
- Aprowizuj urządzenie, które akceptuje zabezpieczone połączenie przy użyciu certyfikatów.
var connectionString = '<connectionString>'; var registry = iothub.Registry.fromConnectionString(connectionString); var deviceJSON = {deviceId:"<deviceId>", authentication: { x509Thumbprint: { primaryThumbprint: "<PrimaryThumbprint>", secondaryThumbprint: "<SecondaryThumbprint>" } }} var device = deviceJSON; registry.create(device, function (err) {}); - Łączenie urządzenia przy użyciu certyfikatu
var Protocol = require('azure-iot-device-http').Http; var Client = require('azure-iot-device').Client; var connectionString = 'HostName=<HostName>DeviceId=<DeviceId>x509=true'; var client = Client.fromConnectionString(connectionString, Protocol); var options = { key: fs.readFileSync('./key.pem', 'utf8'), cert: fs.readFileSync('./server.crt', 'utf8') }; // Calling setOptions with the x509 certificate and key (and optionally, passphrase) will configure the client //transport to use x509 when connecting to IoT Hub client.setOptions(options); //call fn to execute after the connection is set up client.open(fn);
Używanie poświadczeń uwierzytelniania poszczególnych urządzeń
| Tytuł | Szczegóły |
|---|---|
| Składnik | Brama IoT w chmurze |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Wybór bramy — Azure IoT Hub |
| Dokumentacja | Tokeny zabezpieczające usługi Azure IoT Hub |
| Etapy | Użyj poświadczeń uwierzytelniania na urządzeniu przy użyciu tokenów SaS opartych na kluczu urządzenia lub certyfikacie klienta zamiast zasad dostępu współdzielonego na poziomie usługi IoT Hub. Zapobiega to ponownemu używaniu tokenów uwierzytelniania jednego urządzenia lub bramy pola przez inne |
Upewnij się, że tylko wymagane kontenery i bloby mają anonimowy dostęp do odczytu
| Tytuł | Szczegóły |
|---|---|
| Składnik | Azure Storage |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Typ przechowywania - Blob |
| Dokumentacja | Zarządzanie anonimowym dostępem do odczytu do kontenerów i obiektów blob, Sygnatury Dostępu Współdzielonego, Część 1: Opis modelu Sygnatur Dostępu Współdzielonego |
| Etapy | Domyślnie kontener i wszystkie zawarte w nim blob-y mogą być dostępne wyłącznie dla właściciela konta magazynu. Aby przyznać anonimowym użytkownikom uprawnienia do odczytu kontenera i jego obiektów blob, można ustawić uprawnienia kontenera, umożliwiając dostęp publiczny. Użytkownicy anonimowi mogą odczytywać obiekty blob w publicznie dostępnym kontenerze bez uwierzytelniania żądania. Kontenery udostępniają następujące opcje zarządzania dostępem do kontenerów:
Dostęp anonimowy jest najlepszy w scenariuszach, w których niektóre bloby powinny być zawsze dostępne dla anonimowego odczytu. W przypadku bardziej szczegółowej kontroli można utworzyć sygnaturę dostępu współdzielonego, która umożliwia delegowanie ograniczonego dostępu przy użyciu różnych uprawnień i w określonym przedziale czasu. Upewnij się, że kontenery i obiekty blob, które mogą potencjalnie zawierać poufne dane, nie są przypadkowo udostępniane anonimowo |
Udzielanie ograniczonego dostępu do obiektów w usłudze Azure Storage przy użyciu sygnatury dostępu współdzielonego lub SAP
| Tytuł | Szczegóły |
|---|---|
| Składnik | Azure Storage |
| Faza SDL | Budowa |
| Aplikacyjne technologie | Generyczny |
| Atrybuty | Nie dotyczy |
| Dokumentacja | Sygnatury Dostępu Współdzielonego, Część 1: Zrozumienie Modelu SAS, Sygnatury Dostępu Współdzielonego, Część 2: Tworzenie i używanie ich z magazynem obiektów Blob, Jak delegować dostęp do obiektów na koncie przy użyciu sygnatur dostępu współdzielonego i przechowywanych zasad dostępu |
| Etapy | Użycie sygnatury dostępu współdzielonego (SAS) to zaawansowany sposób udzielania ograniczonego dostępu do obiektów na koncie magazynu innym klientom bez konieczności uwidaczniania klucza dostępu do konta. Sygnatura dostępu współdzielonego jest identyfikatorem URI obejmującym wszystkie parametry zapytania niezbędne do uwierzytelnionego dostępu do zasobu magazynowego. Aby uzyskać dostęp do zasobów magazynu przy użyciu sygnatury dostępu współdzielonego, klient musi przekazać sygnaturę dostępu współdzielonego tylko do odpowiedniego konstruktora lub metody. Możesz użyć sygnatury dostępu współdzielonego (SAS), jeśli chcesz zapewnić dostęp do zasobów na koncie magazynu klientowi, któremu nie można powierzyć klucza konta. Klucze konta magazynu obejmują zarówno klucz podstawowy, jak i pomocniczy, który udziela dostępu administracyjnego do konta i wszystkich zasobów w nim. Uwidacznianie jednego z kluczy konta powoduje otwarcie konta na możliwość złośliwego lub nieumyślnego użycia. Sygnatury dostępu współdzielonego zapewniają bezpieczną alternatywę, która umożliwia innym klientom odczytywanie, zapisywanie i usuwanie danych na koncie magazynu zgodnie z udzielonymi uprawnieniami i bez konieczności używania klucza konta. Jeśli masz logiczny zestaw parametrów, które są podobne za każdym razem, użycie zasad dostępu przechowywanego (SAP) jest lepszym pomysłem. Ponieważ korzystanie z SAS pochodzącego z przechowywanej zasady dostępu daje możliwość natychmiastowego odwołania tego SAS, zalecane jest, aby zawsze używać przechowywanych zasad dostępu, kiedy to możliwe. |