使用Ecs OpenAPI正确模式

原文链接

阿里云账号体系

账号背景

在官网注册的账号,就是阿里云的普通账号,普通账号可以直接在阿里云控制台上创建/操作/查询/删除各种资源(对于Ecs产品来说,这些资源包括:实例-instance 磁盘-disk 镜像-image 快照-snapshot 安全组-securitygroup)。当您在阿里云拥有的资源数量越来越多,或者使用同一个账号管理资源的同事越来越多时,单一账号对资源进行操作就不很方便了。为了解决这个问题,阿里云提供了一套子账号的解决方案。

子账号概述

在您的普通账号名下,可以创建多个子账号,这些子账号并不是阿里云的普通账号,它完全隶属于您的阿里云账号,子账号的操作都将被映射成您阿里云账号的操作。子账号对您云账号中资源的操作权限均由阿里云账号在RAM(控制访问)中定义。

权限定义

权限的判定过程有2个:授权和鉴权。授权是由用户云账号操作的步骤,对自己的子账号授予一定的权限(称为授权策略),子账号只能进行在这个权限定义内的操作;鉴权是由后台自动进行的,子账号在进行每一个操作时,后台都会转化为一个权限描述(称为鉴权请求)来与授权策略进行对比,如果鉴权请求要求的权限小于授权策略,鉴权成功,执行用户请求,否则直接返回失败。
首先我们简单看一下授权策略,RAM将每个操作的权限主要分为两个部分:Action和Resource,一个经典的授权策略如下:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:StartInstance",
      "Resource": "acs:ecs:cn-hangzhou:123456:instance/i-test",
      "Condition": {
        "IpAddress": {
          "acs:SourceIp": "42.120.74.111"
        }
      }
    }
  ]
}
  • Action 主要由两部分组成,":"前面部分为产品,一般为产品名称的小写,":"后面部分是具体的操作,一般为操作对应接口的接口名,Ecs产品的接口定义见这里
  • Resource 主要为5部分组成,各部分定义为:acs:${产品}:${地域}:${账号ID}:${资源类型}/${资源ID}
  • 附加部分,Effect指本策略为Allow还是Deny行为,其他为对授权策略的进一步细化,详细取值介绍见这里
    所以上面的授权语句翻译成直白的意思就是允许被授予了这个授权策略的以下操作:从42.120.74.111 IP地址发起的,针对cn-hangzhou Region下用户ID为123456的用户实例i-test进行StartInstance操作。注意,这里用户ID一般只能设置自己阿里云账号ID或"*",即只能给用户授权操作自己的资源。

操作示例

下面我们使用一个操作示例来简单介绍一下子账号操作的基本步骤。**主账号** 为登录您的阿里云账号进行的操作,**子账号** 为按照下面第一个步骤使用子账号登录的操作。

主账号 登陆RAM控制台,在“用户管理”中“新建用户”,然后在该用户的管理界面可以在“Web控制台登录管理”中“启用控制台登录”。在概览页可以点击“RAM用户登录链接”使用刚刚创建的子账号登录。
子账号 在没有授权的情况下,子账号是没有任何权限的,因此此时打开Ecs控制台是看不到任何资源的。
主账号 在策略管理中新建一个策略,策略内容为附件中指定region权限,然后在RAM控制台,在刚创建的子用户上点授权,授予刚刚创建的权限。
子账号 返回Ecs控制台,这时已经可以看到华南1下面的实例,切换其他region,都是无法看到的。

更复杂的操作

刚才的操作是不涉及其他的资源操作,授权规则非常简单接下来我们就从创建实例开始,完成一个复杂规则的授权。

准备资源

创建实例主要涉及到两种资源:安全组和镜像,首先如果没有安全组,可以创建一个安全组,记住安全组ID(sg-xxxxx);镜像我们提供了系统镜像可以使用,您也可以使用自定义镜像(m-xxxxxx)。

授权规则

给子用户授权附件中创建实例权限,其中image和securitygroup后面填写的资源就是刚刚准备好的资源(如果使用系统镜像则可以不写镜像这种资源的授权)。这里"Action": "ecs:Describe*",意思是授权子账号进行Describe开头的操作,也就是查询操作。授权完成后,可以使用子账号操作。

操作

子账号登录API控制台,选择ECS的创建实例接口,在RegionId/ImageId/SecurityGroupId中填写相应的值(地域/镜像/安全组),如果创建VPC实例,需要再填VSwitchId参数,然后发送请求,在右侧可以看到请求结果,如果成功返回新的实例ID,说明授权无误。
然后修改其中一个参数(比如更换一个没有授权的安全组),发送请求后就可以看到没有授权的错误码。

进阶内容

其他几种典型授权

  • 启动实例
"Action": "ecs:StartInstance",
  • 关闭实例
"Action": "ecs:StopInstance",
  • 控制台创建实例
"Action": ["ecs:RunInstances","ecs:CreateInstance"],

授权中可使用的几种其他限制

  1. acs:CurrentTime

授权的有效时间,用于限定定时有效的授权,授权时使用如下,代表此条授权在2017-06-23T23:59:59Z前有效:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "DateLessThan": {
          "acs:CurrentTime": "2017-06-23T23:59:59Z"
        }
      }
    }
  ]
}

典型使用场景 在授权子用户访问资源时,需要限定子账号在某段时间内有权限,可以达到权限的最小化控制,授权可以自动失效。

  1. acs:SecureTransport

是否使用https进行调用,授权时使用如下,代表访问授权的接口时必须使用https协议:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "Bool": {
          "acs:SecureTransport": "true"
        }
      }
    }
  ]
}

典型使用场景 对于安全性要求较高的应用,公司可能会要求阿里云资源的管控操作必须使用安全的https连接,我们提供了对子账号可以限制调用协议的能力,可以让您限制实际的操作子账号的请求协议完全走安全的https。

  1. acs:SourceIp

来源ip限定,授权时使用如下,代表授权了此规则的用户,只能由"42.120.88.10", "42.120.66.0/24"两个IP(段)发起请求。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "IpAddress": {
          "acs:SourceIp": ["42.120.88.10", "42.120.66.0/24"]
        }
      }
    }
  ]
}

典型使用场景 对于安全性要求较高的应用,公司可能会要求阿里云资源的管控操作必须在公司或从特定VPN操作,这时,就需要设定这种IP限定,把公司的出口IP设置在授权策略中。

终极操作

我们还提供了批量资源授权的功能(同种资源分批授权),详见下一期。

附件

  • 指定region权限
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:DescribeInstances",
      "Resource": "acs:ecs:cn-shanghai:*:instance/*"
    }
  ]
}
  • 创建实例权限
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:CreateInstance",
      "Resource": [
        "acs:ecs:cn-hangzhou:*:image/m-xxxxxx",
        "acs:ecs:cn-hangzhou:*:securitygroup/sg-xxxxx",
        "acs:ecs:cn-hangzhou:*:instance/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "ecs:Describe*",
      "Resource": [
        "acs:ecs:cn-hangzhou:*:images/*",
        "acs:ecs:cn-hangzhou:*:securitygroup/*"
      ]
    }
  ]
}

原文链接



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值