【问题标题】:Find Google Cloud Platform Operations Performed by a User查找用户执行的 Google Cloud Platform 操作
【发布时间】:2017-09-20 09:49:43
【问题描述】:

有没有办法跟踪用户执行了哪些 Google Cloud Platform 操作?我们希望审计我们的成本并相应地跟踪使用情况。

编辑:有一个 Cloud SDK (gcloud) 命令:

compute operations list

列出对 Compute Engine 实例执行的操作。有没有办法查看哪些用户执行了这些操作?

【问题讨论】:

  • 你能更具体地说明你所说的 gcloud 是什么意思吗?您在此处标记的 gcloud 是一个命令行工具,用于管理 Google Cloud Platform (GCP) 上的资源。
  • 我们有用户在 dataproc 上运行作业、创建计算节点等。有一个名为“计算操作列表”的 gcloud 命令行函数显示在某些节点上执行的操作列表。有没有办法查看哪些用户执行了这些操作?

标签: google-cloud-platform google-compute-engine gcloud audit-logging


【解决方案1】:

虽然您看不到已执行的gcloud 命令列表,但您可以看到 API 操作列表。 gcloud beta logging 表面帮助列出/阅读日志,但通过控制台使用起来有点困难。尝试检查cloud console 上的日志。

【讨论】:

    【解决方案2】:

    如果您只想使用 list 命令为 operations 子组跟踪 Google Cloud Project (GCP) 计算引擎 (GCE) 操作,您可以使用 --filter 标志查看由给定用户$GCE_USER_NAME:

    gcloud compute operations list \
    --filter="user=$GCE_USER_NAME" \
    --limit=1 \
    --sort-by="~endTime"
    
    #=>
    
    NAME                         TYPE   TARGET                      HTTP_STATUS  STATUS  TIMESTAMP
    $GCP_COMPUTE_OPERATION_NAME  start  $GCP_COMPUTE_INSTANCE_NAME  200          DONE    1970-01-01T00:00:00.001-00:00
    

    注意:将字符串"~endTime" 输入--sort-by 标志会将最近的GCE 操作放在首位

    可能有助于以 JSON 格式检索整个日志对象:

    gcloud compute operations list \
    --filter="user=$GCE_USER_NAME" \
    --format=json \
    --limit=1 \
    --sort-by="~endTime"
    
    #=>
    
    [
      {
        "endTime": "1970-01-01T00:00:00.001-00:00",
        . . .
        "user": "$GCP_COMPUTE_USER"
      }
    ]
    

    或 YAML:

    gcloud compute operations list \
    --filter="user=$GCE_USER_NAME" \
    --format=yaml \
    --limit=1 \
    --sort-by="~endTime"
    
    #=>
    
    ---
    endTime: '1970-01-01T00:00:00.001-00:00'
    . . .
    user: $GCP_COMPUTE_USER
    

    您还可以使用 Cloud SDK (gcloud) 来探索所有审核日志,而不仅仅是 GCE 的审核日志;正如其他现有答案指出的那样,它非常笨拙。但是,对于任何想要使用 gcloud 而不是控制台的人:

    gcloud logging read \
    'logName : "projects/$GCP_PROJECT_NAME/logs/cloudaudit.googleapis.com"
     protoPayload.authenticationInfo.principalEmail="GCE_USER_NAME"
     severity>=NOTICE' \
    --freshness="1d" \
    --limit=1 \
    --order="desc" \
    --project=$GCP_PROJECT_NAME
    
    #=>
    
    ---
    insertId: . . .
    . . .
    protoPayload:
      '@type': type.googleapis.com/google.cloud.audit.AuditLog
      authenticationInfo:
        principalEmail: $GCP_COMPUTE_USER
      . . .
    . . .
    

    read 命令默认为 YAML 格式,但您也可以获取 JSON 格式的审核日志:

    gcloud logging read \
    'logName : "projects/$GCP_PROJECT_NAME/logs/cloudaudit.googleapis.com"
     protoPayload.authenticationInfo.principalEmail="GCE_USER_NAME"
     severity>=NOTICE' \
    --format=json \
    --freshness="1d" \
    --limit=1 \
    --order="desc" \
    --project=$GCP_PROJECT_NAME
    
    #=>
    
    [
      {
        . . .
        "protoPayload": {
          "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
          "authenticationInfo": {
            "principalEmail": "$GCE_USER_NAME"
          },
          . . .
        },
        . . .
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2016-04-08
      • 2019-08-20
      • 2020-02-07
      • 1970-01-01
      • 2020-07-11
      相关资源
      最近更新 更多