Autoryzowanie dostępu do zasobów usługi Event Hubs za pomocą sygnatur dostępu współdzielonego

Sygnatura dostępu współdzielonego (SAS) umożliwia udzielanie ograniczonego dostępu do zasobów w przestrzeni nazw usługi Event Hubs. Sygnatura dostępu współdzielonego chroni dostęp do zasobów usługi Event Hubs na podstawie reguł autoryzacji. Te reguły są konfigurowane w przestrzeni nazw lub centrum zdarzeń. Ten artykuł zawiera omówienie modelu sygnatury dostępu współdzielonego i przegląd najlepszych rozwiązań dotyczących sygnatur dostępu współdzielonego.

Uwaga

W tym artykule opisano autoryzację dostępu do zasobów usługi Event Hubs przy użyciu sygnatury dostępu współdzielonego. Aby dowiedzieć się więcej na temat uwierzytelniania dostępu do zasobów usługi Event Hubs przy użyciu sygnatury dostępu współdzielonego, zobacz Uwierzytelnianie przy użyciu sygnatury dostępu współdzielonego.

Co to są sygnatury dostępu współdzielonego?

Sygnatura dostępu współdzielonego (SAS) zapewnia delegowany dostęp do zasobów usługi Event Hubs na podstawie reguł autoryzacji. Reguła autoryzacji ma nazwę, jest skojarzona z określonymi prawami i zawiera parę kluczy kryptograficznych. Nazwa i klucz reguły są używane za pośrednictwem klientów usługi Event Hubs lub we własnym kodzie w celu wygenerowania tokenów SAS. Klient może następnie przekazać token do usługi Event Hubs, aby udowodnić autoryzację dla żądanej operacji.

Sygnatura dostępu współdzielonego to mechanizm autoryzacji oparty na oświadczeniach korzystający z prostych tokenów. W przypadku korzystania z sygnatury dostępu współdzielonego klucze nigdy nie są przekazywane do przewodu. Klucze są używane do kryptograficznego podpisywania informacji, które można później zweryfikować przez usługę. Sygnatura dostępu współdzielonego może być podobna do schematu nazwy użytkownika i hasła, w którym klient jest w bezpośrednim posiadaniu nazwy reguły autoryzacji i pasującego klucza. Sygnatura dostępu współdzielonego może być używana podobnie do modelu zabezpieczeń federacyjnych, w którym klient otrzymuje token dostępu ograniczony czasowo i podpisany z usługi tokenu zabezpieczającego, nie wchodząc w posiadanie klucza podpisywania.

Uwaga

Usługa Azure Event Hubs obsługuje również autoryzowanie zasobów usługi Event Hubs przy użyciu identyfikatora Entra firmy Microsoft. Autoryzowanie użytkowników lub aplikacji przy użyciu tokenu OAuth 2.0 zwróconego przez identyfikator Entra firmy Microsoft zapewnia lepsze zabezpieczenia i łatwość użycia za pośrednictwem sygnatur dostępu współdzielonego (SAS). W przypadku identyfikatora Entra firmy Microsoft nie ma potrzeby przechowywania tokenów w kodzie i ryzyka potencjalnych luk w zabezpieczeniach.

Firma Microsoft zaleca używanie identyfikatora Entra firmy Microsoft z aplikacjami usługi Azure Event Hubs, jeśli jest to możliwe. Aby uzyskać więcej informacji, zobacz Autoryzowanie dostępu do zasobu usługi Azure Event Hubs przy użyciu identyfikatora Entra firmy Microsoft.

Ważne

Tokeny sygnatur dostępu współdzielonego (sygnatury dostępu współdzielonego) mają kluczowe znaczenie dla ochrony zasobów. Zapewniając stopień szczegółowości, sygnatura dostępu współdzielonego udziela klientom dostępu do zasobów usługi Event Hubs. Nie powinny być udostępniane publicznie. W przypadku udostępniania, jeśli jest to wymagane ze względów rozwiązywania problemów, rozważ użycie zmniejszonej wersji plików dziennika lub usunięcie tokenów SAS (jeśli są obecne) z plików dziennika i upewnij się, że zrzuty ekranu nie zawierają informacji sygnatury dostępu współdzielonego.

Zasady autoryzacji dostępu współdzielonego

