有奖捉虫:云通信与企业服务文档专题,速来> HOT

概述

黑石物理服务器支持细化到实例级别的权限管理,您可以为人员分配管理特定物理服务器实例的权限;或者属于特定 VPC 或者子网的所有物理服务器的管理权限。

预设策略

预设策略,能帮助您快速授权,而不需要编写策略,但授权粒度会粗些,以下是黑石服务器的两个预设策略,分别为:
预设策略名
授权范围描述
QcloudBMInnerFullAccess
关联后,获得所有黑石服务器实例的增、删、改、查等操作的权限
QcloudBMInnerReadOnlyAccess
关联后,只能获得查询黑石服务器列表及基本信息的权限

Action、Resource、Condition 列表

以下表格,罗列了在配置黑石服务器的策略时,需要用到的 action、resource、condition。相关概念请参考 访问管理 章节。
Action:即操作,对应的是 API。编写策略时,您可以复制表格里内容并粘贴在 Action 字段中。关联该策略后,即可获得特定 API 的调用权限。
Resource:即云资源,当列表中 Action 的鉴权参数不为空时,则表示在调用 API 需要指定云资源,否则不需要指定。编写策略时,您可以复制表格里内容并粘贴在策略生成器的 Resource 字段中,但请记得替换 $region、$instanceId、$eipId 为真实的实例 ID。关联该策略后,即可获得特定资源的操作权限。
注意
部分 API 鉴权时需要两种产品的实例 ID,例如绑定 EIP,分别需要被绑定的黑石服务器以及用于绑定的黑石弹性公网 IP 的实例 ID,这时需要把两种云产品的资源描述都写在 Resource 里。
Condition:即生效条件。换句话说 Action 和 Resource 需要在特定的生效条件下,才能鉴权通过。您可以灵活使用 condition 以做到 VPC 或者 Subnet 粒度的权限管理,例如授权人员管理特定 VPC 内的所有黑石服务器。
注意
Describe 或者 Get 指查询操作,例如拉取多个实例详情等,查询操作鉴权通过后可能会把所有实例信息都返回,而无法区别哪些是有权限哪些是没有权限的实例。但再修改、删除实例时,会再次鉴权。
Action
鉴权参数
功能描述
条件密钥
bm:OfflineDevice
qcs::bm:$region::instance/$instanceId
退还后付费实例
bmvpc:unVpcIdbmvpc:unSubnetId
bm:ModifyPayModePre2Post
qcs::bm:$region::instance/$instanceId
将设备从预付费转换为后付费
bmvpc:unVpcIdbmvpc:unSubnetId
bm:ModifyDeviceAutoRenewFlag
qcs::bm:$region::instance/$instanceId
设置物理机服务器自动续费标志
bmvpc:unVpcIdbmvpc:unSubnetId
bm:GetDeviceDeployProcess
qcs::bm:$region::instance/$instanceId
机器部署重装进度查询
bmvpc:unVpcIdbmvpc:unSubnetId
bm:DescribeDevicePrice
qcs::bm:$region::instance/$instanceId
获取服务器的价格
bmvpc:unVpcIdbmvpc:unSubnetId
bm:DescribeDevicePartition
qcs::bm:$region::instance/$instanceId
获取物理机的分区格式
bmvpc:unVpcIdbmvpc:unSubnetId
bm:GetDeviceOutBandInfo
qcs::bm:$region::instance/$instanceId
获取设备的带外信息
bmvpc:unVpcIdbmvpc:unSubnetId
bm:UnbindEip
qcs::bm:$region::instance/$instanceIdqcs::bmeip::uin/:eipId/$eipId
解绑EIP
bmvpc:unVpcIdbmvpc:unSubnetId
bm:BindEip
qcs::bm:$region::instance/$instanceIdqcs::bmeip::uin/:eipId/$eipId
绑定 EIP
bmvpc:unVpcIdbmvpc:unSubnetId
bm:ResetDevicePasswd
qcs::bm:$region::instance/$instanceId
重置密码
bmvpc:unVpcIdbmvpc:unSubnetId
bm:ReloadDeviceOs
qcs::bm:$region::instance/$instanceId
重装操作系统
bmvpc:unVpcIdbmvpc:unSubnetId
bm:DescribeDeviceOperationLog
qcs::bm:$region::instance/$instanceId
获取设备的操作日志
bmvpc:unVpcIdbmvpc:unSubnetId
bm:ModifyDeviceAlias
qcs::bm:$region::instance/$instanceId
批量修改设备名称
bmvpc:unVpcIdbmvpc:unSubnetId
bm:StartDevice
qcs::bm:$region::instance/$instanceId
开机
bmvpc:unVpcIdbmvpc:unSubnetId
bm:ShutdownDevice
qcs::bm:$region::instance/$instanceId
关闭服务器
bmvpc:unVpcIdbmvpc:unSubnetId
bm:RebootDevice
qcs::bm:$region::instance/$instanceId
重启机器
bmvpc:unVpcIdbmvpc:unSubnetId
bm:DescribeDevice
-
获取物理服务器列表
-
bm:DescribeDeviceWeb
-
获取黑石物理服务器列表
-
bm:DescribeDeviceTrash
-
获取黑石物理服务器回收站列表
-
bm:SetOutBandVPNAuthPwd
-
设置带外 VPN 认证用户密码
-
bm:GetOutBandVPNAuthInfo
-
获取带外 VPN 认证信息
-
bm:BuyDevice
-
获取设备的带外信息
-
bm:RunUserCmd
-
运行自定义脚本
-
bm:GetUserCmdTaskDetail
-
查任务详细信息
-
bm:GetUserCmdTaskDetailList
-
获取任务详细信息列表
-
bm:GetUserCmdTaskList
-
获取任务列表
-
bm:DeleteUserCmd
-
删除自定义脚本
-
bm:GetUserCmd
-
查自定义脚本内容
-
bm:GetUserCmdList
-
查询自定义脚本列表
-
bm:ModifyUserCmd
-
修改自定义脚本
-
bm:AddUserCmd
-
新建自定义脚本
-

