Wymuszanie minimalnej wymaganej wersji protokołu Transport Layer Security (TLS) dla żądań do konta magazynu
Komunikacja między aplikacją kliencką a kontem usługi Azure Storage jest szyfrowana przy użyciu protokołu Transport Layer Security (TLS). TLS to standardowy protokół kryptograficzny, który zapewnia prywatność i integralność danych między klientami i usługami przez Internet. Aby uzyskać więcej informacji na temat protokołu TLS, zobacz Transport Layer Security.
Usługa Azure Storage obsługuje obecnie trzy wersje protokołu TLS: 1.0, 1.1 i 1.2. Usługa Azure Storage używa protokołu TLS 1.2 w publicznych punktach końcowych HTTPS, ale protokoły TLS 1.0 i TLS 1.1 są nadal obsługiwane w celu zapewnienia zgodności z poprzednimi wersjami.
Napiwek
Usługa Azure Storage opiera się na implementacji protokołu SSL systemu Windows, która nie jest oparta na protokole OpenSSL i dlatego nie jest widoczna dla luk w zabezpieczeniach związanych z protokołem OpenSSL.
Konta usługi Azure Storage umożliwiają klientom wysyłanie i odbieranie danych przy użyciu najstarszej wersji protokołu TLS, TLS 1.0 i nowszych. Aby wymusić ostrzejsze środki zabezpieczeń, można skonfigurować konto magazynu tak, aby wymagać od klientów wysyłania i odbierania danych przy użyciu nowszej wersji protokołu TLS. Jeśli konto magazynu wymaga minimalnej wersji protokołu TLS, wszystkie żądania wysyłane ze starszą wersją nie powiedzą się.
W tym artykule opisano sposób używania struktury DRAG (Detection-Remediation-Audit-Governance) w celu ciągłego zarządzania bezpiecznym protokołem TLS dla kont magazynu.
Aby uzyskać informacje o sposobie określania określonej wersji protokołu TLS podczas wysyłania żądania z aplikacji klienckiej, zobacz Konfigurowanie protokołu Transport Layer Security (TLS) dla aplikacji klienckiej.
Uwaga
Zestaw szyfrowania używany, gdy klienci wysyłają dane do konta magazynu i odbierają je z konta magazynu, zależy od używanej wersji protokołu TLS. Nie można skonfigurować konta magazynu w celu zablokowania używania określonych szyfrów, innych niż wymaganie minimalnej wersji protokołu TLS. Jeśli potrzebujesz możliwości zezwalania tylko na określone zestawy szyfrowania podczas nawiązywania połączenia z kontem magazynu, rozważ użycie bramy aplikacja systemu Azure. Aby uzyskać więcej informacji na temat używania usługi Application Gateway do tego celu, zobacz Konfigurowanie wersji zasad PROTOKOŁU TLS i zestawów szyfrowania w usłudze aplikacja systemu Azure Gateway.
Wykrywanie wersji protokołu TLS używanej przez aplikacje klienckie
W przypadku wymuszania minimalnej wersji protokołu TLS dla konta magazynu ryzykujesz odrzucanie żądań od klientów wysyłających dane ze starszą wersją protokołu TLS. Aby zrozumieć, w jaki sposób konfigurowanie minimalnej wersji protokołu TLS może mieć wpływ na aplikacje klienckie, firma Microsoft zaleca włączenie rejestrowania dla konta usługi Azure Storage i przeanalizowanie dzienników po upływie przedziału czasu w celu wykrycia używanych wersji aplikacji klienckich TLS.
Aby rejestrować żądania do konta usługi Azure Storage i określić wersję protokołu TLS używaną przez klienta, możesz użyć rejestrowania usługi Azure Storage w usłudze Azure Monitor. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Storage.
Rejestrowanie usługi Azure Storage w usłudze Azure Monitor obsługuje używanie zapytań dzienników do analizowania danych dziennika. Aby wykonywać zapytania dotyczące dzienników, możesz użyć obszaru roboczego usługi Azure Log Analytics. Aby dowiedzieć się więcej na temat zapytań dzienników, zobacz Samouczek: rozpoczynanie pracy z zapytaniami usługi Log Analytics.
Aby rejestrować dane usługi Azure Storage za pomocą usługi Azure Monitor i analizować je za pomocą usługi Azure Log Analytics, należy najpierw utworzyć ustawienie diagnostyczne wskazujące typy żądań i usługi magazynu, dla których chcesz rejestrować dane. Aby utworzyć ustawienie diagnostyczne w Azure Portal, wykonaj następujące kroki:
Utwórz nowy obszar roboczy usługi Log Analytics w subskrypcji zawierającej konto usługi Azure Storage. Po skonfigurowaniu rejestrowania dla konta magazynu dzienniki będą dostępne w obszarze roboczym usługi Log Analytics. Aby uzyskać więcej informacji, zobacz Tworzenie obszaru roboczego usługi Log Analytics w Azure Portal.
W witrynie Azure Portal przejdź do swojego konta magazynu.
W sekcji Monitorowanie wybierz pozycję Ustawienia diagnostyczne.
Wybierz usługę Azure Storage, dla której chcesz rejestrować żądania. Na przykład wybierz pozycję Blob , aby rejestrować żądania do usługi Blob Storage.
Wybierz pozycję Dodaj ustawienia diagnostyczne.
Podaj nazwę ustawień diagnostyki.
W obszarze Szczegóły kategorii w sekcji dziennika wybierz typy żądań do zarejestrowania. Możesz rejestrować żądania odczytu, zapisu i usuwania. Na przykład wybranie opcji StorageRead i StorageWrite spowoduje rejestrowanie żądań odczytu i zapisu w wybranej usłudze.
W obszarze Szczegóły miejsca docelowego wybierz pozycję Wyślij do usługi Log Analytics. Wybierz subskrypcję i utworzony wcześniej obszar roboczy usługi Log Analytics, jak pokazano na poniższej ilustracji.
Po utworzeniu ustawienia diagnostycznego żądania do konta magazynu są następnie rejestrowane zgodnie z tym ustawieniem. Aby uzyskać więcej informacji, zobacz Tworzenie ustawienia diagnostycznego w celu zbierania dzienników zasobów i metryk na platformie Azure.
Aby uzyskać informacje o polach dostępnych w dziennikach usługi Azure Storage w usłudze Azure Monitor, zobacz Dzienniki zasobów.
Wykonywanie zapytań dotyczących zarejestrowanych żądań według wersji protokołu TLS
Dzienniki usługi Azure Storage w usłudze Azure Monitor obejmują wersję protokołu TLS używaną do wysyłania żądania do konta magazynu. Użyj właściwości TlsVersion, aby sprawdzić wersję protokołu TLS zarejestrowanego żądania.
Aby określić, ile żądań zostało wykonanych względem usługi Blob Storage z różnymi wersjami protokołu TLS w ciągu ostatnich siedmiu dni, otwórz obszar roboczy usługi Log Analytics. Następnie wklej następujące zapytanie do nowego zapytania dziennika i uruchom je. Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach własnymi wartościami:
StorageBlobLogs
| where TimeGenerated > ago(7d) and AccountName == "<account-name>"
| summarize count() by TlsVersion
Wyniki pokazują liczbę żądań wysyłanych z każdą wersją protokołu TLS:
Wykonywanie zapytań dotyczących zarejestrowanych żądań według adresu IP wywołującego i nagłówka agenta użytkownika
Dzienniki usługi Azure Storage w usłudze Azure Monitor zawierają również adres IP wywołującego i nagłówek agenta użytkownika, aby ułatwić ocenę, które aplikacje klienckie uzyskują dostęp do konta magazynu. Możesz przeanalizować te wartości, aby zdecydować, czy aplikacje klienckie muszą zostać zaktualizowane w celu korzystania z nowszej wersji protokołu TLS, czy też dopuszczalne jest niepowodzenie żądania klienta, jeśli nie zostanie wysłane z minimalną wersją protokołu TLS.
Aby określić, którzy klienci wysyłali żądania w wersji protokołu TLS starszej niż TLS 1.2 w ciągu ostatnich siedmiu dni, wklej następujące zapytanie do nowego zapytania dziennika i uruchom je. Pamiętaj, aby zastąpić wartości symboli zastępczych w nawiasach własnymi wartościami:
StorageBlobLogs
| where TimeGenerated > ago(7d) and AccountName == "<account-name>" and TlsVersion != "TLS 1.2"
| project TlsVersion, CallerIpAddress, UserAgentHeader
Korygowanie zagrożeń bezpieczeństwa przy użyciu minimalnej wersji protokołu TLS
Jeśli masz pewność, że ruch z klientów korzystających ze starszych wersji protokołu TLS jest minimalny lub że dopuszczalne jest niepowodzenie żądań wysyłanych ze starszą wersją protokołu TLS, możesz rozpocząć wymuszanie minimalnej wersji protokołu TLS na koncie magazynu. Wymaganie, aby klienci używali minimalnej wersji protokołu TLS do tworzenia żądań względem konta magazynu, jest częścią strategii minimalizowania zagrożeń bezpieczeństwa dla danych.
Ważne
Jeśli używasz usługi łączącej się z usługą Azure Storage, upewnij się, że usługa używa odpowiedniej wersji protokołu TLS do wysyłania żądań do usługi Azure Storage przed ustawieniem wymaganej minimalnej wersji konta magazynu.
Konfigurowanie minimalnej wersji protokołu TLS dla konta magazynu
Aby skonfigurować minimalną wersję protokołu TLS dla konta magazynu, ustaw dla konta wersję MinimumTlsVersion . Ta właściwość jest dostępna dla wszystkich kont magazynu utworzonych za pomocą modelu wdrażania usługi Azure Resource Manager. Aby uzyskać więcej informacji na temat modelu wdrażania usługi Azure Resource Manager, zobacz Omówienie konta magazynu.
Wartość domyślna właściwości MinimumTlsVersion różni się w zależności od sposobu jej ustawienia. Podczas tworzenia konta magazynu w witrynie Azure Portal minimalna wersja protokołu TLS jest domyślnie ustawiona na 1.2. Podczas tworzenia konta magazynu przy użyciu programu PowerShell, interfejsu wiersza polecenia platformy Azure lub szablonu usługi Azure Resource Manager właściwość MinimumTlsVersion nie jest domyślnie ustawiona i nie zwraca wartości, dopóki nie zostanie jawnie ustawiona.
Jeśli właściwość MinimumTlsVersion nie jest ustawiona, jej wartość może być wyświetlana jako null lub pusty ciąg, w zależności od kontekstu. Konto magazynu będzie zezwalać na żądania wysyłane z protokołem TLS w wersji 1.0 lub nowszej, jeśli właściwość nie jest ustawiona.
Podczas tworzenia konta magazynu w witrynie Azure Portal minimalna wersja protokołu TLS jest domyślnie ustawiona na 1.2.
Aby skonfigurować minimalną wersję protokołu TLS dla istniejącego konta magazynu w witrynie Azure Portal, wykonaj następujące kroki:
Uwaga
Po zaktualizowaniu minimalnej wersji protokołu TLS dla konta magazynu może upłynąć do 30 sekund, zanim zmiana zostanie w pełni rozpropagowana.
Skonfigurowanie minimalnej wersji protokołu TLS wymaga wersji 2019-04-01 lub nowszej dostawcy zasobów usługi Azure Storage. Aby uzyskać więcej informacji, zobacz Interfejs API REST dostawcy zasobów usługi Azure Storage.
Sprawdzanie minimalnej wymaganej wersji protokołu TLS dla wielu kont
Aby sprawdzić minimalną wymaganą wersję protokołu TLS dla zestawu kont magazynu z optymalną wydajnością, możesz użyć Eksploratora usługi Azure Resource Graph w witrynie Azure Portal. Aby dowiedzieć się więcej na temat korzystania z Eksploratora usługi Resource Graph, zobacz Szybki start: uruchamianie pierwszego zapytania usługi Resource Graph przy użyciu Eksploratora usługi Azure Resource Graph.
Uruchomienie następującego zapytania w Eksploratorze usługi Resource Graph zwraca listę kont magazynu i wyświetla minimalną wersję protokołu TLS dla każdego konta:
resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend minimumTlsVersion = parse_json(properties).minimumTlsVersion
| project subscriptionId, resourceGroup, name, minimumTlsVersion
Testowanie minimalnej wersji protokołu TLS od klienta
Aby przetestować, czy minimalna wymagana wersja protokołu TLS dla konta magazynu zabrania wywołań wykonanych ze starszą wersją, można skonfigurować klienta do używania starszej wersji protokołu TLS. Aby uzyskać więcej informacji na temat konfigurowania klienta do używania określonej wersji protokołu TLS, zobacz Konfigurowanie protokołu Transport Layer Security (TLS) dla aplikacji klienckiej.
Gdy klient uzyskuje dostęp do konta magazynu przy użyciu wersji protokołu TLS, która nie spełnia minimalnej wersji protokołu TLS skonfigurowanej dla konta, usługa Azure Storage zwraca kod błędu 400 błąd (nieprawidłowe żądanie) i komunikat wskazujący, że używana wersja protokołu TLS nie jest dozwolona na wysyłanie żądań względem tego konta magazynu.
Uwaga
Podczas konfigurowania minimalnej wersji protokołu TLS dla konta magazynu minimalna wersja jest wymuszana w warstwie aplikacji. Narzędzia, które próbują określić obsługę protokołu TLS w warstwie protokołu, mogą zwracać wersje protokołu TLS oprócz minimalnej wymaganej wersji podczas uruchamiania bezpośrednio względem punktu końcowego konta magazynu.
Przeprowadzanie inspekcji pod kątem zgodności przy użyciu usługi Azure Policy
Jeśli masz dużą liczbę kont magazynu, możesz przeprowadzić inspekcję, aby upewnić się, że wszystkie konta są skonfigurowane dla minimalnej wersji protokołu TLS wymaganej przez organizację. Aby przeprowadzić inspekcję zestawu kont magazynu pod kątem zgodności, użyj usługi Azure Policy. Azure Policy to usługa, której można użyć do tworzenia, przypisywania i zarządzania zasadami, które stosują reguły do zasobów platformy Azure. Usługa Azure Policy pomaga zachować zgodność tych zasobów ze standardami firmowymi i umowami dotyczącymi poziomu usług. Aby uzyskać więcej informacji, zobacz Omówienie usługi Azure Policy.
Tworzenie zasad z efektem inspekcji
Usługa Azure Policy obsługuje efekty, które określają, co się stanie, gdy reguła zasad jest oceniana względem zasobu. Efekt inspekcji tworzy ostrzeżenie, gdy zasób nie jest zgodny, ale nie zatrzymuje żądania. Aby uzyskać więcej informacji na temat efektów, zobacz Omówienie efektów usługi Azure Policy.
Aby utworzyć zasady z efektem inspekcji dla minimalnej wersji protokołu TLS w witrynie Azure Portal, wykonaj następujące kroki:
W portalu Azure przejdź do usługi Azure Policy.
W sekcji Tworzenie wybierz pozycję Definicje.
Wybierz pozycję Dodaj definicję zasad, aby utworzyć nową definicję zasad.
W polu Lokalizacja definicji wybierz przycisk Więcej, aby określić, gdzie znajduje się zasób zasad inspekcji.
Określ nazwę zasad. Opcjonalnie możesz określić opis i kategorię.
W obszarze Reguła zasad dodaj następującą definicję zasad do sekcji policyRule .
{ "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "anyOf": [ { "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion", "notEquals": "TLS1_2" }, { "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion", "exists": "false" } ] } ] }, "then": { "effect": "audit" } } }
Zapisz zasady.
Przypisywanie zasad
Następnie przypisz zasady do zasobu. Zakres zasad odpowiada zasobowi i wszelkim zasobom poniżej. Aby uzyskać więcej informacji na temat przypisywania zasad, zobacz Azure Policy assignment structure (Struktura przypisywania zasad w usłudze Azure Policy).
Aby przypisać zasady w witrynie Azure Portal, wykonaj następujące kroki:
- W portalu Azure przejdź do usługi Azure Policy.
- W sekcji Tworzenie wybierz pozycję Przypisania.
- Wybierz pozycję Przypisz zasady , aby utworzyć nowe przypisanie zasad.
- W polu Zakres wybierz zakres przypisania zasad.
- W polu Definicja zasad wybierz przycisk Więcej, a następnie wybierz zasady zdefiniowane w poprzedniej sekcji z listy.
- Określ nazwę przypisania zasad. Opcjonalnie możesz wprowadzić opis.
- Pozostaw opcję Wymuszanie zasad ustawione na włączone. To ustawienie nie ma wpływu na zasady inspekcji.
- Wybierz pozycję Przejrzyj i utwórz , aby utworzyć przypisanie.
Wyświetlanie raportu zgodności
Po przypisaniu zasad możesz wyświetlić raport zgodności. Raport zgodności zasad inspekcji zawiera informacje o tym, które konta magazynu nie są zgodne z zasadami. Aby uzyskać więcej informacji, zobacz Pobieranie danych zgodności zasad.
Udostępnienie raportu zgodności po utworzeniu przypisania zasad może potrwać kilka minut.
Aby wyświetlić raport zgodności w witrynie Azure Portal, wykonaj następujące kroki:
W portalu Azure przejdź do usługi Azure Policy.
Wybierz pozycję Zgodność.
Przefiltruj wyniki pod kątem nazwy przypisania zasad utworzonego w poprzednim kroku. Raport przedstawia liczbę zasobów, które nie są zgodne z zasadami.
Możesz przejść do szczegółów raportu, aby uzyskać dodatkowe informacje, w tym listę kont magazynu, które nie są zgodne.
Używanie usługi Azure Policy do wymuszania minimalnej wersji protokołu TLS
Usługa Azure Policy obsługuje ład w chmurze, zapewniając, że zasoby platformy Azure są zgodne z wymaganiami i standardami. Aby wymusić minimalne wymaganie dotyczące wersji protokołu TLS dla kont magazynu w organizacji, można utworzyć zasady, które uniemożliwiają utworzenie nowego konta magazynu, które określa minimalne wymaganie protokołu TLS dla starszej wersji protokołu TLS niż ta, która jest określana przez zasady. Te zasady uniemożliwią również zmianę konfiguracji istniejącego konta, jeśli ustawienie minimalnej wersji protokołu TLS dla tego konta nie jest zgodne z zasadami.
Zasady wymuszania używają efektu Odmów, aby zapobiec żądaniu, które utworzy lub zmodyfikuje konto magazynu, aby minimalna wersja protokołu TLS nie jest już zgodna ze standardami organizacji. Aby uzyskać więcej informacji na temat efektów, zobacz Omówienie efektów usługi Azure Policy.
Aby utworzyć zasady z efektem Odmowy dla minimalnej wersji protokołu TLS mniejszej niż TLS 1.2, wykonaj te same kroki opisane w artykule Używanie usługi Azure Policy do inspekcji pod kątem zgodności, ale podaj następujący kod JSON w sekcji policyRule definicji zasad:
{
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"anyOf": [
{
"field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
"notEquals": "TLS1_2"
},
{
"field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
"exists": "false"
}
]
}
]
},
"then": {
"effect": "deny"
}
}
}
Po utworzeniu zasad z efektem Odmów i przypisaniu jej do zakresu użytkownik nie może utworzyć konta magazynu z minimalną wersją protokołu TLS starszą niż 1.2. Użytkownik nie może również wprowadzić żadnych zmian konfiguracji na istniejącym koncie magazynu, które obecnie wymaga minimalnej wersji protokołu TLS starszej niż 1.2. Próba wykonania tej czynności powoduje wystąpienie błędu. Wymagana minimalna wersja protokołu TLS dla konta magazynu musi być ustawiona na 1.2, aby kontynuować tworzenie konta lub konfigurację.
Na poniższej ilustracji przedstawiono błąd, który występuje, jeśli próbujesz utworzyć konto magazynu z minimalną wersją protokołu TLS ustawioną na TLS 1.0 (wartość domyślna dla nowego konta), gdy zasady z efektem Odmowy wymagają, aby minimalna wersja protokołu TLS jest ustawiona na TLS 1.2.
Uprawnienia niezbędne do wymagania minimalnej wersji protokołu TLS
Aby ustawić właściwość MinimumTlsVersion dla konta magazynu, użytkownik musi mieć uprawnienia do tworzenia kont magazynu i zarządzania nimi. Role kontroli dostępu opartej na rolach (RBAC) platformy Azure, które zapewniają te uprawnienia, obejmują akcję Microsoft.Storage/storageAccounts/write lub Microsoft.Storage/storageAccounts/* . Wbudowane role z tą akcją obejmują:
- Rola właściciela w usłudze Azure Resource Manager
- Rola współautora w usłudze Azure Resource Manager
- Rola współautora konta magazynu
Te role nie zapewniają dostępu do danych na koncie magazynu za pośrednictwem identyfikatora Entra firmy Microsoft. Obejmują one jednak usługę Microsoft.Storage/storageAccounts/listkeys/action, która udziela dostępu do kluczy dostępu do konta. Za pomocą tego uprawnienia użytkownik może użyć kluczy dostępu do konta, aby uzyskać dostęp do wszystkich danych na koncie magazynu.
Przypisania ról muszą być ograniczone do poziomu konta magazynu lub wyższego, aby umożliwić użytkownikowi wymaganie minimalnej wersji protokołu TLS dla konta magazynu. Aby uzyskać więcej informacji na temat zakresu ról, zobacz Omówienie zakresu kontroli dostępu opartej na rolach platformy Azure.
Należy zachować ostrożność, aby ograniczyć przypisywanie tych ról tylko do tych, którzy wymagają możliwości utworzenia konta magazynu lub zaktualizowania jego właściwości. Użyj zasady najniższych uprawnień, aby upewnić się, że użytkownicy mają najmniejsze uprawnienia, których potrzebują do wykonania swoich zadań. Aby uzyskać więcej informacji na temat zarządzania dostępem za pomocą kontroli dostępu opartej na rolach platformy Azure, zobacz Najlepsze rozwiązania dotyczące kontroli dostępu opartej na rolach platformy Azure.
Uwaga
Role klasycznego administratora subskrypcji Administrator usługi i Współadministrator obejmują odpowiednik roli właściciela usługi Azure Resource Manager. Rola Właściciel zawiera wszystkie akcje, więc użytkownik z jedną z tych ról administracyjnych może również tworzyć konta magazynu i zarządzać nimi. Aby uzyskać więcej informacji, zobacz Role platformy Azure, Role firmy Microsoft Entra i klasyczne role administratora subskrypcji.
Kwestie dotyczące sieci
Gdy klient wysyła żądanie do konta magazynu, klient nawiązuje połączenie z publicznym punktem końcowym konta magazynu przed przetworzeniem żądań. Minimalne ustawienie wersji protokołu TLS jest sprawdzane po nawiązaniu połączenia. Jeśli żądanie używa wcześniejszej wersji protokołu TLS niż określona przez ustawienie, połączenie będzie nadal działać pomyślnie, ale żądanie ostatecznie zakończy się niepowodzeniem. Aby uzyskać więcej informacji na temat publicznych punktów końcowych dla usługi Azure Storage, zobacz Składnia identyfikatora URI zasobu.