代码库

使用标记对 Google Cloud 中的代码库和其他资源进行分组,以便在 Google Cloud 组织内进行报告、审核和访问权限控制。

如需出于自动化和结算目的对 Artifact Registry 中的代码库进行分组,请使用标签。标记和标签彼此独立工作,您可以将它们应用于同一个仓库。如需详细了解标记和标签之间的差异,请参阅标记和标签

什么是标记?

标记是可应用于资源以实现精细访问权限控制的键值对。

项目管理员可在组织级层为 Google Cloud 中的资源创建标记,并在 Resource Manager 中管理这些标记。将标记附加到 Artifact Registry 代码库时,可以使用带有 IAM 条件的标记来有条件地授予对代码库的访问权限。您无法将标记附加到单个工件。

请注意以下限制:

  • 组织政策可以有条件地引用从父项目和更高层级继承的标记,但这些政策不支持您直接附加到代码库的标记。

  • 在代码库上附加标记和查看标记绑定时,不会生成 Cloud Audit Logs

如需详细了解标记和标记的条件访问权限控制,请参阅标记和访问权限控制

所需权限

您需要的权限取决于您需要执行的操作。

如需获得这些权限,请让您的管理员在资源层次结构的适当级层授予建议的角色。

查看标记

如需查看标记定义和附加到资源的标记,您需要 Tag Viewer 角色 (roles/resourcemanager.tagViewer) 或包含以下权限的其他角色:

所需权限

  • resourcemanager.tagKeys.get
  • resourcemanager.tagKeys.list
  • resourcemanager.tagValues.list
  • resourcemanager.tagValues.get
  • 相应资源类型的 listTagBindings。例如,用于查看附加到 Compute Engine 实例的标记的 compute.instances.listTagBindings
  • listEffectiveTags
  • 相应的资源类型。例如,compute.instances.listEffectiveTags 用于查看附加到 Compute Engine 实例或由 Compute Engine 实例继承的所有标记。

如需查看组织级层的标记,您需要具有组织资源的 Organization Viewer 角色 (roles/resourcemanager.organizationViewer)。

管理标记

如需创建、更新和删除标记定义,您需要拥有 Tag Administrator 角色 (roles/resourcemanager.tagAdmin) 或具备以下权限的其他角色:

所需权限

  • resourcemanager.tagKeys.create
  • resourcemanager.tagKeys.update
  • resourcemanager.tagKeys.delete
  • resourcemanager.tagKeys.list
  • resourcemanager.tagKeys.get
  • resourcemanager.tagKeys.getIamPolicy
  • resourcemanager.tagKeys.setIamPolicy
  • resourcemanager.tagValues.create
  • resourcemanager.tagValues.update
  • resourcemanager.tagValues.delete
  • resourcemanager.tagValues.list
  • resourcemanager.tagValues.get
  • resourcemanager.tagValues.getIamPolicy
  • resourcemanager.tagValues.setIamPolicy

如需管理组织级层标记,您需要具有组织资源的 Organization Viewer 角色 (roles/resourcemanager.organizationViewer)。

管理资源上的标记

如需添加和移除附加至资源的标记,您需要对标记值以及您要附加标记值的资源都具有 Tag User 角色 (roles/resourcemanager.tagUser) 或具有同等权限的其他角色。Tag User 角色包含以下权限:

所需权限

  • 您要将标记值附加到的资源所需的权限
    • 特定于资源的 createTagBinding 权限,例如 Compute Engine 实例的 compute.instances.createTagBinding
    • 特定于资源的 deleteTagBinding 权限,例如 Compute Engine 实例的 compute.instances.deleteTagBinding
  • 标记值所需的权限:
    • resourcemanager.tagValueBindings.create
    • resourcemanager.tagValueBindings.delete
  • 可让您查看项目和标记定义的权限:
    • resourcemanager.tagValues.get
    • resourcemanager.tagValues.list
    • resourcemanager.tagKeys.get
    • resourcemanager.tagKeys.list
    • resourcemanager.projects.get

将标记附加到代码库

在项目管理员创建标记后,您可以将标记附加到代码库。每个标记都有一个键和一个值。您可以通过将值绑定到代码库来标记代码库。

如需将标记附加到代码库,请执行以下操作:

控制台

  1. 从管理员处获取要附加的标记值。

    您可以使用以下任一标识符类型附加标记值:

    • 命名空间型名称,例如 123456789012/env/dev
    • 永久 ID,例如 tagValues/567890123456
  2. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  3. 选择要标记的代码库。

  4. 代码库详细信息部分中,点击展开

    系统会显示该代码库的现有标记,包括继承的标记。

  5. 点击 修改 修改标签图标。

  6. 直接代码部分中,点击选择范围

  7. 选择您的代码库项目。

  8. key 字段中,输入以过滤标记列表,然后选择标记键。

  9. 字段中,输入以过滤标记列表,然后选择标记值。

  10. 点击保存

  11. 点击确认

    该代码会附加到您的代码库。

