使用标签管理日志存储分区

本文档介绍了如何使用标签来管理 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. 找到您要查看其标记的日志存储桶。

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

gcloud

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

gcloud resource-manager tags bindings list \
--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:日志存储桶的位置。

可选:如需查看日志存储桶继承的标记,请添加 --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 搭配使用,则标记可能需要最多 1 小时才能在导出内容中使用。如果标记是在一个小时内添加或移除的,或者日志存储桶存在的时间不超过一个小时,则这些被添加或移除的标记可能不会反映在导出结果中。

包含 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 条件,将授予权限的范围限制为具有特定标记的资源。

后续步骤