基于IAM授权的策略示例
如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制,自定义策略是对系统策略的扩展和补充。您可以参考以下的策略示例配置常用云服务的自定义策略。
其他云服务的策略配置示例,请参考各云服务《用户指南》中的“权限管理”章节。
ECS自定义策略示例
- 示例1:授权仅允许用户批量开机、关机、重启云服务器
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:cloudServerFlavors:get", "ecs:cloudServers:reboot", "ecs:cloudServers:start", "ecs:cloudServers:get", "ecs:cloudServers:list", "ecs:cloudServers:stop" ] } ] }
- 示例2:授权仅允许用户批量关闭云服务器、删除云服务器
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:cloudServers:get", "ecs:cloudServers:delete", "ecs:cloudServers:list", "ecs:cloudServers:stop" ] } ] }
- 示例3:授权仅允许用户通过VNC进行登录
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:cloudServerFlavors:get", "ecs:cloudServers:vnc", "ecs:cloudServers:get", "ecs:cloudServers:list" ] } ] }
- 示例4:授权拒绝用户删除云服务器
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。
如果您给用户授予ECSFullAccess的系统策略,但不希望用户拥有ECSFullAccess中定义的删除云服务器权限,您可以创建一条拒绝删除云服务的自定义策略,然后同时将ECSFullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对ECS执行除了删除云服务器外的所有操作。拒绝策略示例如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "ecs:cloudServers:delete" ] } ] }
VPC自定义策略示例
- 示例1:授权用户创建和查看VPC
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ " vpc:vpcs:create vpc:vpcs:list " ] } ] }
- 示例2:拒绝用户删除VPC
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。
如果您给用户授予VPC FullAccess的系统策略,但不希望用户拥有VPC FullAccess中定义的删除VPC权限,您可以创建一条拒绝删除VPC的自定义策略,然后同时将VPC FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对VPC执行除了删除外的所有操作。拒绝策略示例如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "vpc:vpcs:delete" ] } ] }
- 示例3:多个授权项策略
一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下:
{ "Version": "1.1", "Statement": [ { "Action": [ "vpc:vpcs:create", "vpc:vpcs:update" ], "Effect": "Allow" }, { "Action": [ "ecs:servers:delete" ], "Effect": "Allow" } ] }
- 示例4:授权用户查看关联资源
ELB自定义策略示例
- 示例1:授权用户更新负载均衡器
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "elb:loadbalancers:put" ] } ] }
- 示例2:拒绝用户删除负载均衡器
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。
如果您给用户授予ELB FullAccess的系统策略,但不希望用户拥有ELB FullAccess中定义的删除负载均衡器权限,您可以创建一条拒绝删除负载均衡器的自定义策略,然后同时将ELB FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对ELB执行除了删除负载均衡器外的所有操作。拒绝策略示例如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "elb:loadbalancers:delete" ] } ] }
- 示例3:多个授权项策略
一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "elb:loadbalancers:get", "elb:loadbalancers:list", "elb:loadbalancers:delete", "ecs:cloudServers:delete" ] } ] }
CCE自定义策略示例
- 示例1:创建一个名称为“test”的集群
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "cce:cluster:create" ] } ] }
- 示例2:拒绝用户删除节点
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。
如果您给用户授予CCEFullAccess的系统策略,但不希望用户拥有CCEFullAccess中定义的删除节点权限(cce:node:delete),您可以创建一条相同Action的自定义策略,并将自定义策略的Effect设置为Deny,然后同时将CCEFullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对CCE执行除了删除节点外的所有操作。拒绝策略示例如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "cce:node:delete" ] } ] }
- 示例3:多个授权项策略
一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下:
{ "Version": "1.1", "Statement": [ { "Action": [ "ecs:cloudServers:resize", "ecs:cloudServers:delete", "ecs:cloudServers:delete", "ims:images:list", "ims:serverImages:create" ], "Effect": "Allow" } ] }
EVS自定义策略示例
- 示例1:授权用户创建云硬盘
{ "Version": "1.1", "Statement": [ { "Action": [ "evs:volumes:list", "evs:volumes:get", "evs:quotas:get", "evs:volumeTags:list", "evs:types:get", "evs:volumes:create", "ecs:cloudServerFlavors:get", "ecs:cloudServers:list", "bss:balance:view", "bss:order:pay", "bss:order:update" ], "Effect": "Allow" } ] }
- 示例2:拒绝用户删除云硬盘
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。
如果您给用户授予EVS FullAccess的系统策略,但不希望用户拥有EVS FullAccess中定义的删除云硬盘权限,您可以创建一条拒绝删除云硬盘的自定义策略,然后同时将EVS FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对EVS执行除了删除云硬盘外的所有操作。拒绝策略示例如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "evs:volumes:delete" ] } ] }
- 示例3:授权用户创建强制加密的云硬盘
您可以添加一条自定义策略,用于限制用户只能创建加密的云硬盘。授权语句策略描述如下:
{ "Version": "5.0", "Statement": [ { "Effect": "Deny", "Action": [ "evs:volumes:create" ], "Condition": { "Bool": { "evs:Encrypted": [ "false" ] } } } ] }
- 示例4:授权用户创建强制备份的云硬盘
您可以添加一条自定义策略,用于限制用户创建云硬盘时必须使用云备份功能。
如果您在创建包年/包月云硬盘时,配置了强制备份,则只能选择已有的备份存储库。
授权语句策略描述如下:
{ "Version": "5.0", "Statement": [ { "Effect": "Deny", "Action": [ "evs:volumes:create" ], "Condition": { "Null": { "cbr:VaultId": [ "true" ] } } } ] }
CBR自定义策略示例
- 示例1:授权用户创建、修改和删除存储库
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "cbr:*:get*", "cbr:*:list*", "cbr:vaults:update", "cbr:vaults:delete", "cbr:vaults:create" ] } ] }
- 示例2:拒绝用户删除存储库和备份
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。
如果您给用户授予CBR FullAccess的系统策略,但不希望用户拥有CBR FullAccess中定义的删除存储库权限,您可以创建一条拒绝删除存储库和备份的自定义策略,然后同时将CBR FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对CBR执行除了删除存储库和备份外的所有操作。拒绝策略示例如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "cbr:backups:delete", "cbr:vaults:delete" ] } ] }
- 示例3:多个授权项策略
一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下:
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "cbr:vaults:create", "cbr:vaults:update", "cbr:vaults:delete" ] }, { "Effect": "Allow", "Action": [ "sfs:shares:createShare" ] } ] }
DLI自定义策略示例
- 示例1:允许
- 授权用户拥有在所有区域中所有数据库的创建表权限。
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "dli:database:createTable" ], "Resource": [ "dli:*:*:database:*" ] } ] }
- 授权用户拥有在数据库db中表tb中列col的查询权限。
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "dli:column:select" ], "Resource": [ "dli:*:*:column:databases.db.tables.tb.columns.col" ] } ] }
- 授权用户拥有在所有区域中所有数据库的创建表权限。
- 示例2:拒绝
拒绝策略需要同时配合其他策略使用,即用户需要先被授予部分操作权限策略后,才可以在权限内设置拒绝策略,否则用户无任何权限的情况下,拒绝策略无实际作用。
用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。
- 授权用户不能创建数据库,删除数据库,提交作业(default队列除外),删除表。
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "dli:database:createDatabase", "dli:database:dropDatabase", "dli:queue:submitJob", "dli:table:dropTable" ], "Resource": [ "dli:*:*:database:*", "dli:*:*:queue:*", "dli:*:*:table:*" ] } ] }
- 授权用户不能在队列名为demo的队列上提交作业。
{ "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "dli:queue:submitJob" ], "Resource": [ "dli:*:*:queue:queues.demo" ] } ] }
- 授权用户不能创建数据库,删除数据库,提交作业(default队列除外),删除表。