权限及授权项说明
如果您需要对您所拥有的CloudDC进行精细的权限管理,您可以使用统一身份认证服务(Identity and Access Management,简称IAM),如果华为云账号已经能满足您的要求,您可以跳过本章节,不影响您使用CloudDC服务的其它功能。
通过IAM,您可以通过授权控制主体(IAM用户、用户组、IAM委托或信任委托)对华为云资源的访问范围。目前IAM支持两类授权,一类是角色与策略授权,另一类为身份策略授权。
名称 |
核心关系 |
涉及的权限 |
授权方式 |
适用场景 |
---|---|---|---|---|
角色与策略授权 |
用户-权限-授权范围 |
|
为主体授予角色或策略 |
核心关系为“用户-权限-授权范围”,每个用户根据所需权限和所需授权范围进行授权,无法直接给用户授权,需要维护更多的用户组,且支持的条件键较少,难以满足细粒度精确权限控制需求,更适用于对细粒度权限管控要求较低的中小企业用户。 |
身份策略授权 |
用户-策略 |
|
|
核心关系为“用户-策略”,管理员可根据业务需求定制不同的访问控制策略,能够做到更细粒度更灵活的权限控制,新增资源时,对比角色与策略授权,基于身份策略的授权模型可以更快速地直接给用户授权,灵活性更强,更方便,但相对应的,整体权限管控模型构建更加复杂,对相关人员专业能力要求更高,因此更适用于中大型企业。 |
例如:如果需要对IAM用户授予可以创建华北-北京四区域的CloudDC资源和华南-广州区域的CloudDC资源的权限,基于策略授权的场景中,管理员需要创建两个自定义策略,并且为IAM用户同时授予这两个自定义策略才可以实现权限控制。在基于身份策略授权的场景中,管理员仅需要创建一个自定义身份策略,在策略中通过条件键“g:RequestTag”的配置即可达到策略对于授权区域的控制。将身份策略附加主体或为主体授予该身份策略即可获得相应权限,权限配置方式更细粒度更灵活。
两种授权场景下的策略/身份策略、授权项等并不互通,云化数据中心 (CloudDC)服务支持使用身份策略进行授权。
账号下的IAM用户发起API请求时,该IAM用户必须具备调用该接口所需的权限,否则,API请求将调用失败。每个接口所需要的权限,与各个接口所对应的授权项相对应,只有发起请求的用户被授予授权项所对应的策略,该用户才能成功调用该接口。
例如:用户要调用接口来查询iMetal服务器列表,那么在策略授权的场景中,这个IAM用户被授予的权限中必须包含允许“clouddc:imetal:list”的授权项,该接口才能调用成功。在身份策略授权的场景中,这个IAM用户被授予的权限中包含“clouddc:imetal:list”的授权项,该接口才能调用成功。
支持的授权项
策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下:
- 权限:允许或拒绝某项操作。
- 对应API接口:自定义策略实际调用的API接口。
- 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。
- 依赖的授权项:部分Action存在对其他Action的依赖,需要将依赖的Action同时写入授权项,才能实现对应的权限功能。
- IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。管理员可以在授权项列表中查看授权项是否支持IAM项目或企业项目,“√”表示支持,“×”表示暂不支持。关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别。
云化数据中心 (CloudDC)支持的自定义策略授权项如下所示:
权限 |
对应API接口 |
授权项(Action) |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
更新 iRack 实例 |
PUT /api/v1/{project_id}/iracks/{irack_id} |
clouddc:irack:update |
√ |
× |
查询 iRack 实例列表 |
GET /api//v1/{project_id}/iracks |
clouddc:irack:list |
√ |
× |
权限 |
对应API接口 |
授权项(Action) |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
修改 IDC 描述 |
PUT /api/v1/{project_id}/idcs |
clouddc:idc:update |
√ |
× |
查询 IDC 列表 |
GET /api/v1/{project_id}/idcs |
clouddc:idc:list |
√ |
× |
权限 |
对应API接口 |
授权项(Action) |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
批量查询物理服务器 |
GET /v1/{project_id}/physicalservers |
clouddc:imetal:listServer |
√ |
× |
查询物理服务器信息 |
GET /v1/{project_id}/physicalservers/{id} |
clouddc:imetal:getServer |
√ |
× |
获取console地址信息 |
GET /v1/{project_id}/physicalservers/{id}/remote-console-address |
clouddc:imetal:createRemoteConsoleLink |
√ |
× |
查询服务器硬件详细信息 |
GET /v1/{project_id}/physicalservers/{id}/hardware-attributes |
clouddc:imetal:getHardwareAttribute |
√ |
× |
查询服务器固件详细信息 |
GET /v1/{project_id}/physicalservers/{id}/firmware-attributes |
clouddc:imetal:getFirmwareAttribute |
√ |
× |
批量修改物理服务器电源状态 |
PUT /v1/{project_id}/physicalservers/power-state |
clouddc:imetal:updatePowerStatus |
√ |
× |
导出服务器日志请求 |
POST /v1/{project_id}/physicalservers/{id}/logs/exports |
clouddc:imetal:createDumpLog |
√ |
× |
查询日志导出状态 |
GET /v1/{project_id}/physicalservers/{id}/logs/exports/{export_id} |
clouddc:imetal:getDumpLogProgress |
√ |
× |
下载日志文件 |
GET /v1/{project_id}/physicalservers/{id}/logs/exports/{export_id}/content |
clouddc:imetal:createDownloadLog |
√ |
× |
权限 |
对应API接口 |
授权项(Action) |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
批量创建实例 |
POST /v1/{project_id}/instances/batch-create |
clouddc:instance:createBatch |
√ |
× |
创建实例 |
POST /v1/{project_id}/instances |
clouddc:instance:create |
√ |
× |
批量查询实例 |
GET /v1/{project_id}/instances |
clouddc:instance:list |
√ |
× |
批量删除实例 |
POST /v1/{project_id}/instances/batch-delete |
clouddc:instance:deleteBatch |
√ |
× |
查询实例状态 |
GET /v1/{project_id}/instances/{id}/status |
clouddc:instance:get |
√ |
× |
批量重新安装OS |
PUT /v1/{project_id}/instances/reinstall |
clouddc:instance:reinstallOS |
√ |
× |
批量修改实例密码 |
PUT /v1/{project_id}/instances/password |
clouddc:instance:changePassword |
√ |
× |
删除实例 |
DELETE /v1/{project_id}/instances/{id} |
clouddc:instance:delete |
√ |
× |
修改实例ip |
PUT /v1/{project_id}/instances/{id}/ip |
clouddc:imetal:updateIP |
√ |
× |
权限 |
对应API接口 |
授权项(Action) |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
服务器概览 |
GET /v1/{project_id}/physicalservers/status |
clouddc::listStatus |
√ |
× |
服务器告警概览 |
GET /v1/{project_id}/physicalservers/alarms/summary |
clouddc::listAlarmStat |
√ |
× |
服务器告警趋势 |
GET /v1/{project_id}/physicalservers/alarms/trend |
clouddc::listAlarmTrend |
√ |
× |
服务器告警列表 |
GET /v1/{project_id}/physicalservers/alarms |
clouddc::listAlarm |
√ |
× |
服务器事件列表 |
GET /v1/{project_id}/physicalservers/events |
clouddc::listEvent |
√ |
× |
查询事件定义 |
GET /v1/{project_id}/physicalservers/events/{event_id} |
clouddc::listIEventDicts |
√ |
× |
权限 |
对应API接口 |
授权项(Action) |
IAM项目(Project) |
企业项目 (Enterprise Project) |
---|---|---|---|---|
批量创建机柜标签 |
POST https://www.example.com/v1/{project_id}/iracks/{id}/tags/create |
clouddc:irack:tagResource |
√ |
× |
批量删除机柜标签 |
POST https://www.example.com/v1/{project_id}/iracks/{id}/tags/delete |
clouddc:irack:unTagResource |
√ |
× |
批量创建资源标签 |
POST /v1/{project_id}/{resource_type}/{resource_id}/tags/create |
clouddc::tagResource |
√ |
× |
批量删除资源标签 |
POST /v1/{project_id}/{resource_type}/{resource_id}/tags/delete |
clouddc::unTagResource |
√ |
× |