有奖:语音产品征文挑战赛火热进行中> HOT
您可以在 CAM 中通过创建策略并将其关联到 CAM 身份(用户、用户组或角色)或腾讯云资源来管理访问权限。在策略与身份或资源相关联时,策略定义它们的权限。在委托人实体(如用户或角色)发出请求时,腾讯云将评估这些策略。策略中的权限确定是允许还是拒绝请求。大多数策略作为 JSON 文档存储在腾讯云中。腾讯云支持三种类型的策略:基于身份的策略、基于资源的策略、和访问控制列表 (ACL)。
CAM 策略定义操作的权限,无论您使用哪种方法执行操作。例如,如果一个策略允许GetUser 操作,则具有该策略的用户可以从 CAM 管理控制台和 CAM API 获取用户信息。在创建 CAM 用户时,您可以选择允许控制台或编程访问。如果允许控制台访问,则 CAM 用户可以使用用户名和密码登录到控制台。如果允许编程访问,则用户可以通过访问密钥来使用 API。

策略类型

CAM 支持以下策略类型,有关更多详细信息,请参阅下面有关各种策略类型的各部分。
说明:
基于身份的策略 – 将预设策略和自定义策略附加到 CAM 身份(用户、用户组或角色)。基于身份的策略向身份授予权限。
基于资源的策略 – 将自定义策略定义到资源。基于资源的策略的最常见示例是支持基于资源的策略向在策略中指定的委托人实体授予权限。委托人可以与资源位于同一个账户中,也可以位于其他账户中。
访问控制列表 (ACL) – 使用 ACL 来控制其他主账号、子账号和用户组授予对象存储基本的读、写权限。ACL 类似于基于资源的策略,但它们是唯一不使用 JSON 策略文档结构的策略类型。ACL 是跨账户的权限策略,向指定账号授予权限。

基于身份的策略

基于身份的策略是可附加到身份(用户、用户组或角色)的 JSON 权限策略文档。这些策略控制实体(用户或角色)可在什么样的条件下对哪些资源执行哪些操作。基于身份的策略可以进一步分类:
说明:
预设策略 – 预设策略由腾讯云创建和管理,是被用户高频使用的一些常见权限集合,如资源全读写权限等。操作对象范围广,操作粒度粗。预设策略为系统预设,不可被用户编辑。
自定义策略 – 由用户创建的策略,允许做细粒度的权限划分。例如,为某数据库管理员关联一条策略,使其有权管理云数据库实例,而无权管理云服务器实例。 要了解如何在托管策略或内联策略之间选择,请参阅托管策略与内联策略。

基于资源的策略

基于资源的策略是附加到资源的 JSON 策略文档。这些策略授予指定的委托人对该资源执行特定操作的权限,并定义这在哪些条件下适用。
要启用跨账户访问,您可以将整个账户或其他账户中的 CAM 实体指定为基于资源的策略中的委托人。将跨账户委托人添加到基于资源的策略只是建立信任关系工作的一半而已。当委托人和资源位于单独的腾讯云账户中时,还必须使用基于身份的策略授予对资源的委托人实体访问权限。但是,如果基于资源的策略向同一个账户中的委托人授予访问权限,则不需要额外的基于身份的策略。
CAM 服务仅支持一种类型的基于资源的策略(称为角色信任策略),这种策略附加到 CAM 角色。CAM 角色既是身份,又是支持基于资源的策略的资源。因此,您必须将信任策略和基于身份的策略同时附加到 CAM 角色。信任策略定义哪些委托人实体(账户、用户、角色和联合身份用户)可以担任该角色。

访问控制列表 (ACL)

访问控制列表 (ACL) 是一种服务策略,允许您控制另一个账户中的哪些委托人可以访问资源。不能使用 ACL 控制同一账户中的委托人的访问权限。ACL 类似于基于资源的策略,但它们是唯一不使用 JSON 策略文档格式的策略类型。目前对象存储是支持 ACL 的服务示例。要了解有关 ACL 的更多信息,请参见 ACL 访问控制实践