Każda przestrzeń nazw usługi Event Hubs i każda jednostka usługi Event Hubs (centrum zdarzeń lub temat platformy Kafka) ma zasady autoryzacji dostępu współdzielonego złożone z reguł. Zasady na poziomie przestrzeni nazw mają zastosowanie do wszystkich jednostek wewnątrz przestrzeni nazw, niezależnie od ich konfiguracji poszczególnych zasad. Dla każdej reguły zasad autoryzacji decydujesz się na trzy informacje: nazwa, zakres i prawa. Nazwa jest unikatową nazwą w tym zakresie. Zakres jest identyfikatorem URI danego zasobu. W przypadku przestrzeni nazw usługi Event Hubs zakres jest w pełni kwalifikowaną nazwą domeny (FQDN), taką jak https://<yournamespace>.servicebus.windows.net/.

Prawa udostępniane przez regułę zasad mogą być kombinacją:

  • Send — daje prawo do wysyłania komunikatów do jednostki
  • Listen — daje prawo do nasłuchiwania lub odbierania komunikatów z jednostki
  • Zarządzanie — umożliwia zarządzanie topologią przestrzeni nazw, w tym tworzenie i usuwanie jednostek. Uprawnienie Zarządzanie obejmuje prawa Do wysyłania i nasłuchiwania .

Przestrzeń nazw lub zasady jednostki mogą przechowywać do 12 reguł autoryzacji dostępu współdzielonego, zapewniając miejsce dla trzech zestawów reguł, z których każda obejmuje podstawowe prawa, oraz kombinację funkcji Wyślij i Nasłuchiwanie. Ten limit podkreśla, że magazyn zasad sygnatury dostępu współdzielonego nie jest przeznaczony dla użytkownika ani magazynu kont usług. Jeśli aplikacja musi udzielić dostępu do zasobów usługi Event Hubs na podstawie tożsamości użytkowników lub usług, powinna zaimplementować usługę tokenu zabezpieczającego, która wystawia tokeny SAS po uwierzytelnieniu i sprawdzeniu dostępu.

Reguła autoryzacji jest przypisywana klucz podstawowy i klucz pomocniczy. Te klucze są kryptograficznie silnymi kluczami. Nie tracij ich ani nie wyciekaj. Będą one zawsze dostępne w witrynie Azure Portal. Możesz użyć jednego z wygenerowanych kluczy i w dowolnym momencie je ponownie wygenerować. Jeśli ponownie wygenerowasz lub zmienisz klucz w zasadach, wszystkie wcześniej wystawione tokeny oparte na tym kluczu staną się natychmiast nieprawidłowe. Jednak trwające połączenia utworzone na podstawie takich tokenów będą nadal działać do momentu wygaśnięcia tokenu.

Podczas tworzenia przestrzeni nazw usługi Event Hubs dla przestrzeni nazw zostanie automatycznie utworzona reguła zasad o nazwie RootManageSharedAccessKey . Te zasady mają uprawnienia do zarządzania dla całej przestrzeni nazw. Zaleca się traktowanie tej reguły jako konta głównego administratora i nie jest używane w aplikacji. Dodatkowe reguły zasad można utworzyć na karcie Konfigurowanie przestrzeni nazw w portalu za pomocą programu PowerShell lub interfejsu wiersza polecenia platformy Azure.

Najlepsze rozwiązania dotyczące korzystania z sygnatury dostępu współdzielonego

W przypadku korzystania z sygnatur dostępu współdzielonego w aplikacjach należy pamiętać o dwóch potencjalnych zagrożeniach:

  • W przypadku wycieku sygnatury dostępu współdzielonego można go użyć przez każdego, kto go uzyska, co może potencjalnie naruszyć bezpieczeństwo zasobów usługi Event Hubs.
  • Jeśli sygnatura dostępu współdzielonego podana dla aplikacji klienckiej wygaśnie, a aplikacja nie może pobrać nowej sygnatury dostępu współdzielonego z usługi, funkcjonalność aplikacji może być utrudniona.

