GCP - Storage Enum
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)
Google Cloud Platform (GCP) Storage є хмарним рішенням для зберігання, яке забезпечує високу надійність та доступність об'єктного зберігання для неструктурованих даних. Він пропонує різні класи зберігання на основі продуктивності, доступності та вартості, включаючи Standard, Nearline, Coldline та Archive. GCP Storage також надає розширені функції, такі як політики життєвого циклу, версійність та контроль доступу для ефективного управління та захисту даних.
Бакет може зберігатися в регіоні, в 2 регіонах або мульти-регіонально (за замовчуванням).
Standard Storage: Це стандартний варіант зберігання, який пропонує високу продуктивність, низьку затримку доступу до часто використовуваних даних. Він підходить для широкого спектра випадків використання, включаючи обслуговування веб-контенту, потокове медіа та хостинг аналітичних даних.
Nearline Storage: Цей клас зберігання пропонує нижчі витрати на зберігання та трохи вищі витрати на доступ, ніж Standard Storage. Він оптимізований для рідко використовуваних даних, з мінімальним терміном зберігання 30 днів. Ідеально підходить для резервного копіювання та архівування.
Coldline Storage: Цей клас зберігання оптимізований для довгострокового зберігання рідко використовуваних даних, з мінімальним терміном зберігання 90 днів. Він пропонує нижчі витрати на зберігання, ніж Nearline Storage, але з вищими витратами на доступ.
Archive Storage: Цей клас зберігання призначений для холодних даних, які доступні дуже рідко, з мінімальним терміном зберігання 365 днів. Він пропонує найнижчі витрати на зберігання серед усіх варіантів зберігання GCP, але з найвищими витратами на доступ. Підходить для довгострокового зберігання даних, які потрібно зберігати з метою дотримання вимог або регуляцій.
Autoclass: Якщо ви не знаєте, як часто будете отримувати доступ до даних, ви можете вибрати Autoclass, і GCP автоматично змінить тип зберігання, щоб мінімізувати витрати.
За замовчуванням рекомендується контролювати доступ через IAM, але також можливо включити використання ACL. Якщо ви виберете використовувати лише IAM (за замовчуванням) і пройде 90 днів, ви не зможете включити ACL для бакету.
Можливо включити версійність, це зберігатиме старі версії файлу всередині бакету. Можливо налаштувати кількість версій, які ви хочете зберігати, і навіть як довго ви хочете, щоб некоректні версії (старі версії) існували. Рекомендується 7 днів для стандартного типу.
Метадані некоректної версії зберігаються. Більше того, ACL некоректних версій також зберігаються, тому старі версії можуть мати різні ACL від поточної версії.
Дізнайтеся більше в документації.
Вкажіть, як довго ви хочете заборонити видалення об'єктів всередині бакету (дуже корисно для дотримання вимог, принаймні). Лише одна з версійності або політики зберігання може бути включена одночасно.
За замовчуванням об'єкти шифруються за допомогою ключів, керованих Google, але ви також можете використовувати ключ з KMS.
Можливо надати зовнішнім користувачам (входять в GCP чи ні) доступ до вмісту бакетів. За замовчуванням, коли бакет створюється, у нього буде вимкнена опція публічного доступу до бакету, але з достатніми правами це можна змінити.
Формат URL для доступу до бакету є https://storage.googleapis.com/<bucket-name>
або https://<bucket_name>.storage.googleapis.com
(обидва є дійсними).
HMAC ключ є типом облікових даних і може бути асоційований з обліковим записом служби або обліковим записом користувача в Cloud Storage. Ви використовуєте HMAC ключ для створення підписів, які потім включаються в запити до Cloud Storage. Підписи показують, що даний запит авторизований користувачем або обліковим записом служби.
HMAC ключі мають дві основні частини: ідентифікатор доступу та секрет.
Access ID: Алфавітно-цифровий рядок, пов'язаний з конкретною службою або обліковим записом користувача. Коли він пов'язаний з обліковим записом служби, рядок має довжину 61 символ, а коли пов'язаний з обліковим записом користувача, рядок має довжину 24 символи. Наступне показує приклад ідентифікатора доступу:
GOOGTS7C7FUP3AIRVJTE2BCDKINBTES3HC2GY5CBFJDCQ2SYHV6A6XXVTJFSA
Secret: 40-символьний рядок, закодований у Base-64, який пов'язаний з конкретним ідентифікатором доступу. Секрет є попередньо поділеним ключем, який знаєте лише ви та Cloud Storage. Ви використовуєте свій секрет для створення підписів як частини процесу аутентифікації. Наступне показує приклад секрету:
bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ
Як ідентифікатор доступу, так і секрет унікально ідентифікують HMAC ключ, але секрет є набагато більш чутливою інформацією, оскільки він використовується для створення підписів.
Якщо ви отримали помилку відмови в доступі при переліку бакетів, ви все ще можете мати доступ до вмісту. Отже, тепер, коли ви знаєте про конвенцію імен бакетів, ви можете згенерувати список можливих імен і спробувати отримати до них доступ:
З правами storage.objects.list
та storage.objects.get
ви повинні мати можливість перерахувати всі папки та файли з бакету, щоб завантажити їх. Ви можете досягти цього за допомогою цього скрипта Python:
На наступній сторінці ви можете перевірити, як зловживати дозволами на зберігання для підвищення привілеїв:
GCP - Storage PrivescLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)