JSON 策略概述

大多数策略在腾讯云中存储为 JSON 文档。基于身份的策略和用于设置权限边界的策略是您附加到用户或角色的 JSON 策略文档。基于资源的策略是附加到资源的 JSON 策略文档。ACL 也可附加到资源,但必须使用不同的语法。 您无需了解 JSON 语法。您可以使用腾讯云管理控制台中的可视化编辑器创建和编辑自定义策略,而无需使用 JSON。不过,如果在组中使用内联策略或复杂的策略,您还必须使用控制台在 JSON 编辑器中创建和编辑这些策略。有关使用可视化编辑器的更多信息,请参见 通过策略生成器创建自定义策略

JSON 策略文档结构

策略语句中包含以下几个元素:
效果(必选):根据授权效果,选择 "允许"。如选择 "拒绝",用户或组不能获取授权。
服务(必选):选择需要添加的产品。
操作(必选):选择您要授权的操作。
资源(必填):填入您要授权的资源的资源六段式。详细可参见 资源描述方式
条件(选填):设置子账号上述授权的生效条件。详细可参见 生效条件
要了解上述及其他更高级的策略元素,请参见 元素参考

多个声明和多个策略

如果要为实体(用户、组或角色)定义多个权限,您可以在单个策略中使用多个语句。您也可以附加多个策略。如果您尝试在单个语句中定义多个权限,则策略可能没有授予预期访问权限。作为最佳实践,请按资源类型分解策略。
由于策略的大小有限,可能需要对更复杂的权限使用多个策略。在单独的客户托管策略中创建权限的功能分组也是个好主意。例如,为 CAM 用户管理创建一个策略,为自我管理创建一个策略,并为对象存储存储桶管理创建另一个策略。无论多个语句和多个策略如何组合,腾讯云都会以相同方式评估您的策略。
例如,以下策略具有三个语句,其中每个语句在单个账户中定义一组单独的权限。这些语句定义以下权限:
第一个语句让具有附加策略的用户拥有 API 网关的全读写权限。
第二个语句让具有附加策略的用户拥有云服务器(CVM)的全读写权限。
第三个语句让具有附加策略的用户必须在 IP 为 1.1.1.1 时拥有负载均衡(CLB)的全读写权限。
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"name/apigw:*"
],
"resource": [
"*"
]
},
{
"effect": "allow",
"action": [
"name/cvm:*"
],
"resource": [
"*"
]
},
{
"effect": "allow",
"action": [
"name/clb:*"
],
"resource": [
"*"
],
"condition": {
"string_equal": {
"qcs:ip": "1.1.1.1"
}
}
}
]
}

JSON 策略语法示例

该样例描述为:允许属于主账号 ID 1238423 下的子账号 ID 3232523 以及组 ID 18825, 对北京地域的 cos 存储桶 bucketA 和广州地域的 cos 存储桶 bucketB 下的对象 object2,在访问 IP 为 10.121.2.* 网段时,拥有所有 cos 读 API 的权限以及写对象的权限,以及可以发送消息队列的权限。
{
"version":"2.0",
"principal":{"qcs":["qcs::cam::uin/1238423:uin/3232523",
"qcs::cam::uin/1238423:groupid/18825"]},
"statement":
[
{
"effect":"allow",
"action":["name/cos:PutObject","permid/280655"],
"resource":["qcs::cos:bj:uid/1238423:prefix//1238423/bucketA/*",
"qcs::cos:gz:uid/1238423:prefix//1238423/bucketB/object2"],
"condition": {"ip_equal":{"qcs:ip":"10.121.2.10/24"}}
},
{
"effect":"allow",
"action":"name/cmqqueue:Sendmessages",
"resource":"*"
}
]
}
?


http://www.vxiaotou.com