通过 API 设置权限

最近更新时间:2019-09-10 20:49:06

子用户密钥

使用子账号登录访问管理控制台的【云 API 密钥】,找到子用户的密钥。密钥用于生成签名,认证通过后可访问相关腾讯云资源。

签名的作用

  • 验证请求用户身份:通过用户密钥来确认。
  • 防止内容被篡改:通过对请求内容使用 hash 算法进行签名,通过签名的一致性来判定内容是否备篡改。
  • 防止重放攻击:签名内容中包括请求时间、签名时间及有效期,可避免过期请求重放。同时云服务也可以通过请求时间来拒绝过期请求。

API 调用示例

接口协议

  • 编码类型:UTF8
  • 编码格式:JSON
  • 传输方式:POST
  • 请求协议:HTTP

调用规范示例:

{
    "version": 1,
    "componentName": "MC",
    "eventId": 123456,
    "interface": {
        "interfaceName": "接口名",
        "para": {
            接口对应参数
        }
    }
}

返回结果:

{
    "version": 1,
    "eventId": 123456,
    "componentName": "CONSOLE_LOGICAL_SERVER",
    "returnValue": 0,
    "returnCode": 0,
    "returnMessage": "OK",
    "data": {
        "ownerUin": 123,
        "uin": 124,
        "ownerAppid": 323
    }
}

当返回结果出错时,则 returnCode 不为0,returnMessage 内容为出错信息。
输入参数中的 interfaceName 、para 和输出参数中的 data 说明详见 调用说明

接口说明

有关 CAM 用户与权限的详细 API 接口介绍,可查看 CAM API 文档

调用示例

新增策略(CreateCamStrategy)

策略示例:设置某个子用户(Uin 为“3232”)具有 list 账户下所有 queue 的权限,且对北京 region 的 horacetest1 有消费消息、批量删除消息的权限。

  • 字段解析
参数 描述 示例取值
strategyName 策略名称。 strategy1
strategyInfo 策略描述的内容(这里要传一个 JSON 字符串)。 示例代码
remark 策略的备注。 hello test
resource CMQ 的资源六段式描述,例如qcs::cmqqueue:bj:uin/1238423:queueName/uin/3232/myqueue
第一段为固定格式 qcs;
第二段为空;
第三段表示消息队列的类型,队列模型为 cmqqueue,主题模型为 cmqtopic;
第四段为地域信息,例如 gz、bj、sh 若为全地域,则设置为空;
第五段为主账号 uin/{主账号uin}
第六段为资源的描述,当为队列模式时,则 queueName/uin/{创建者Uin}/{队列名字} ,当为主题模式时该值取 topicName/uin/{创建者Uin}/{主题名字}。创建者的 Uin 可以通过控制台详情页获取,或者通过 yunapi 接口 GetQueueAttributes 或者GetTopicAttributes 的返回值 createUin 获取。
*
  • 示例代码:

    {
    "strategyName":"strategy1",
    "strategyInfo":{"version":"2.0","principal":{"qcs":["qcs::cam::uin/1238423:uin/3232/myqueue","qcs::cam::uin/1238423:groupid/13"]},"statement":[{"effect":"allow","action":"name/cmqqueue:ListQueue","resource":"*"},{"effect":"allow","action":["name/cmqqueue:ReceiveMessage","name/cmqqueue:BatchDeleteMessage"],"resource":["qcs::cmqqueue:bj:uin/1238423:queueName/uin/3232/myqueue","qcs::cmqqueue:bj:uin/1238423:queueName/uin/3232/*"]}]},
    "remark":"horace test"
    }
    说明:

    在第六段的资源的描述中,uin/后的创建者 ID 可以在创建策略时查看。

子账户关联/移除策略(OperateCamStrategy

此接口可给用户或者用户组联/移除策略。

  • 策略示例:将 UIN 为“123456”的用户关联到策略 ID 为“666”的策略。

  • 字段解析:

参数 描述 示例取值
groupId 如果是关联用户,则 groupId 传-1;
如果是关联用户组,则 groupId 传具体组 ID。
-1
relateUin 如果是关联用户,则 relateUin 传具体用户 uin;如果是关联用户组,则 relateUin 传-1。 123456
strategyId 需要关联的策略 ID。 666
actionType 值为“1”表示关联策略;值为“2”表示移除策略。 1
  • 示例代码:
    {
      "groupId":-1,
      "relateUin":123456,
      "strategyId":666,
      "actionType":1
    }

调用说明

该说明适用于各种业务的用户与权限管理,在设置 CMQ 业务时,请根据以下说明判断 CMQ 的相关取值。

  1. principal 可以不填,后续通过关联策略接口关联用户。
  2. principal、action、resource,当只有一个元素时,可以不加[]
  3. 资源(resource)描述格式通常采用六段式,格式为qcs:project:serviceType:region:account:resource
    • project:可以用id/0*或者id/*表示所有项目。授权时 project 为空表示id/0,鉴权时 project 为空表示可在任意项目中出现。默认为空。
    • serviceType:为 cos、cdn、vpc 等,*表示所有业务。不可以为空。
    • region:为地域,值为空,表示所有地域,其他地域分别是"gz"、"st"、"tj"、"sh"、"hk"、"ca"、"shjr"、"bj"。默认为空。
    • account:表示为uin/${uin}或者uid/${uid}。为空时,对于 CDN 业务和 VPC 等业务的资源,填充为uin/${uin},对于 COS 业务的资源,填充化为uid/${uid}${uin}${uid}表示访问者的 uin 或者 uid。默认为空。
      还有一种特殊情况,uin/-1一般是预设策略才出现,扩展表展开后会把-1变成开发商的uin,另外预设策略只允许子账户或角色的授权,所以可以直接用子账户或角色所属的根账户 uin 来替换-1。
    • resource 由 name/value 构成。name 表示业务对资源的定义。如 cmq 的为 queueName 和 topicName。cos 是用 prefix 描述,cdn 用 host 描述等。*表示所有资源,归一化为*/*的形式。不可以为空。
    • 用户、策略也是一种资源。CAM 根账户描述为qcs::cam::uin/1238423: uin/1238423,CAM 子账户描述为qcs::cam::uin/1238423: uin/3236671,匿名用户描述为qcs::cam::anonymous:anonymous
    • resource 为空时表示操作不需要关联对象。在系统中归一化为*
    • 对资源描述中 uin 或 uid 是否真的是该资源的拥有者,需要由业务来校验。强制要求业务在鉴权通过后必须校验,建议在授权时也进行校验。