访问控制概述
如果您在使用碳引擎等服务时,服务由不同的人管理,但都共享您的云账号密钥,将存在以下问题:
您的密钥由多人共享,泄密风险高。
您无法限制其他人访问您的某些集群或者任务资源,易产生误操作造成安全风险。
此时,您就可以通过子账号实现不同的人管理不同的服务,来规避以上的问题。默认情况下,子账号没有使用盘查实例的权限。因此,我们就需要创建策略来允许子账号使用他们所需要的资源或权限。
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用 CAM 创建子用户、用户组和角色,并通过策略控制其访问范围。CAM 支持用户和角色 SSO 能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
您最初创建的腾讯云主账号,拥有整个账号全部腾讯云服务和资源的完全访问权限,建议您保护好主账号的凭证信息,日常使用子用户或角色进行访问,并开启多因素校验和定时轮换密钥。
当您使用 CAM 的时候,可以将策略与一个用户或一组用户关联起来,策略能够授权或者拒绝用户使用指定资源完成指定任务。有关 CAM 策略的更多相关基本信息,请参照 策略语法。有关 CAM 策略的更多相关使用信息,请参照 策略。
若您不需要对子账户进行碳引擎相关资源的访问管理,您可以跳过此章节。跳过这些不会影响您对文档中其余部分的理解和使用。
入门
碳引擎策略必须授权使用一个或多个碳引擎操作或者必须拒绝使用一个或多个碳引擎操作。同时还必须指定可以用于操作的资源(可以是全部资源,某些操作也可以是部分资源),策略还可以包含操作资源所设置的条件。
碳引擎部分 API 操作不支持资源级权限,这意味着,对于该类 API 操作,您不能在使用该类操作的时候指定某个具体的资源来使用,而必须要指定全部资源来使用。
可授权的资源类型
资源级权限指的是能够指定用户对哪些资源具有执行操作的能力。碳引擎的集群或者应用支持资源级权限,即表示针对支持资源级权限的碳引擎操作,控制何时允许用户执行操作或者允许用户使用的特定资源。
在访问管理(Cloud Access Management,CAM)中可授权的资源类型如下:
资源类型 | 授权策略中的资源描述方法 |
qcs::tan::$account:instance/* |
碳引擎的盘查实例 介绍了当前支持资源级权限的碳引擎 API 操作,以及每个操作支持的资源和条件密钥。设置资源路径时,您需要将
$account
等变量参数修改为您实际的参数信息,同时您也可以在路径中使用 * 通配符。相关操作示例可参见 访问管理示例。注意:表中未列出的碳引擎 API 操作即表示该碳引擎 API 操作不支持资源级权限。针对不支持资源级权限的碳引擎 API 操作,您仍可以向用户授予使用该操作的权限,但是策略语句的资源元素必须指定为 *。
碳引擎的实例相关操作
API 操作 | 资源路径 |
CreateFactorUse | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeFactorUse | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateFactorUseFromLib | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifyFactorUseAttribute | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteFactorUse | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
UploadDataSource | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
SaveDataSource | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
SaveCustomValue | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifySubFormulaFormula | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifySubFormulaAttribute | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifyPlanAttribute | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifyEntryFormula | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifyDataSource | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifyEntryAttribute | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifyCategoryAttribute | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DownloadDataSourceTemplate | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeTasks | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeSubFormulas | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeRecommendParams | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribePlans | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeInstances | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeInstanceResultStatistics | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeFactorKeyword | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeEntryResultElement | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeEntryResultCurve | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeEntryResultCalendar | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeEntryFormula | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeDataSources | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeEntries | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeCustomValues | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeCategories | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteTask | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteSubFormulas | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteRecommendParamsUse | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeletePlans | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteEntries | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteDataSource | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteCustomValue | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteCategories | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteBlockNode | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateTask | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateSubFormula | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateRecommendParamUse | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreatePlan | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateEntry | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateCategory | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateBlockNode | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CopySubFormula | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CopyPlan | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CopyCategory | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CopyEntry | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CheckEntryFormula | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
RerunTask | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateYear | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CopyYear | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifySubcategory | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DeleteSubcategory | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CopySubcategory | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateSubcategory | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeSubCategories | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeCarbonCosPreSignedURL | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeCarbonCosSessionToken | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateEntryParamFill | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifyEntryParamName | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeEntryParamFillValue | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
CreateEntryParamFillValue | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeInstanceSubCategoryTimeDistribution | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeInstanceCategoryTimeDistribution | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
ModifyDataSourceAttribute | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
DescribeDataSource | qcs::tan::$account:instance/* qcs::tan::$account:instance/$InstanceId |
操作级访问
API 操作 | 说明 |
DescribeInstanceResultCurve | 获取实例结果历史曲线 |
DescribeFactorLibs | 查询因子库列表 |
DescribeRecommendParamsUse | 查询公式使用的参数推荐值 |
DescribeRecommendCategories | 查询推荐参数值分类 |
CreateBlockNodes | 批量创建节点 |
CreateBlockNodeAttribute | 创建节点属性 |
CreateBlockNodeRecords | 创建节点记录 |
CreateNodeGroup | 创建节点分组 |
DeleteBlockNodeAttribute | 删除节点属性 |
DescribeBlockNodeCreateBys | 获取节点列表创建者 |
DescribeBlockNodes | 获取节点列表 |
DescribeBlockNode | 查询节点 |
DeleteNodeGroup | 删除节点分组 |
DescribeEnumerations | 查询枚举列表 |
DescribeNodeGroup | 查询节点分组 |
DescribePrefixUnits | 查询单位词头列表 |
DescribeUnits | 查询单位列表 |
ModifyBlockNodeGroups | 批量设置节点分组 |
ModifyBlockNodeAttribute | 修改节点属性 |
ModifyBlockNode | 编辑节点 |
ModifyNodeGroup | 修改节点分组 |
MoveNodeGroup | 移动节点分组 |
DescribeTemplates | 查询模板 |
ModifyGroupAttribute | 修改碳引擎盘查分组名称 |
DescribeInstanceStat | 查询实例统计 |
DescribeGroups | 获取盘查组列表 |
DescribeGroupResultCurve | 获取分组累计排放曲线 |
DeleteGroups | 删除盘查组 |
CreateGroup | 创建盘查组 |
DescribeCosPreSignedURL | 获取存储对象 preSignedURL |
DescribeTemplateStandards | 获取行业模板标准 |
DescribeGroupSubCategoryDistribution | 获取盘查组子类排放分布 |
DescribeGroupCategoryDistribution | 获取盘查组大类排放分布 |
授权策略语法
策略语法
CAM 策略:
{"version":"2.0","statement":[{"effect":"effect","action":["action"],"resource":["resource"],"condition": {"key":{"value"}}}]}
版本 version 是必填项,目前仅允许值为"2.0"。
语句 statement 是用来描述一条或多条权限的详细信息。该元素包括 effect、action、resource,condition 等多个其他元素的权限或权限集合。一条策略有且仅有一个 statement 元素。
1. 影响 effect 描述声明产生的结果是“允许”还是“显式拒绝”。包括 allow(允许)和 deny(显式拒绝)两种情况。该元素是必填项。
2. 操作 action 用来描述允许或拒绝的操作。操作可以是 API (以 name 前缀描述)或者功能集(一组特定的 API,以 permid 前缀描述)。该元素是必填项。
3. 资源 resource 描述授权的具体数据。资源是用六段式描述。每款产品的资源定义详情会有所区别。碳引擎中的资源ID形如:tan-ins-xxxxxx。
4. 生效条件 condition 描述策略生效的约束条件。条件包括操作符、操作键和操作值组成。条件值可包括时间、IP 地址等信息。有些服务允许您在条件中指定其他值。该元素是非必填项。
碳引擎的操作
在 CAM 策略语句中,您可以从支持 CAM 的任何服务中指定任意的 API 操作。对于碳引擎,请使用以 name/tan: 为前缀的 API。例如:name/tan:DescribeInstances。
如果您要在单个语句中指定多个操作的时候,请使用逗号将它们隔开,如下所示:
"action":["name/tan:action1","name/tan:action2"]
您也可以使用通配符指定多项操作。例如,您可以指定名字以单词 "Describe" 开头的所有操作,如下所示:
"action":["name/tan:Describe*"]
如果您要指定碳引擎中所有操作,请使用 * 通配符,如下所示:
"action":["name/tan:*"]
碳引擎的资源路径
每个 CAM 策略语句都有适用于自己的资源。
资源路径的一般形式如下:
qcs:project_id:service_type::account:resource
project_id:描述项目信息,仅为了兼容 CAM 早期逻辑,无需填写。
service_type:产品简称,如 tan。
account:资源拥有者的根账号信息,如 uin/164256472。
resource:各产品的具体资源详情,如 instance/instance_id1 或者 instance/*。
例如,您可以使用特定实例 (tan-ins-xxxxxx) 在语句中指定它,如下所示:
"resource":[ "qcs::tan::uin/164256472:instance/tan-ins-xxxxxx"]
您还可以使用 * 通配符指定属于特定账户的所有实例,如下所示:
"resource":[ "qcs::tan::uin/164256472:instance/*"]
您要指定所有资源,或者如果特定 API 操作不支持资源级权限,请在 Resource 元素中使用 * 通配符,如下所示:
"resource": ["*"]
如果您想要在一条指令中同时指定多个资源,请使用逗号将它们隔开,如下所示为指定两个资源的例子:
"resource":["resource1","resource2"]
下表描述了碳引擎能够使用的资源和对应的资源描述方法。
在下表中,$为前缀的单词均为代称。其中,account 指代的是账户 ID。
资源 | 授权策略中的资源描述方法 |
碳引擎盘查实例 | qcs:tan::$account:instance/$InstanceId |