专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Open API

使用Ecs OpenAPI准确模式

发布时间:2011-07-03 06:57:01 文章来源:www.iduyao.cn 采编人员:星星草
使用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/*"
      ]
    }
  ]
}

 

原文链接

 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 正式开始学习云计算解决办法

    正式开始学习云计算 RT 我是学JAVA的 由于工作需要开始学习云计算 谢谢各位大神帮助 以下是我的观点 云计...

  • 关于云技术,该如何解决

    关于云技术 谁能给我讲讲云计算到底是嘛东西 ------解决方案-------------------- 云计算(英语:cloud computing),是一种基于互联网...

  • 基于命令行的API函数解释执行工具,该如何解决

    基于命令行的API函数解释执行工具 求:基于命令行的API函数解释执行工具。 也就是能执行API函数的外部CMD命令。 如果没有这样...

  • webAPI和socket相比?该怎么处理

    webAPI和socket相比? 现在各大网站都提供其webAPI给开发者开发应用,如微博API等。但webAPI大多需要授权,而且有些功能还会根据授权的...

  • Facebook开放构架,平台圈地竞争升级解决思路

    Facebook开放构架,平台圈地竞争升级 12月13日,Facebook宣布将把开发平台架构开放给其它社交网站: Facebook 资深平台经理Ami Vora日...

  • 计算机视觉的课程安排,该怎么解决

    计算机视觉的课程安排 我想问一下计算机视觉的研究方向的课程安排有哪些???要详细一点的,谢谢各位了!!! ------解决方案---------------...

  • 求FaceBook开发实例解决办法

    求FaceBook开发实例 rt 对OpenAPI开发不了解,想了解一下…… 不知道怎么入手了解。所以想要个实例看看。 ------解决方案--------...

  • opengl要用到几个库解决办法

    opengl要用到几个库 学过opengl的同学们,我刚上手不久,对许多函数还不是很了解,不知道用GL做一些图形程序时要用到哪些库。起初我只...

  • opengl图形旋转与放缩有关问题

    opengl图形旋转与放缩问题 下面是程序代码的一部分,运行结果是图形不能实现绕形心旋转, 请高手指点一下: // Begin a new triangle ...

  • ~注册facebook API key的有关问题.

    ~~~~~注册facebook API key的问题..... 我的一个桌面应用程序,需要向facebook上面上传图片。是不是需要先注册api key才能访问face...

热门推荐: