Az - Storage Accounts & Blobs
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Azure Storage Accounts є основними сервісами в Microsoft Azure, які надають масштабоване, безпечне та високо доступне хмарне сховище для різних типів даних, включаючи блоби (бінарні великі об'єкти), файли, черги та таблиці. Вони слугують контейнерами, які групують ці різні сервіси зберігання під єдиним простором імен для зручного управління.
Основні параметри конфігурації:
Кожен обліковий запис зберігання повинен мати унікальне ім'я серед усіх Azure.
Кожен обліковий запис зберігання розгортається в регіоні або в розширеній зоні Azure.
Можна вибрати преміум версію облікового запису зберігання для кращої продуктивності.
Можна вибрати серед 4 типів надмірності для захисту від відмов в стійках, дисках та дата-центрах.
Параметри конфігурації безпеки:
Вимагати безпечну передачу для операцій REST API: Вимагати TLS у будь-якому спілкуванні зі сховищем.
Дозволяє увімкнути анонімний доступ до окремих контейнерів: Якщо ні, у майбутньому не буде можливості увімкнути анонімний доступ.
Увімкнути доступ за ключем облікового запису зберігання: Якщо ні, доступ з використанням спільних ключів буде заборонено.
Мінімальна версія TLS.
Дозволений обсяг для операцій копіювання: Дозволити з будь-якого облікового запису зберігання, з будь-якого облікового запису зберігання з того ж орендаря Entra або з облікового запису зберігання з приватними кінцевими точками в тій же віртуальній мережі.
Параметри Blob Storage:
Дозволити крос-орендарну реплікацію.
Рівень доступу: Гарячий (часто доступні дані), Холодний та Льодовий (рідко доступні дані).
Параметри мережі:
Доступ до мережі:
Дозволити з усіх мереж.
Дозволити з вибраних віртуальних мереж та IP-адрес.
Вимкнути публічний доступ і використовувати приватний доступ.
Приватні кінцеві точки: Дозволяє приватне з'єднання з обліковим записом зберігання з віртуальної мережі.
Параметри захисту даних:
Відновлення на момент часу для контейнерів: Дозволяє відновити контейнери до попереднього стану.
Це вимагає увімкнення версійності, зміни потоку та м'якого видалення блобів.
Увімкнути м'яке видалення для блобів: Це дозволяє період утримання в днях для видалених блобів (навіть перезаписаних).
Увімкнути м'яке видалення для контейнерів: Це дозволяє період утримання в днях для видалених контейнерів.
Увімкнути м'яке видалення для файлових спільнот: Це дозволяє період утримання в днях для видалених спільнот файлів.
Увімкнути версійність для блобів: Зберігайте попередні версії ваших блобів.
Увімкнути зміни блобів: Зберігайте журнали створення, модифікації та видалення змін до блобів.
Увімкнути підтримку незмінності на рівні версії: Дозволяє встановити політику утримання на основі часу на рівні облікового запису, яка буде застосовуватися до всіх версій блобів.
Підтримка незмінності на рівні версії та відновлення на момент часу для контейнерів не можуть бути увімкнені одночасно.
Параметри конфігурації шифрування:
Тип шифрування: Можна використовувати ключі, керовані Microsoft (MMK), або ключі, керовані клієнтом (CMK).
Увімкнути шифрування інфраструктури: Дозволяє подвоїти шифрування даних "для більшої безпеки".
Якщо "Дозволити публічний доступ до блобів" увімкнено (за замовчуванням вимкнено), при створенні контейнера можна:
Надати публічний доступ для читання блобів (необхідно знати ім'я).
Переглядати блоби контейнера та читати їх.
Зробити його повністю приватним.
Якщо ви знайдете будь-яке сховище, до якого можете підключитися, ви можете використовувати інструмент Microsoft Azure Storage Explorer для цього.
Можна використовувати принципи Entra ID з ролями RBAC для доступу до облікових записів зберігання, і це рекомендований спосіб.
Облікові записи зберігання мають ключі доступу, які можна використовувати для доступу до них. Це забезпечує повний доступ до облікового запису зберігання.
Можна згенерувати спільні ключі, підписані ключами доступу, для авторизації доступу до певних ресурсів через підписане URL.
Зверніть увагу, що частина CanonicalizedResource
представляє ресурс сервісів зберігання (URI). І якщо будь-яка частина в URL закодована, вона також повинна бути закодована всередині CanonicalizedResource
.
Це використовується за замовчуванням az
cli для аутентифікації запитів. Щоб використовувати облікові дані принципу Entra ID, вкажіть параметр --auth-mode login
.
Можна згенерувати спільний ключ для блобів, черг та файлових сервісів, підписавши таку інформацію:
Можливо згенерувати спільний ключ для сервісів таблиць, підписавши таку інформацію:
Можливо згенерувати легкий спільний ключ для сервісів blob, queue та file, підписавши таку інформацію:
Можливо згенерувати легкий спільний ключ для сервісів таблиць, підписавши таку інформацію:
Тоді, щоб використовувати ключ, це можна зробити в заголовку Authorization, дотримуючись синтаксису:
Shared Access Signatures (SAS) - це безпечні, обмежені за часом URL-адреси, які надають конкретні дозволи для доступу до ресурсів в обліковому записі Azure Storage без розкриття ключів доступу облікового запису. Хоча ключі доступу надають повний адміністративний доступ до всіх ресурсів, SAS дозволяє здійснювати детальний контроль, вказуючи дозволи (наприклад, читання або запис) і визначаючи час закінчення терміну дії.
User delegation SAS: Це створюється з Entra ID principal, який підпише SAS і делегує дозволи від користувача до SAS. Його можна використовувати лише з blob і data lake storage (docs). Можливо анулювати всі згенеровані SAS для делегованих користувачів.
Навіть якщо можливо згенерувати делегований SAS з "більшими" дозволами, ніж ті, що має користувач. Однак, якщо у principal їх немає, це не спрацює (без підвищення привілеїв).
Service SAS: Це підписується за допомогою одного з ключів доступу облікового запису. Його можна використовувати для надання доступу до конкретних ресурсів в одному сервісі зберігання. Якщо ключ буде оновлено, SAS перестане працювати.
Account SAS: Він також підписується одним з ключів доступу облікового запису. Він надає доступ до ресурсів через сервіси облікового запису зберігання (Blob, Queue, Table, File) і може включати операції на рівні сервісу.
URL-адреса SAS, підписана ключем доступу, виглядає так:
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
URL-адреса SAS, підписана як user delegation, виглядає так:
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
Зверніть увагу на деякі http params:
Параметр se
вказує на дату закінчення терміну дії SAS
Параметр sp
вказує на дозволи SAS
sig
- це підпис, що підтверджує SAS
При генерації SAS потрібно вказати дозволи, які він повинен надавати. В залежності від об'єкта, над яким генерується SAS, можуть бути включені різні дозволи. Наприклад:
(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
Вивчайте та практикуйте Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Blob storage
https://<storage-account>.blob.core.windows.net
https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list
Data Lake Storage
https://<storage-account>.dfs.core.windows.net
Azure Files
https://<storage-account>.file.core.windows.net
Queue storage
https://<storage-account>.queue.core.windows.net
Table storage
https://<storage-account>.table.core.windows.net