使用标记管理日志存储桶

本文档介绍了如何使用标记管理 Cloud Logging 日志存储桶。通过在组织级或项目级创建的标记,您可以为资源添加注解。您还可以根据资源是否具有特定标记,有条件地授予 Identity and Access Management (IAM) 角色有条件地拒绝 IAM 权限。如需了解标记,请参阅标记概览

例如,如果您使用 BigQuery 分析 Cloud Billing 数据,则可以将 project:production 标记附加到存储来自生产资源的日志数据的日志存储桶,并将 project:development 标记附加到存储来自开发资源的日志数据的日志存储桶。然后,您可以查询带有标记的 Cloud Billing 数据,并查看开发和生产环境的费用明细。

标记可以明确附加到日志存储桶,也可以从其父级组织、文件夹和项目继承。

准备工作

如需开始使用标记管理日志存储桶,请执行以下操作:

  1. 确保您已创建标记并配置其值。您可使用 Resource Manager 管理标记定义。如需了解如何创建和管理标记,请参阅创建和管理标记
  2. 如需获得使用标记管理日志存储桶所需的权限,请让您的管理员为您授予项目或组织的以下 IAM 角色:

    如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    这些预定义角色包含使用标记管理日志存储桶所需的权限。如需查看所需的确切权限,请展开所需权限部分:

    所需权限

    您需要具备以下权限才能使用标记管理日志存储桶:

    • 对日志存储桶添加或移除标记:
      • resourcemanager.tagValues.{get,list}
      • resourcemanager.tagKeys.{get,list}
      • resourcemanager.projects.get
      • logging.buckets.createTagbinding
      • logging.buckets.deleteTagBinding
    • 查看附加到日志存储桶的标记:
      • resourcemanager.tagValues.{get,list}
      • resourcemanager.tagKeys.{get,list}
      • logging.buckets.listTagBindings
      • logging.buckets.listEffectiveTags

    您也可以使用自定义角色或其他预定义角色来获取这些权限。

  3. 如需获得管理日志存储桶所需的权限,请让您的管理员为您授予项目的 Logs Configuration Writer (roles/logging.configWriter) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    此预定义角色包含管理日志存储桶所需的 logging.buckets.list 权限。

    您也可以使用自定义角色或其他预定义角色来获取此权限。

将标记附加到日志存储桶

如需将标记附加到日志存储桶,请执行以下操作:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往日志存储页面:

    前往日志存储

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 找到要为其附加标记的日志存储桶。

  3. 对日志存储桶点击更多,然后点击修改标记

  4. 在对话框的直接标记部分中,选择在其中创建标记的资源以找到标记。例如,如需使用在项目级创建的标记,请选择选择当前项目作为范围。

    您还可以选择手动输入选项,以便手动搜索项目、组织或标记 ID。

  5. 选择相应的键值对,然后点击保存

  6. 系统会显示一个对话框,以确认您的更改。点击确认以最终完成更改。

gcloud

如需将标记附加到日志存储桶,请通过运行 gcloud resource-manager tags bindings create 命令来创建标记绑定:

gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_ID \
--parent=BUCKET_NAME \
--location=LOCATION

在上一个命令中,进行以下替换:

  • TAG_VALUE_ID:标记值的永久 ID 或命名空间名称。例如 tagValues/4567890123。如需详细了解标记标识符,请参阅标记定义和标识符

  • BUCKET_NAME:日志存储桶的名称。例如 //logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

  • LOCATION:日志存储桶的位置。

API

如需将标记附加到日志存储桶,请使用 tagBindings.create 方法。

查看附加到日志存储桶的标记

如需查看附加到日志存储桶的标记,请执行以下操作:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往日志存储页面:

    前往日志存储

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 找到您要查看其标记的日志存储桶。

    标记列中,列出了与日志存储桶关联的标记。如需查看与日志存储桶关联的所有标记,请点击 更多按钮以展开标记列表。

gcloud

运行 gcloud resource-manager tags bindings list 命令:

gcloud resource-manager tags bindings list \
--parent=BUCKET_NAME \
--location=LOCATION

在上一个命令中,进行以下替换:

  • BUCKET_NAME:日志存储桶的名称。例如 //logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

  • LOCATION:日志存储桶的位置。

可选:如需查看日志存储桶继承的标记,请添加 --effective 标志。添加此标志会返回类似于以下内容的响应:

namespacedTagKey: 961309089256/environment
namespacedTagValue: 961309089256/environment/production
tagKey: tagKeys/417628178507
tagValue: tagValues/247197504380
inherited: true

如果所有标记都明确附加到日志存储桶,没有继承任何标记,则 inherited 字段为 false 且会被省略。

API

如需获取存储桶的标记绑定列表,请使用 tagBindings.list 方法。

移除日志存储桶上的标记

如需移除附加到日志存储桶的标记,您必须删除附加到日志存储桶的标记绑定。如需删除标记,您必须从所有附加的资源中移除标记。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往日志存储页面:

    前往日志存储

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 找到您要移除其标记的日志存储桶。

  3. 对日志存储桶点击更多,然后点击修改标记

  4. 在对话框中,将指针悬停在要移除的标记上,然后点击 删除项。点击保存以保存更改。

  5. 系统会显示一个对话框,以确认您的更改。点击确认以最终完成更改。

gcloud

运行 gcloud resource-manager tags bindings delete 命令:

gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_ID \
--parent=BUCKET_NAME \
--location=LOCATION

在上一个命令中,进行以下替换:

  • TAG_VALUE_ID:标记值的永久 ID 或命名空间名称。例如 tagValues/4567890123。如需详细了解标记标识符,请参阅标记定义和标识符

  • BUCKET_NAME:日志存储桶的名称。例如 //logging.googleapis.com/projects/BUCKET_PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

  • LOCATION:日志存储桶的位置。

API

如需移除日志存储桶上的标记,请使用 tagBindings.delete 方法。

限制

  • 您无法使用 IAM 角色授予来控制主账号在列出 Google Cloud 项目中的日志存储桶时所看到的日志存储桶。主账号会看到完整列表或空列表。不过,您可以将 IAM 角色授予与 IAM 条件搭配使用来限制主账号可以对日志存储桶执行的操作。例如,您可以限制主账号是否可以删除特定日志存储桶。

  • 如果您将 Cloud Billing 数据导出与 BigQuery 搭配使用,则标记可能需要长达一小时才能在导出中使用。如果标记是在一个小时内添加或移除的,或者日志存储桶存在的时间不超过一个小时,则该标记可能不会出现在导出结果中。

自定义角色和包含 IAM 条件的角色授予

如果您计划使用自定义 IAM 角色,并且计划将 IAM 条件附加到角色授予,则可能需要创建多个自定义角色。将 IAM 条件附加到角色授予时,某些 IAM 权限会失效。

对于 Cloud Logging,如果角色授予包含 IAM 条件,则以下 IAM 权限会失效:

  • logging.buckets.list
  • logging.buckets.create

因此,您可能需要创建一个包含 listcreate 权限的角色,以及另一个包含其他特定于存储桶的权限的角色。例如,您可以创建一个包含 logging.buckets.deletelogging.buckets.update 权限的角色。

授予包含 listcreate 权限的角色时,请勿将 IAM 条件附加到角色授予。授予包含 deleteupdate 权限的角色时,您可以添加 IAM 条件,以将授予限制为具有特定标记的资源。

后续步骤