使用标记对 Google Cloud 中的代码库和其他资源进行分组, 让您可以在 Google Cloud 内部集中访问权限控制 组织。
如需对 Artifact Registry 中的代码库进行分组以进行自动操作和结算,请使用标签。标记和标签彼此独立工作,您可以同时将它们应用于同一代码库。对于 请参阅 标记和标签。
什么是标记?
标记是可应用于资源以实现精细访问权限控制的键值对。
项目管理员会在 并在 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
将标记附加到代码库
项目管理员创建标记后,您就可以将标记附加到代码库。每个标记都有一个键和一个值。您可以通过将 添加到代码库
如需将代码库附加到代码库,请执行以下操作:
控制台
从管理员处获取要附加的代码值。
您可以使用以下任一标识符来附加标记值:
- 命名空间名称,例如
123456789012/env/dev
- 永久 ID,例如
tagValues/567890123456
- 命名空间名称,例如
打开 Google Cloud 控制台中的制品库页面。
选择要标记的代码库。
在 Repository Details 部分中,点击 Show more。
系统会显示代码库的现有代码(包括继承的代码)。
点击 修改标记图标。
在直接标记部分中,点击选择范围。
选择您的代码库项目。
在键字段中输入内容以过滤标记列表,然后选择标记键。
在值字段中输入内容以过滤标记列表,然后选择标记值。
点击保存。
点击确认。
该代码会附加到您的代码库。
gcloud CLI
从您的管理员那里获取要附加的标记值。
您可以使用以下任一标识符来附加标记值:
- 命名空间名称,例如
123456789012/env/dev
- 永久 ID,例如
tagValues/567890123456
- 命名空间名称,例如
使用以下命令附加标记值:
gcloud alpha resource-manager tags bindings create \ --tag-value=TAG_VALUE \ --parent=REPOSITORY_ID \ --location=LOCATION
替换以下值:
TAG_VALUE
是要附加的标记值的永久 ID 或命名空间名称。REPOSITORY_ID
是代码库的完整 ID,包括用于标识资源类型的 API 域名 (//artifactregistry.googleapis.com/
)。例如,//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
列出附加到代码库的标记
您可以列出已附加到您有权访问的资源的标记 访问权限。
控制台
打开 Google Cloud 控制台中的制品库页面。
选择要查看的代码库。
在代码库详情部分,点击展开。
代码列表会显示所有代码库代码,包括直接代码以及从资源层次结构中较高位置继承的代码。
gcloud CLI
如需列出附加到代码库的标记,请运行以下命令:
gcloud alpha resource-manager tags bindings list \
--parent=REPOSITORY_ID \
--location=LOCATION
该命令仅列出直接附加到指定资源的标记,因此
它不会返回从父级项目或更高级别继承的标记。您可以列出
(通过指定项目而不是
带有 --parent
标志的代码库。
例如,以下命令列出了挂接到 my-repo
代码库中的标记
项目 my-project
和位置 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 \
将标记与代码库分离
您可以分离直接附加到代码库的标记。如果您需要移除从父项目或资源层次结构的其他部分继承的代码,则项目管理员必须将其从附加代码的资源中分离。
如需移除附加到代码库的标记,请执行以下操作:
控制台
gcloud CLI
获取要移除的标记值。如果您不知道标记的值 list 标记已附加到代码库。
使用以下命令分离标记值:
gcloud alpha resource-manager tags bindings delete \ --tag-value=TAG_VALUE \ --parent=REPOSITORY_ID \ --location=LOCATION
替换以下值:
要分离的
TAG_VALUE
标记值。REPOSITORY_ID
是代码库的完整 ID,包括用于标识资源类型的 API 域名 (//artifactregistry.googleapis.com/
)。例如,//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
后续步骤
- 了解代码库标签。