Condition(生效条件)

灵活使用 Condition,即可做到 VPC 或者 Subnet 粒度的权限管理,例如授权管理特定 VPC 内的所有黑石服务器。
注意
在使用 Condition 时,做到 VPC 或者 Subetnet 粒度的授权,策略的 Resource 字段建议只需填写*

书写规范

"condition":
{
"Option1":{"key1":["value1","value2"]),"key2":["value1","value2"])},
"Option2":{"key1":["value1","value2"]),"key2":["value1","value2"])}
}
Option 即操作符,理解为传入的鉴权参数和 key 的运算规则。Key 和 Value 是对应的,以下是对应关系。传入的鉴权参数经过运算后应该满足 key 和 value 的要求。
key
value
bmvpc:unVpcId
vpc-yyyyyy(VPC 的实例 Id)
bmvpc:unSubnetId
subnet-xxxxx(Subnet 的实例 Id)

操作符(Option)

黑石服务器只推荐使用string_equal以及for_all_value:string_equal_if_exist
string_equal,用于 condition 只有一个 key 和一个 value 的情况,要求传入的鉴权参数满足 key:value,可以做到特定 VPC 或者 subnet 的授权。
for_all_value:string_equal_if_exist,用于 condition 有一个 key 多个 value 的情况。 key:value1,value2,可以做到多个 VPC 或者 subnet 的授权。

例子

策略如下:
{
"version": "2.0",
"statement": {
"effect": "allow",
"action": "bm:ModifyDeviceAlias",
"resource": "*",
"condition": {
"string_equal": {
"bmvpc:unVpcId": "vpc-12345"
}
}
}
}
场景:调用 ModifyDeviceAlias 修改 cpm-678910 的别名。
评估逻辑:
1. 鉴权逻辑发现关联了 effect:allow 的策略且 action:bm:ModifyDeviceAlias 和 resource:*,即允许修改任一实例的别名。
2. 但前提是实例要在 vpc-12345里,鉴权才能通过。

最佳实践

本章节,我们举例两个场景的策略内容和评估逻辑,帮助您了解如何实现黑石服务器的权限分配。
场景 1:授权将 eip-34lvo6ir 绑定在 cpm-ftukx3a
场景 2:授权重启 vpc-34cxlz7z 内的所有物理服务器

场景 1

策略如下:
{
"version": "2.0",
"statement": [{
"effect": "allow",
"action": [
"name/bm:BindEip"
],
"resource": [
"qcs::bm:::instance/cpm-ftukx3aj",
"qcs::bmeip::: eipId / eip - 34 lvo6ir "
]
}]
}
评估逻辑: 当调用 BindEip 时,CAM 会判断传入的 InstanceId 和 EipId 是否为 cpm-ftukx3aj 和 eip-34lvo6ir,【是】则鉴权通过。

场景 2

策略如下:
{
"version": "2.0",
"statement": [{
"effect": "allow",
"action": [
"name/bm:RebootDevice"
],
"resource": [
"*"
],
"condition": {
"for_all_value:string_equal_if_exist": {
"bmvpc:unVpcId": ["vpc-34cxlz7z", "vpc-34cxlz12"]
}
}
}]
}
评估逻辑: 当调用 RebootDevice 时,CAM 对传入的 instanceId 做鉴权,发现满足 resource(*)的要求。 但要求 instanceId在vpc-34cxlz7z 或者 vpc-34cxlz12 里,【是】则鉴权通过,【否】则鉴权失败。