Odnajdywanie sygnatur dostępu współdzielonego
Sygnatura dostępu współdzielonego (SAS) to podpisany identyfikator URI wskazujący co najmniej jeden zasób magazynu i zawiera token zawierający specjalny zestaw parametrów zapytania. Token wskazuje sposób uzyskiwania dostępu do zasobów przez klienta. Jeden z parametrów zapytania, podpis, jest skonstruowany z parametrów sygnatury dostępu współdzielonego i podpisany przy użyciu klucza, który został użyty do utworzenia sygnatury dostępu współdzielonego. Ten podpis jest używany przez usługę Azure Storage do autoryzowania dostępu do zasobu magazynu.
Typy sygnatur dostępu współdzielonego
Usługa Azure Storage obsługuje trzy typy sygnatur dostępu współdzielonego:
Sygnatura dostępu współdzielonego delegowania użytkownika: sygnatura dostępu współdzielonego delegowania użytkownika jest zabezpieczona przy użyciu poświadczeń usługi Microsoft Entra, a także przez uprawnienia określone dla sygnatury dostępu współdzielonego. Sygnatura dostępu współdzielonego delegowania użytkownika dotyczy tylko usługi Blob Storage.
Sygnatura dostępu współdzielonego usługi: sygnatura dostępu współdzielonego usługi jest zabezpieczona przy użyciu klucza konta magazynu. Sygnatura dostępu współdzielonego usługi deleguje dostęp do zasobu w następujących usługach usługi Azure Storage: Blob Storage, Queue Storage, Table Storage lub Azure Files.
Sygnatura dostępu współdzielonego konta: sygnatura dostępu współdzielonego konta konta magazynu jest zabezpieczona przy użyciu klucza konta magazynu. Sygnatura dostępu współdzielonego konta deleguje dostęp do zasobu w co najmniej jednej usłudze magazynu. Wszystkie operacje dostępne za pośrednictwem sygnatury dostępu współdzielonego delegowania użytkownika lub usługi są również dostępne za pośrednictwem sygnatury dostępu współdzielonego konta.
Uwaga
Firma Microsoft zaleca korzystanie z poświadczeń firmy Microsoft, jeśli jest to możliwe jako najlepsze rozwiązanie w zakresie zabezpieczeń, zamiast używać klucza konta, co może być łatwiejsze w przypadku naruszenia zabezpieczeń. Jeśli projekt aplikacji wymaga sygnatur dostępu współdzielonego w celu uzyskania dostępu do usługi Blob Storage, użyj poświadczeń firmy Microsoft Entra, aby utworzyć sygnaturę dostępu współdzielonego delegowania użytkownika, jeśli jest to możliwe w celu uzyskania lepszych zabezpieczeń
Jak działają sygnatury dostępu współdzielonego
Jeśli do uzyskiwania dostępu do danych przechowywanych w usłudze Azure Storage jest używana sygnatura dostępu współdzielonego, potrzebne są dwa składniki. Pierwszy to identyfikator URI zasobu, do którego chcesz uzyskać dostęp. Druga część to token SAS utworzony w celu autoryzowania dostępu do tego zasobu.
W pojedynczym identyfikatorze URI, takim jak https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D
, można oddzielić identyfikator URI od tokenu SAS w następujący sposób:
- URI:
https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?
- Token SAS:
sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D
Token SAS zawiera kilku składników.
Składnik | opis |
---|---|
sp=r |
Kontroluje prawa dostępu. Wartości mogą być a przeznaczone do dodawania, c tworzenia, d usuwania, listy, l r odczytu lub w zapisu. Ten przykład jest tylko do odczytu. W przykładzie sp=acdlrw są przyznawane wszystkie dostępne prawa. |
st=2020-01-20T11:42:32Z |
Data i godzina rozpoczęcia dostępu. |
se=2020-01-20T19:42:32Z |
Data i godzina zakończenia dostępu. Ten przykład daje osiem godzin dostępu. |
sv=2019-02-02 |
Wersja interfejsu API magazynu do użycia. |
sr=b |
Rodzaj magazynu, do którego uzyskuje się dostęp. W tym przykładzie b oznacza obiekt blob. |
sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D |
Podpis kryptograficzny. |
Najlepsze rozwiązania
Aby zmniejszyć potencjalne ryzyko związane z używaniem sygnatur dostępu współdzielonego, firma Microsoft oferuje kilka wskazówek:
- Aby bezpiecznie rozpowszechniać sygnaturę dostępu współdzielonego i zapobiegać atakom typu man-in-the-middle, zawsze używaj protokołu HTTPS.
- Najbardziej bezpieczną sygnaturą dostępu współdzielonego jest sygnatura delegowania użytkowników. Używaj jej zawsze, gdy jest to możliwe, ponieważ eliminuje konieczność przechowywania klucza konta magazynu w kodzie. Aby zarządzać poświadczeniami, musisz użyć identyfikatora Entra firmy Microsoft. Ta opcja może nie być możliwa dla Twojego rozwiązania.
- Spróbuj ustawić najmniejszy użyteczną wartość czasu wygaśnięcia. Jeśli klucz sygnatury dostępu współdzielonego zostanie naruszony, będzie go można wykorzystać tylko przez krótki czas.
- Zastosuj regułę minimalnych wymaganych uprawnień. Przyznawaj tylko dostęp, który jest wymagany. Na przykład w Twojej aplikacji wystarczy dostęp tylko do odczytu.
- Istnieją sytuacje, w których sygnatura dostępu współdzielonego nie jest prawidłowym rozwiązaniem. Jeśli użycie sygnatury dostępu współdzielonego stanowi ryzyko, które jest nieakceptowalne, utwórz usługę warstwy środkowej w celu zarządzania użytkownikami i ich dostępem do magazynu.