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 SAS i podpisany przy użyciu klucza, który został użyty do utworzenia SAS. Ten podpis jest używany przez usługę Azure Storage do autoryzowania dostępu do zasobu pamięci.
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 na poziomie użytkownika ma zastosowanie tylko do Blob Storage i Data Lake 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 Azure Storage: blob storage, queue storage, table storage lub Azure Files.
Sygnatura dostępu współdzielonego konta: Sygnatura dostępu współdzielonego konta jest zabezpieczona kluczem konta magazynu. Sygnatura dostępu współdzielonego konta (SAS) deleguje dostęp do zasobów w jednej lub więcej usługach magazynowych. Wszystkie operacje dostępne za pośrednictwem sygnatury dostępu współdzielonego konta są również dostępne za pośrednictwem sygnatury dostępu współdzielonego delegowania użytkownika lub usługi.
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ę delegowania użytkownika dla dostępu współdzielonego, jeśli jest to możliwe dla lepszych zabezpieczeń
Jak działają sygnatury dostępu współdzielonego
Jeśli używasz sygnatury dostępu współdzielonego do uzyskiwania dostępu do danych przechowywanych w usłudze Azure Storage, 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 do dodawania, c do tworzenia, d do usuwania, l do listy, r do odczytu lub w do 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 przechowywania 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 podpisu dostępu współdzielonego, firma Microsoft oferuje pewne wskazówki:
- Aby bezpiecznie rozpowszechniać SAS i zapobiegać atakom typu man-in-the-middle, zawsze używaj protokołu HTTPS.
- Najbezpieczniejszym SAS-em jest delegacja użytkownika. Używaj tego wszędzie tam, gdzie to możliwe, ponieważ eliminuje potrzebę przechowywania klucza konta magazynowego 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ć czas wygaśnięcia na najmniejszą użyteczną wartość. Jeśli klucz SAS zostanie naruszony, będzie można go 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 SAS nie jest właściwym rozwiązaniem. Jeśli użycie sygnatury dostępu współdzielonego stanowi nieakceptowalne ryzyko, utwórz usługę pośrednią w celu zarządzania użytkownikami i ich dostępem do magazynowania.