gcloud CLI

  1. 从管理员处获取要附加的标记值。

    您可以使用以下任一标识符类型附加标记值:

    • 命名空间型名称,例如 123456789012/env/dev
    • 永久 ID,例如 tagValues/567890123456
  2. 使用以下命令附加标记值:

    gcloud alpha resource-manager tags bindings create \
        --tag-value=TAG_VALUE \
        --parent=REPOSITORY_ID \
        --location=LOCATION
    

    替换以下值:

    • TAG_VALUE 是要附加的标记值的永久 ID 或命名空间型名称。

    • REPOSITORY_ID 是代码库的完整 ID,包括用于标识资源类型 (//artifactregistry.googleapis.com/) 的 API 域名。例如 //artifactregistry.googleapis.com/projects/my-project/locations/us-east1/repositories/my-repo

    • LOCATION 是代码库的位置

    请思考以下示例:

    • 标记值:815471563813/env/dev
    • 项目:my-project
    • 代码库:my-repo
    • 代码库位置:us-east1

    以下 gcloud CLI 命令会将该标记附加到代码库:

    gcloud alpha resource-manager tags bindings create \
        --tag-value=815471563813/env/dev \
        --parent=//artifactregistry.googleapis.com/projects/my-project/locations/us-east1/repositories/my-repo \
        --location=us-east1
    

列出附加到代码库的标记

您可以列出附加到您有权访问的资源的标记。

控制台

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  2. 选择要查看的代码库。

  3. 代码库详细信息部分中,点击展开

    标记列表显示所有代码库标记,包括直接标记以及从资源层次结构中更高层级继承的标记。

gcloud CLI

如需列出附加到代码库的标记,请运行以下命令:

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

该命令仅列出直接附加到指定资源的标记,因此不会返回从父项目或更高版本继承的标记。如需列出从父项目继承的标记,您可以使用 --parent 标志指定项目(而不是代码库)。

例如,以下命令列出了附加到项目 my-project 中的代码库 my-repo 和位置 us-east1 的标记:

gcloud alpha resource-manager tags bindings list \
    --parent=//artifactregistry.googleapis.com/projects/my-project/locations/us-east1/repositories/my-repo \
    --location=us-east1

此命令会列出附加到项目编号 7890123456 的标记:

gcloud alpha resource-manager tags bindings list \
    --parent=//cloudresourcemanager.googleapis.com/projects/7890123456 \

将标记与代码库分离

您可以分离直接附加到代码库的标记。如果需要移除从父项目或资源层次结构的其他部分继承的标记,项目管理员必须将其与附加该标记的资源分离

如需移除附加到代码库的标记,请执行以下操作:

控制台

  1. 获取要移除的标记值。如果您不知道此标记值,请 list 附加到代码库的标记。

  2. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  3. 选择代码库。

  4. 代码库详细信息部分中,点击展开

    系统会显示该代码库的现有标记,包括继承的标记。

  5. 点击 修改 修改标签图标。

  6. 直接代码部分,找到要移除的代码。

  7. 点击要移除的代码旁边的 删除图标。

  8. 点击保存

  9. 点击确认

    该标记将从您的代码库中移除。

gcloud CLI

  1. 获取要移除的标记值。如果您不知道此标记值,请 list 附加到代码库的标记。

  2. 使用以下命令分离标记值:

    gcloud alpha resource-manager tags bindings delete \
        --tag-value=TAG_VALUE \
        --parent=REPOSITORY_ID \
        --location=LOCATION
    

    替换以下值:

    • 要分离的 TAG_VALUE 标记值。

    • REPOSITORY_ID 是代码库的完整 ID,包括用于标识资源类型 (//artifactregistry.googleapis.com/) 的 API 域名。例如 //artifactregistry.googleapis.com/projects/my-project/my-repo

    • LOCATION 是代码库的位置

    请思考以下示例:

    • 标记值:815471563813/env/dev
    • 项目:my-project
    • 代码库:my-repo
    • 代码库位置:us-east1

    以下 gcloud CLI 命令会将该标记与代码库分离:

    gcloud alpha resource-manager tags bindings delete \
        --tag-value=815471563813/env/dev \
        --parent=//artifactregistry.googleapis.com/projects/my-project/locations/us-east1/repositories/my-repo \
        --location=us-east1
    

后续步骤