GCP - Logging Enum
Reading time: 5 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Основна інформація
Ця служба дозволяє користувачам зберігати, шукати, аналізувати, моніторити та отримувати сповіщення про дані та події журналів з GCP.
Cloud Logging повністю інтегрований з іншими службами GCP, надаючи централізований репозиторій для журналів з усіх ваших ресурсів GCP. Він автоматично збирає журнали з різних служб GCP таких як App Engine, Compute Engine та Cloud Functions. Ви також можете використовувати Cloud Logging для додатків, що працюють на місці або в інших хмарах, використовуючи агент Cloud Logging або API.
Ключові особливості:
- Централізація даних журналів: Агрегуйте дані журналів з різних джерел, пропонуючи цілісний погляд на ваші додатки та інфраструктуру.
- Управління журналами в реальному часі: Потокове передавання журналів в реальному часі для негайного аналізу та реагування.
- Потужний аналіз даних: Використовуйте розширені можливості фільтрації та пошуку, щоб швидко переглядати великі обсяги даних журналів.
- Інтеграція з BigQuery: Експортуйте журнали в BigQuery для детального аналізу та запитів.
- Метрики на основі журналів: Створюйте користувацькі метрики з ваших даних журналів для моніторингу та сповіщення.
Потік журналів
 (1) (1).png)
https://betterstack.com/community/guides/logging/gcp-logging/
В основному, зливи та метрики на основі журналів визначать, де слід зберігати журнал.
Конфігурації, підтримувані GCP Logging
Cloud Logging має високу конфігурованість, щоб відповідати різноманітним операційним потребам:
- Журнальні контейнери (зберігання журналів в мережі): Визначте контейнери в Cloud Logging для управління зберіганням журналів, надаючи контроль над тим, як довго зберігаються ваші записи журналів.
- За замовчуванням створюються контейнери
_Default
та_Required
(один веде облік того, що інший не веде). - _Required це:
```
LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency")
```
```
- **Період зберігання** даних налаштовується для кожного бакета і повинен бути **не менше 1 дня.** Однак **період зберігання \_Required становить 400 днів** і не може бути змінений.
- Зверніть увагу, що Log Buckets **не видимі в Cloud Storage.**
2. **Log Sinks (Log router в вебі):** Створіть сінки для **експорту записів журналу** до різних місць призначення, таких як Pub/Sub, BigQuery або Cloud Storage на основі **фільтра**.
- За **замовчуванням** сінки для бакетів `_Default` і `_Required` створюються:
- ```bash
_Required logging.googleapis.com/projects/<proj-name>/locations/global/buckets/_Required LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency")
_Default logging.googleapis.com/projects/<proj-name>/locations/global/buckets/_Default NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
```
- **Фільтри виключення:** Можна налаштувати **виключення для запобігання надходженню конкретних записів журналу**, що дозволяє заощаджувати кошти та зменшувати зайвий шум.
3. **Метрики на основі журналів:** Налаштуйте **кастомні метрики** на основі вмісту журналів, що дозволяє здійснювати сповіщення та моніторинг на основі даних журналу.
4. **Перегляди журналів:** Перегляди журналів надають розширений та **досконалий контроль над тим, хто має доступ** до журналів у ваших бакетах журналів.
- Cloud Logging **автоматично створює перегляд `_AllLogs` для кожного бакета**, який показує всі журнали. Cloud Logging також створює перегляд для бакета `_Default`, названий `_Default`. Перегляд `_Default` для бакета `_Default` показує всі журнали, за винятком журналів аудиту доступу до даних. Перегляди `_AllLogs` та `_Default` не підлягають редагуванню.
Можна дозволити принципалу **використовувати лише конкретний перегляд журналу** з політикою IAM, як:
```
{
"bindings": [
{
"members": ["user:username@gmail.com"],
"role": "roles/logging.viewAccessor",
"condition": {
"title": "Bucket reader condition example",
"description": "Grants logging.viewAccessor role to user username@gmail.com for the VIEW_ID log view.",
"expression": "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\""
}
}
],
"etag": "BwWd_6eERR4=",
"version": 3
}
```
### Default Logs
За замовчуванням **Admin Write** операції (також називаються журналами аудиту активності адміністратора) є тими, що реєструються (запис метаданих або інформації про конфігурацію) і **не можуть бути вимкнені**.
Потім користувач може увімкнути **журнали аудиту доступу до даних**, це **Admin Read, Data Write і Data Write**.
Ви можете знайти більше інформації про кожен тип журналу в документації: [https://cloud.google.com/iam/docs/audit-logging](https://cloud.google.com/iam/docs/audit-logging)
Однак зверніть увагу, що це означає, що за замовчуванням **`GetIamPolicy`** дії та інші дії читання **не реєструються**. Тому, за замовчуванням, зловмисник, який намагається перерахувати середовище, не буде спійманий, якщо системний адміністратор не налаштував генерацію більше журналів.
Щоб увімкнути більше журналів у консолі, системний адміністратор повинен перейти до [https://console.cloud.google.com/iam-admin/audit](https://console.cloud.google.com/iam-admin/audit) і увімкнути їх. Є 2 різні варіанти:
- **Default Configuration**: Можна створити конфігурацію за замовчуванням і реєструвати всі журнали Admin Read і/або Data Read і/або Data Write, а також додати звільнені принципали:
<figure><img src="../../../images/image (338).png" alt=""><figcaption></figcaption></figure>
- **Select the services**: Або просто **вибрати сервіси**, для яких ви хочете генерувати журнали, тип журналів і звільнений принципал для цього конкретного сервісу.
Також зверніть увагу, що за замовчуванням генеруються лише ці журнали, оскільки генерація більше журналів збільшить витрати.
### Enumeration
Командний рядок `gcloud` є невід'ємною частиною екосистеми GCP, що дозволяє вам керувати вашими ресурсами та сервісами. Ось як ви можете використовувати `gcloud` для управління вашими конфігураціями журналювання та доступом до журналів.
```
# List buckets
gcloud logging buckets list
gcloud logging buckets describe <bucket-name> --location <location>
# List log entries: only logs that contain log entries are listed.
gcloud logging logs list
# Get log metrics
gcloud logging metrics list
gcloud logging metrics describe <metric-name>
# Get log sinks
gcloud logging sinks list
gcloud logging sinks describe <sink-name>
# Get log views
gcloud logging views list --bucket <bucket> --location global
gcloud logging views describe --bucket <bucket> --location global <view-id> # view-id is usually the same as the bucket name
# Get log links
gcloud logging links list --bucket _Default --location global
gcloud logging links describe <link-id> --bucket _Default --location global