Poniższe zalecenia dotyczące używania sygnatur dostępu współdzielonego mogą pomóc w ograniczeniu tych zagrożeń:

  • Klienci mają automatycznie odnawiać sygnaturę dostępu współdzielonego w razie potrzeby: klienci powinni odnowić sygnaturę dostępu współdzielonego na długo przed wygaśnięciem, aby umożliwić ponawianie prób, jeśli usługa dostarczająca sygnaturę dostępu współdzielonego jest niedostępna. Jeśli sygnatura dostępu współdzielonego ma być używana dla niewielkiej liczby natychmiastowych, krótkotrwałych operacji, które mają zostać ukończone w okresie wygaśnięcia, może to być niepotrzebne, ponieważ nie oczekuje się odnowienia sygnatury dostępu współdzielonego. Jeśli jednak masz klienta, który rutynowo wysyła żądania za pośrednictwem sygnatury dostępu współdzielonego, możliwość wygaśnięcia wchodzi w grę. Kluczową kwestią jest zrównoważenie potrzeby krótkotrwałego (jak wspomniano wcześniej) sygnatury dostępu współdzielonego z koniecznością zapewnienia, że klient żąda odnowienia wystarczająco wcześnie (aby uniknąć zakłóceń z powodu wygaśnięcia sygnatury dostępu współdzielonego przed pomyślnym odnowieniem).
  • Zachowaj ostrożność w czasie rozpoczęcia sygnatury dostępu współdzielonego: jeśli ustawisz czas rozpoczęcia dla sygnatury dostępu współdzielonego na teraz, to ze względu na niesymetryczność zegara (różnice w bieżącym czasie według różnych maszyn) błędy mogą być obserwowane sporadycznie przez pierwsze kilka minut. Ogólnie rzecz biorąc, ustaw czas rozpoczęcia na co najmniej 15 minut w przeszłości. Lub nie ustawiaj go w ogóle, co sprawi, że będzie ono prawidłowe natychmiast we wszystkich przypadkach. To samo zwykle dotyczy również czasu wygaśnięcia. Należy pamiętać, że możesz obserwować do 15 minut niesymetryczności zegara w dowolnym kierunku w dowolnym żądaniu.
  • Aby uzyskać dostęp do zasobu, należy określić, że najlepszym rozwiązaniem w zakresie zabezpieczeń jest zapewnienie użytkownikowi minimalnych wymaganych uprawnień. Jeśli użytkownik potrzebuje tylko dostępu do odczytu do pojedynczej jednostki, przyznaj im dostęp do odczytu do tej pojedynczej jednostki, a nie do odczytu/zapisu/usuwania do wszystkich jednostek. Pomaga również zmniejszyć szkody w przypadku naruszenia zabezpieczeń sygnatury dostępu współdzielonego, ponieważ sygnatura dostępu współdzielonego ma mniejszą moc w rękach osoby atakującej.
  • Nie zawsze używaj sygnatury dostępu współdzielonego: czasami ryzyko związane z określoną operacją w usłudze Event Hubs przewyższa korzyści wynikające z sygnatury dostępu współdzielonego. W przypadku takich operacji utwórz usługę warstwy środkowej, która zapisuje dane w usłudze Event Hubs po weryfikacji, uwierzytelnieniu i inspekcji reguł biznesowych.
  • Zawsze używaj protokołu HTTPs: zawsze używaj protokołu Https do tworzenia lub dystrybuowania sygnatury dostępu współdzielonego. Jeśli sygnatura dostępu współdzielonego zostanie przekazana przez protokół HTTP i przechwycona, osoba atakująca wykonująca atak typu man-in-the-middle może odczytać sygnaturę dostępu współdzielonego, a następnie użyć go tak samo, jak zamierzony użytkownik, potencjalnie narażając poufne dane lub zezwalając na uszkodzenie danych przez złośliwego użytkownika.

Podsumowanie

Sygnatury dostępu współużytkowania są przydatne do zapewniania klientom ograniczonych uprawnień do zasobów usługi Event Hubs. Są one istotną częścią modelu zabezpieczeń dla każdej aplikacji korzystającej z usługi Azure Event Hubs. Jeśli zastosujesz najlepsze rozwiązania wymienione w tym artykule, możesz użyć sygnatury dostępu współdzielonego, aby zapewnić większą elastyczność dostępu do zasobów bez naruszania bezpieczeństwa aplikacji.

Następne kroki

Zobacz następujące powiązane artykuły: