Az - Storage Accounts & Blobs
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Konta magazynowe Azure to podstawowe usługi w Microsoft Azure, które zapewniają skalowalną, bezpieczną i wysoko dostępną chmurę do przechowywania różnych typów danych, w tym blobów (dużych obiektów binarnych), plików, kolejek i tabel. Służą jako kontenery, które grupują te różne usługi magazynowe pod jednym przestrzenią nazw dla łatwego zarządzania.
Główne opcje konfiguracji:
Każde konto magazynowe musi mieć unikalną nazwę w całym Azure.
Każde konto magazynowe jest wdrażane w regionie lub w rozszerzonej strefie Azure.
Można wybrać wersję premium konta magazynowego dla lepszej wydajności.
Można wybrać spośród 4 typów redundancji, aby chronić przed awariami szafek, dysków i centrów danych.
Opcje konfiguracji bezpieczeństwa:
Wymagaj bezpiecznego transferu dla operacji REST API: Wymagaj TLS w każdej komunikacji z magazynem.
Zezwalaj na włączenie dostępu anonimowego do poszczególnych kontenerów: Jeśli nie, nie będzie możliwe włączenie dostępu anonimowego w przyszłości.
Włącz dostęp do klucza konta magazynowego: Jeśli nie, dostęp za pomocą kluczy współdzielonych będzie zabroniony.
Minimalna wersja TLS.
Dozwolony zakres dla operacji kopiowania: Zezwól z dowolnego konta magazynowego, z dowolnego konta magazynowego z tego samego najemcy Entra lub z konta magazynowego z prywatnymi punktami końcowymi w tej samej sieci wirtualnej.
Opcje przechowywania blobów:
Zezwalaj na replikację między najemcami.
Poziom dostępu: Gorący (często dostępne dane), Chłodny i Zimny (rzadko dostępne dane).
Opcje sieciowe:
Dostęp do sieci:
Zezwól z wszystkich sieci.
Zezwól z wybranych sieci wirtualnych i adresów IP.
Wyłącz dostęp publiczny i użyj dostępu prywatnego.
Prywatne punkty końcowe: Umożliwia prywatne połączenie z kontem magazynowym z sieci wirtualnej.
Opcje ochrony danych:
Przywracanie w punkcie w czasie dla kontenerów: Umożliwia przywrócenie kontenerów do wcześniejszego stanu.
Wymaga włączenia wersjonowania, zmiany feedu i miękkiego usuwania blobów.
Włącz miękkie usuwanie dla blobów: Umożliwia okres przechowywania w dniach dla usuniętych blobów (nawet nadpisanych).
Włącz miękkie usuwanie dla kontenerów: Umożliwia okres przechowywania w dniach dla usuniętych kontenerów.
Włącz miękkie usuwanie dla udostępnionych plików: Umożliwia okres przechowywania w dniach dla usuniętych udostępnionych plików.
Włącz wersjonowanie dla blobów: Utrzymuj poprzednie wersje swoich blobów.
Włącz feed zmian blobów: Zachowuj logi tworzenia, modyfikacji i usuwania zmian w blobach.
Włącz wsparcie dla niezmienności na poziomie wersji: Umożliwia ustawienie polityki przechowywania opartej na czasie na poziomie konta, która będzie miała zastosowanie do wszystkich wersji blobów.
Wsparcie dla niezmienności na poziomie wersji i przywracanie w punkcie w czasie dla kontenerów nie mogą być włączone jednocześnie.
Opcje konfiguracji szyfrowania:
Typ szyfrowania: Można używać kluczy zarządzanych przez Microsoft (MMK) lub kluczy zarządzanych przez klienta (CMK).
Włącz szyfrowanie infrastruktury: Umożliwia podwójne szyfrowanie danych "dla większego bezpieczeństwa".
Magazyn blobów |
|
Magazyn Data Lake |
|
Azure Files |
|
Magazyn kolejek |
|
Magazyn tabel |
|
Jeśli "Zezwalaj na publiczny dostęp do blobów" jest włączone (domyślnie wyłączone), podczas tworzenia kontenera można:
Umożliwić publiczny dostęp do odczytu blobów (musisz znać nazwę).
Wylistować bloby kontenera i odczytać je.
Uczynić go całkowicie prywatnym.
Jeśli znajdziesz jakikolwiek magazyn, z którym możesz się połączyć, możesz użyć narzędzia Microsoft Azure Storage Explorer, aby to zrobić.
Można używać zasad Entra ID z rolami RBAC do uzyskania dostępu do kont magazynowych i jest to zalecany sposób.
Konta magazynowe mają klucze dostępu, które można wykorzystać do uzyskania dostępu. To zapewnia pełny dostęp do konta magazynowego.
Można generować klucze współdzielone podpisane kluczami dostępu, aby autoryzować dostęp do określonych zasobów za pomocą podpisanego URL.
Zauważ, że część CanonicalizedResource
reprezentuje zasób usługi magazynowej (URI). A jeśli jakakolwiek część w URL jest zakodowana, powinna być również zakodowana w CanonicalizedResource
.
To jest domyślnie używane przez az
cli do uwierzytelniania żądań. Aby użyć poświadczeń głównych Entra ID, wskaż parametr --auth-mode login
.
Można wygenerować klucz współdzielony dla usług blobów, kolejek i plików, podpisując następujące informacje:
Możliwe jest wygenerowanie klucza współdzielonego dla usług tabel podpisując następujące informacje:
Możliwe jest wygenerowanie lite shared key dla usług blob, queue i file, podpisując następujące informacje:
Możliwe jest wygenerowanie lite shared key dla usług tabelowych podpisując następujące informacje:
Następnie, aby użyć klucza, można to zrobić w nagłówku Authorization, stosując następującą składnię:
Shared Access Signatures (SAS) to bezpieczne, ograniczone czasowo adresy URL, które przyznają określone uprawnienia do dostępu do zasobów w koncie Azure Storage bez ujawniania kluczy dostępu do konta. Podczas gdy klucze dostępu zapewniają pełny dostęp administracyjny do wszystkich zasobów, SAS pozwala na szczegółową kontrolę poprzez określenie uprawnień (takich jak odczyt lub zapis) i zdefiniowanie czasu wygaśnięcia.
User delegation SAS: Jest tworzony z Entra ID principal, który podpisuje SAS i deleguje uprawnienia od użytkownika do SAS. Może być używany tylko z blob i data lake storage (docs). Możliwe jest cofnięcie wszystkich wygenerowanych SAS delegowanych przez użytkownika.
Nawet jeśli możliwe jest wygenerowanie SAS delegacji z "większymi" uprawnieniami niż te, które ma użytkownik. Jednak jeśli principal ich nie ma, nie zadziała (brak privesc).
Service SAS: Jest podpisywany za pomocą jednego z kluczy dostępu do konta storage. Może być używany do przyznawania dostępu do określonych zasobów w pojedynczej usłudze storage. Jeśli klucz zostanie odnowiony, SAS przestanie działać.
Account SAS: Jest również podpisywany jednym z kluczy dostępu do konta storage. Przyznaje dostęp do zasobów w usługach konta storage (Blob, Queue, Table, File) i może obejmować operacje na poziomie usługi.
Adres URL SAS podpisany przez klucz dostępu wygląda tak:
https://<container_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D
Adres URL SAS podpisany jako user delegation wygląda tak:
https://<container_name>.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D
Zauważ niektóre parametry http:
Parametr se
wskazuje na datę wygaśnięcia SAS
Parametr sp
wskazuje na uprawnienia SAS
sig
to podpis weryfikujący SAS
Podczas generowania SAS należy wskazać uprawnienia, które powinny być przyznawane. W zależności od obiektu, na którym generowany jest SAS, mogą być uwzględnione różne uprawnienia. Na przykład:
(a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)