文档首页/ 统一身份认证服务 IAM/ 最佳实践/ 基于IAM授权的策略示例
更新时间:2025-06-27 GMT+08:00
分享

基于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:授权用户查看关联资源
    查看资源A关联了哪些其他资源,不仅需要授权资源A的查询策略,还需要授权其他资源的查询策略。以查看安全组关联实例举例,安全组可以关联的实例类型包括服务器、扩展网卡、辅助弹性网卡等。查看安全组关联实例列表的授权语句策略描述如下:
    {  
        "Version": "1.1",  
        "Statement": [  
            {  
                "Effect": "Allow",  
                "Action": [  
                        "vpc:ports:get",
                        "vpc:securityGroups:get",  
                        "vpc:subNetworkInterfaces:list"  
                     "  
                ]  
            }  
        ]  
    }

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"
                  ]
              }
          ]
      }

相关文档