GCP - Logging Enum

Support HackTricks

基本信息

此服务允许用户存储、搜索、分析、监控和警报来自 GCP 的 日志数据和事件

Cloud Logging 与其他 GCP 服务完全集成,为所有 GCP 资源提供集中式日志存储库。它 自动收集来自各种 GCP 服务的日志,如 App Engine、Compute Engine 和 Cloud Functions。您还可以通过使用 Cloud Logging 代理或 API,将 Cloud Logging 用于在本地或其他云中运行的应用程序。

主要特点:

  • 日志数据集中化: 从各种来源聚合日志数据,提供对您的应用程序和基础设施的整体视图。

  • 实时日志管理: 实时流式传输日志,以便立即分析和响应。

  • 强大的数据分析: 使用高级过滤和搜索功能快速筛选大量日志数据。

  • 与 BigQuery 集成: 将日志导出到 BigQuery 进行详细分析和查询。

  • 基于日志的指标: 从您的日志数据中创建自定义指标以进行监控和警报。

日志流

基本上,接收器和基于日志的指标将决定日志应该存储在哪里。

GCP Logging 支持的配置

Cloud Logging 高度可配置,以满足多样化的操作需求:

  1. 日志桶(Web 中的日志存储): 在 Cloud Logging 中定义桶以管理 日志保留,提供对日志条目保留时间的控制。

  • 默认情况下,创建了桶 _Default_Required(一个记录的内容与另一个不同)。

  • _Required 是:

```bash
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天,无法修改。

  • 请注意,日志存储桶在Cloud Storage中不可见。

  1. 日志接收器(Web中的日志路由器): 创建接收器以将日志条目导出到各种目的地,如Pub/Sub、BigQuery或Cloud Storage,基于过滤器

  • 默认情况下,为存储桶\_Default\_Required创建接收器:

_Required logging.googleapis.com/projects//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//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策略允许主体**仅使用特定的日志视图**,例如: 

<div data-gb-custom-block data-tag="code" data-overflow='wrap'>

```json
{
"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
}

默认日志

默认情况下,Admin Write 操作(也称为 Admin Activity 审计日志)是被记录的(写入元数据或配置信息),并且无法禁用

然后,用户可以启用 Data Access 审计日志,这些包括 Admin Read、Data Write 和 Data Write

您可以在文档中找到有关每种日志类型的更多信息:https://cloud.google.com/iam/docs/audit-logging

然而,请注意,这意味着默认情况下,GetIamPolicy 操作和其他读取操作是未被记录的。因此,默认情况下,如果系统管理员没有配置生成更多日志,试图枚举环境的攻击者将不会被捕获。

要在控制台中启用更多日志,系统管理员需要访问 https://console.cloud.google.com/iam-admin/audit 并启用它们。有两种不同的选项:

  • 默认配置:可以创建一个默认配置,记录所有 Admin Read 和/或 Data Read 和/或 Data Write 日志,甚至添加豁免主体:

  • 选择服务:或者仅仅选择您希望生成日志的服务以及该特定服务的日志类型和豁免主体。

还请注意,默认情况下仅生成这些日志,因为生成更多日志会增加成本。

枚举

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

检查 cloudresourcemanager(用于暴力破解权限)的日志示例:https://console.cloud.google.com/logs/query;query=protoPayload.serviceName%3D%22cloudresourcemanager.googleapis.com%22;summaryFields=:false:32:beginning;cursorTimestamp=2024-01-20T00:07:14.482809Z;startTime=2024-01-01T11:12:26.062Z;endTime=2024-02-02T17:12:26.062Z?authuser=2&project=digital-bonfire-410512

没有 testIamPermissions 的日志:

后期利用

持久性

参考文献

支持 HackTricks

Last updated