美文网首页
阿里云RAM科普系列:使用角色

阿里云RAM科普系列:使用角色

作者: 阿呆少爷 | 来源:发表于2017-09-29 00:27 被阅读385次

    阿里云的权限控制分为账号、角色和策略三个概念。账号包括主账号和子账号。策略可以直接附加到账号上面,当然更正规的做法是将策略附加到角色上面,然后指定不同的子账号来扮演(AssumeRole)具体的角色。这样做符合最小权限原则。接下来分别介绍一下这几个概念。

    首先我们创建一个子账号。子账号拥有自己的AK id和AK secret。阿里云SDK一般都支持通过设置AK id和AK secret来使用资源。不过这不是推荐的做法。

    image.png

    接着创建一个角色。角色分为普通账号服务账号两种。如果选择普通账号,那么就限制了只有这个主账号下的子账号能扮演这个角色。阿里云控制台里面,点击进入一个角色,可以看到角色详情角色授权策略两个入口,其中角色详情里面展示的是角色的信息,授予谁扮演本角色。角色授权策略则是附加到本角色的权限策略,扮演本角色之后这些权限策略将生效。

    image.png

    角色创建完成之后,就可以将策略附加在角色上面。可以选择阿里云提供的策略。所有云产品都默认提供XXXFullAccess和XXXReadOnlyAccess两种权限策略。用户也可以创建自定义策略。

    子账号能扮演什么角色,这个是在子账号的权限策略里面指定的。Resource指定为角色的ARN即可。这里也可以注意到RAM是Global Service。不需要指定region。

    image.png

    如果子账号无权扮演某个角色,会报下面这个错误。

    Traceback (most recent call last):
      File "sts.py", line 25, in <module>
        response = clt.do_action_with_exception(request)
      File "/Library/Python/2.7/site-packages/aliyunsdkcore/client.py", line 224, in do_action_with_exception
        raise ServerException(server_error_code, server_error_message, http_status=status, request_id=request_id)
    aliyunsdkcore.acs_exception.exceptions.ServerException: HTTP Status: 403 Error:NoPermission No permission perform sts:AssumeRole on this Role. Maybe you are not authorized to perform sts:AssumeRole or the specified role does not trust you RequestID: 960C7DCD-59BF-41E0-8B13-558B4A225600
    

    服务账号则用于用户在阿里云开通的不同服务之间授权。比如EMR需要在ECS上部署和运行Hadoop集群,并且使用大量云资源,ECS、OSS、VPC等服务都需要授予EMR相关的权限。可以观察到角色里面的Principal字段跟普通账号的差异。

    image.png image.png image.png image.png image.png

    另外还有一个比较有意思的东西就是PassRole。如果用户使用子账号,需要授权EMR访问别的云产品,那么这个子账号需要被授予PassRole权限。需要使用别的云产品的服务的FullAccess角色的权限策略里面都会有passRole这一项,比如EMR和ActionTrail。

    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "actiontrail.aliyuncs.com"
        }
      }
    }
    

    参考资料。

    1. RAM产品概述
    2. AssumeRole
    3. 阿里云STS token浅析,这篇文章详细介绍了如何使用STS token访问OSS资源,并且给出了Python SDK的玩法。

    相关文章

      网友评论

          本文标题:阿里云RAM科普系列:使用角色

          本文链接:https://www.haomeiwen.com/subject/zguuextx.html