随着云上资源数量的不断增长,管理难度也随之增加。火山引擎提供了标签管理功能,用于从各种维度对云服务资源进行自定义标识与分类化管理,例如通过标签将不同业务类别、用途或使用对象的云资源进行分类管理。 密钥管理服务支持为 密钥(key)添加标签,即支持密钥维度的标签管理。一个标签为一个键值对(Key-Value),包括一个标签键与一个标签值。您可以为每个密钥添加多个不同类别的标签,例如 region:beijing
、type:SymmetricKey
等。每个标签也可以绑定多个密钥,例如为所有密钥设置同一个标签 owner:Alice
。
推荐您在以下场景中使用标签管理功能。
权限精细管理: 如果企业使用一个主账号管理所有云资源,并且需要根据资源特征、资源所有者等维度进行分类管理。此场景下可以使用标签作为标识工具高效管理资源。
Project/Tag | 管理对象 | 使用约束 | 使用场景 | 更多信息 |
---|---|---|---|---|
项目 Project | 密钥环 Keyring | 项目是若干资源形成的一个资源集合,支持项目管理的资源只能加入到唯一项目中。 | 如果企业使用一个主账号管理所有云资源,并且需要根据业务部门、项目组等维度进行分组分权管理。此场景下可以使用项目作为资源逻辑隔离的容器。 | 项目管理 |
标签 Tag | 密钥 key | 标签是资源的附加标识,支持标签管理的资源可以同时绑定多个标签。 | 如果企业使用一个主账号管理所有云资源,并且需要根据资源特征、资源所有者等维度进行分类管理。此场景下可以使用标签作为标识工具高效管理资源。 | 标签管理 |
密钥标签设置规则如下表所示。
限制项 | 说明 |
---|---|
标签键 | 支持 UTF-8 格式表示的字符、空格、数字,以及如下特殊字符: _.:/=+-@标签键的长度需为 1~128 个字符。标签键区分大小写,如 Type 和 type 是两个不同的标签键。 |
标签值 | 支持 UTF-8 格式表示的字符、空格、数字,以及如下特殊字符: _.:/=+-@标签值区分大小写,如 Standard 和 standard 是两个不同的标签值。标签键的长度需为 0~256 个字符,即标签值可以为空。 |
其他 | 标签总数量无限制,但每个密钥最多可绑定 50 个标签。您可以为每个密钥添加多个不同类别的标签,但同一密钥下多个标签的标签键不可重复,且每个标签键只能有一个标签值。不同地域之间的标签信息不互通。例如在华北2(北京)地域创建的标签在华东2(上海)地域不可见。 |
登录密钥管理控制台。
在密钥环列表页,点击已创建好的密钥环详情按钮,进入密钥环详情页。
新建密钥:
点击新建密钥,在新建密钥弹窗内点击添加标签,输入Key & value,单次支持新建20个标签。
在所有必填字段填写完成后,单击确定,密钥以及密钥的标签创建完成。
编辑密钥:
在密钥列表/密钥详情页内,鼠标悬浮标签图标上方,出现编辑图标,点击后弹出编辑标签弹窗。
在编辑标签弹窗内,单击添加标签,设置标签键和标签值。
标签设置完成后,单击保存。
说明
标签键值需满足一定的设置规则,具体规则详情,请参见标签设置规则。
单击添加标签,可持续添加标签,单次最多新增20个,单个密钥最多支持绑定50个标签。
登录密钥管理控制台。
在密钥环列表页,点击已创建好的密钥环详情按钮,进入密钥环详情页。
在密钥列表/密钥详情页内,鼠标悬浮标签图标上方,出现编辑图标,点击后弹出编辑标签弹窗。
在弹窗内,单击目标标签操作列的删除。
标签设置完成后,单击保存。
删除标签后,即可为密钥解绑标签。
登录密钥管理控制台。
在密钥环列表页,点击已创建好的密钥环详情按钮,进入密钥环详情页。
在密钥列表/密钥详情页内,鼠标悬浮标签图标上方,出现编辑图标,点击后弹出编辑标签弹窗。
在弹窗内,可直接修改已有的标签键和标签值。
说明
标签键值需满足一定的设置规则,具体规则详情,请参见标签设置规则。
要查看用户主密钥(密钥环列表)页面,需要对通配符密钥环(trn:...:keyrings/*)有 DescribeKeyrings
权限。
要查看特定项目的密钥环列表页,请将策略附加到该项目。
{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKeyrings" ], "Resource": [ "trn:kms:*:*:keyrings/*" ] } ] }
查看密钥环详情页面,需要以下权限:
DescribeKeyrings
权限(使用户可查看用户主密钥页面并点击进入特定密钥环)。{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKeyrings" ], "Resource": [ "trn:kms:*:*:keyrings/*" ] } ] }
QueryKeyring
权限(密钥环详情页面会调用QueryKeyring
OpenAPI)。{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:QueryKeyring" ], "Resource": [ "trn:kms:*:*:keyrings/*" ] } ] }
DescribeKeys
权限(密钥环详情页面调用DescribeKeys
OpenAPI,需同时拥有密钥环和密钥的权限)。{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:QueryKeyring", "kms:DescribeKeys" ], "Resource": [ "trn:kms:*:*:keyrings/*" ] } ] }
其它操作
如Encrypt
操作,因为会同时使用密钥环和密钥资源,所以资源列表中需要同时传入密钥环和密钥的TRN。
{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:Encrypt" ], "Resource": [ "trn:kms:*:*:keyrings/keyringA", "trn:kms:*:*:keyrings/keyringA/keys/keyA", ] } ] }
或者
{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:Encrypt" ], "Resource": [ "trn:kms:*:*:keyrings/*" ] } ] }
允许对所有密钥环及所有密钥执行DescribeKeys
操作。
// No project { "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKeys", ], "Resource": [ "*" ] } ] }
允许对所有密钥环及密钥执行DescribeKeys
操作,但排除带有env=prod
标签的资源
// No project { "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKeys", ], "Resource": [ "trn:kms:*:*:keyrings/*" ] }, { "Effect": "Deny", "Action": [ "kms:DescribeKeys" ], "Resource": [ "trn:kms:*:*:keyrings/*/keys/*" ], "Condition": { "StringEquals": { "volc:ResourceTag/env": "prod" } } } ] }
允许在keyringA上执行DescribeKeys
操作,但禁止访问该密钥环下的所有密钥。
// No project { "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKeys" ], "Resource": [ "trn:kms:*:*:keyrings/keyringA" ] } ] }
允许在keyringA及其带有env=test
标签的密钥上执行DescribeKeys
操作。
// No project { "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKeys" ], "Resource": [ "trn:kms:*:*:keyrings/keyringA" ] }, { "Effect": "Allow", "Action": [ "kms:DescribeKeys" ], "Resource": [ "trn:kms:*:*:keyrings/keyringA/keys/*" ], "Condition": { "StringEquals": { "volc:ResourceTag/env": "test" } } } ] }
允许查询ProjectA项目下的所有密钥环及密钥。
// IMPORTANT NOTE: assume this policy is attached to ProjectA { "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKeys" ], "Resource": [ "trn:kms:*:*:keyrings/*" ] } ] }
允许查询ProjectA项目keyringA密钥环中带env=test
标签的密钥。
为什么需要第一条策略?因为第二条策略即使形式上允许所有资源(Resource: *
),由于约束条件中的volc:ResourceTag
标签机制仅作用于密钥资源,密钥环资源因不支持标签所以该请求会被拒绝。
// IMPORTANT NOTE: assume this policy is attached to ProjectA { "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKeys" ], "Resource": [ "trn:kms:*:*:keyrings/keyringA" ] }, { "Effect": "Allow", "Action": [ "kms:DescribeKeys" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "volc:ResourceTag/env": "test" } } } ] }