阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 2075阅读
  • 0回复

[云安全技术和产品专区 ]访问控制身份管理角色

级别: 论坛粉丝
发帖
1227
云币
2325
角色,与用户一样,都是 RAM 中使用的身份。与 RAM 用户相比,RAM 角色是一种虚拟用户,它没有确定的身份认证密钥,且需要被一个受信的实体用户扮演才能正常使用。 21W>}I"0?  
本文详细解释了角色的 [url=https://help.aliyun.com/document_detail/28649.html?spm=5176.doc28648.6.560.2BsEPz#理解 RAM 角色]概念[/url] 和 [url=https://help.aliyun.com/document_detail/28649.html?spm=5176.doc28648.6.560.2BsEPz#RAM 角色应用场景]应用场景[/url],帮助您正确理解;也介绍了 RAM 角色的 [url=https://help.aliyun.com/document_detail/28649.html?spm=5176.doc28648.6.560.2BsEPz#RAM 角色类型]类型[/url]、[url=https://help.aliyun.com/document_detail/28649.html?spm=5176.doc28648.6.560.2BsEPz#创建 RAM 角色]创建方法[/url] 和 [url=https://help.aliyun.com/document_detail/28649.html?spm=5176.doc28648.6.560.2BsEPz#使用 RAM 角色]使用方法[/url],指导您正确实践。 ZjbMk 3Y  
[backcolor=transparent]注意:如果没有特别说明,文中出现的 [backcolor=transparent]角色 都是指 [backcolor=transparent]RAM 角色。 Y'58.8hl  
理解 RAM 角色 Ymx/N+Jl  
RAM 角色(RAM-Role)是一种虚拟用户(或影子账号),它是 RAM 用户类型的一种。 A+>+XA'  
  • RAM 角色不同于教科书式角色(Textbook-Role)。教科书式角色(或传统意义上的角色)是指一组权限集合,类似于 RAM 里的授权策略(Policy)。如果一个用户被赋予了这种角色,也就意味着该用户被赋予了一组权限,然后该用户就能访问被授权的资源。
  • RAM 角色作为虚拟用户,它有确定的身份,可以被赋予一组授权策略(Policy),但它没有确定的身份认证密钥(登录密码或 AccessKey)。
    %vgn>A?]1  
    [backcolor=transparent]虚拟用户 vs 实体用户: 虚拟用户与实体用户的区别在于是否能被直接身份认证:实体用户拥有确定的登录密码或 AccessKey,比如云账号、RAM-User 账号、云服务账号。
  • 虚拟用户没有确定的认证密钥,比如 RAM-Role。
rqSeh/<iD  
相比于 RAM 用户,在使用方法上 RAM 角色需要被一个授信的实体用户扮演,扮演成功后实体用户将获得 RAM 角色的临时安全令牌,使用这个临时安全令牌就能以角色身份访问被授权的资源。 PU[] Nw  
使用须知 1#6c sZW5  
RAM-Role 必须与一种实体用户身份 [backcolor=transparent]联合 起来才能使用。 _>0 I9.[5  
  • 如果一个实体用户要想使用被赋予的某个 RAM 角色,实体用户必须先以己身份登录,然后执行 [backcolor=transparent]切换到角色 操作将自己从 [backcolor=transparent]实体身份 切换到 [backcolor=transparent]角色身份。
    bt"*@NJ$  
    当切换到角色身份后,将只能执行该角色身份被授权的所有操作,而登录时实体身份所对应的访问权限被隐藏。
  • 如果用户希望从 [backcolor=transparent]角色身份 回到 [backcolor=transparent]实体身份,那么只需执行 [backcolor=transparent]切回登录身份 操作。
    iU5M_M$G  
    此时将拥有实体身份所对应的访问权限,而不再拥有角色身份所拥有的权限。
s@V4ny9x  
相关概念 Dy mf  
与 RAM 角色相关的概念间关系释义如下图所示:
PIl:z?q({  
相关概念的具体释义见下表:
名称释义
RoleARNRoleARN 是角色的全局资源描述符,用来指定具体角色。
  • RoleARN 遵循阿里 ARN 的命名规范。比如,某个云账号下的 devops 角色的 ARN 为:acs:ram:*:1234567890123456:role/devops。
  • 创建角色后,可在其 [backcolor=transparent]角色详情 页查看其 Arn。
受信演员角色的受信演员是指可以扮演角色的实体用户身份。
  • 创建角色时必须指定受信演员,角色只能被受信的演员扮演。
  • 受信演员可以是受信的云账号,或者受信服务。
授权策略一个角色可以绑定一组授权策略(Policy)。没有绑定授权策略的角色也可以存在,但不能使用。
扮演角色扮演角色(AssumeRole)是实体用户获取角色身份的安全令牌的方法。一个实体用户通过调用 AssumeRole 的 API 可以获得角色的安全令牌,使用安全令牌可以访问云服务 API。
切换身份切换身份(SwitchRole)是在控制台中实体用户从当前登录身份切换到角色身份的方法。
  • 一个实体用户登录到控制台之后,可以切换到被许可扮演的某一种角色身份,然后以角色身份操作云资源。切换到角色身份后,原实体用户身份的访问权限将被屏蔽。
  • 用户不需要使用角色身份时,可以从角色身份切换回原来的登录身份。
角色令牌角色令牌是角色身份的一种临时访问密钥。角色身份没有确定的访问密钥,当一个实体用户要使用角色时,必须通过扮演角色来获取对应的角色令牌,然后使用角色令牌来调用阿里云服务 API。
AfB,`l`k  
RAM 角色应用场景 qJj"WU5  
RAM 角色主要用于解决委托其他云账号及其下 RAM 用户操作您所控制的资源、委托云服务操作您所控制的资源。 l*^c?lp)  
"]B:QeMeF!  
跨账号的资源操作与授权管理 ^,*!Qk<c  
[backcolor=transparent]场景概述:企业 A 和 企业 B 代表不同的企业。企业 A 购买了多种云资源(如 ECS 实例/ RDS 实例/ SLB 实例/ OSS 存储空间/…)来开展业务。
需求说明解决方案
企业 A 希望能专注于业务系统,而将云资源运维监控管理等任务委托或授权给企业 B。云账号 A 在 RAM 中创建一个角色,给角色授予合适的权限,并允许云账号 B 使用该角色。
企业 B 可以进一步将代运维任务分配给 B 的员工。B 可以精细控制其员工对 A 的云资源操作权限。如果云账号 B 下的某个员工(RAM 用户)需要使用该角色,那么云账号 B 可以自主进行授权控制。代运维操作时,账号 B 下的 RAM 用户将使用被授予的角色身份来操作账号 A 的资源。
如果 A 和 B 的这种代运维合同终止,A 随时可以撤销对 B 的授权。如果账号 A 与账号 B 的合作终止,A 只需要撤销账号 B 对该角色的使用。一旦账号 B 对角色的使用权限被撤销,那么 B 下的所有 RAM 用户对该角色的使用权限将被自动撤销。
\$$DM"+:;H  
`B-jwVrN(  
临时授权移动 app 客户端直接操作您所控制的资源 )T&ZiHIJ3  
[backcolor=transparent]场景概述:企业 A 开发了一款移动 app,并购买了 OSS 服务。移动 app 需要上传数据到 OSS(或从 OSS 下载数据);由于移动 app 运行在用户自己的终端设备上,这些设备并不受 A 的控制。出于安全考虑,A 不能将访问密钥保存到移动 app 中。
需求说明解决方案
企业 A 不希望所有 app 都通过 appServer 来进行数据中转,而希望让 app 能直连 OSS 上传/下载数据。
  • 云账号 A 在 RAM 中创建一个角色,给角色授予合适的权限,并允许 appServer(以 RAM 用户身份运行)使用该角色。
  • 当 app 需要直连 OSS 上传/下载数据时,appServer 可以使用角色,获取角色的一个临时安全令牌并传送给 app,app 就可以使用临时安全令牌直接访问 OSS API。
企业 A 希望将安全风险控制到最小,比如,每个移动 app 直连 OSS 时都必须使用最小权限的访问令牌,而且访问时效也要很短(比如30分钟)。如果需要更精细地控制每个 app 的权限,appServer 可以在使用角色时进一步限制临时安全令牌的资源操作权限,比如,不同 app 用户只能操作不同的子目录,那么 appServer 在使用角色时就可以进行这种限制。
f@rR2xZoQ  
4zzJ5,S1  
委托云服务操作您的云资源 QZw`+KR  
[backcolor=transparent]场景概述:企业 A 购买了云服务器ECS,并在其中部署了一款应用程序;应用程序需要访问 A 的 OSS 存储空间。通常情况下,
  • 云账号 A 要将其 AccessKey(AK) 保存在应用程序的配置文件中,并在定期更换 AK 时修改应用程序的配置文件。
  • 在进行多地域一致性部署时,AK 会随镜像以及使用镜像创建的实例扩散出去;这种情况下,当 A 需要更换 AK 时,就需要逐台更新和重新部署实例与镜像。
需求说明解决方案
  • 安全性考虑,A 不希望其应用程序通过 AK 取得其 API 操作的完整权限,希望应用程序以临时凭证访问其他产品的 API。
  • 操作性考虑,A 不希望在应用程序端更新 AK,也不希望在多地域维护 AK。
使用 RAM 服务角色:
  • 云账号 A 在 RAM 中创建一个 ECS 服务角色(只允许 ECS 实例扮演),给角色授予合适的权限(如 OSS 的只读权限),并将该服务角色关联其 ECS 实例。
  • 在连接 ECS 实例后,通过访问 ECS 实例元数据获取服务角色的 STS 临时身份凭证;ECS 中的应用程序使用该临身份凭证访问 OSS。
Qv~lH&jG  
[backcolor=transparent]注意:其他场景如授权 EMR 操作客户的 ECS,函数计算 FC 操作客户的 OSS,媒体转码 MTS 操作用户的 OSS 数据等需要跨产品相互调用的场景,都可使用 RAM 服务角色授权操作。参考 创建服务角色 查看 RAM 提供的所有服务角色类型及场景。 #? u#=]  
RAM 角色类型 clyZD`*  
RAM 支持以下两种类型的角色:
  • [backcolor=transparent]用户角色: 允许 RAM 用户所扮演的角色。扮演角色的 RAM 用户可以属于自己云账号,也可以是属于其他云账号。用户角色主要用来解决 [backcolor=transparent]跨账号访问 和 [backcolor=transparent]临时授权 问题
  • [backcolor=transparent]服务角色: 允许云服务所扮演的角色。服务角色主要用于 [backcolor=transparent]授权云服务代理 您进行资源操作。
;auT!a~a#  
创建 RAM 角色 ]O]6O%.ao  
通过 RAM 控制台来创建 RAM 角色包含以下步骤:
  1. 选择角色类型
  2. 选择受信的演员身份
  3. 填写角色名称
  4. 给角色绑定授权策略
+6-_9qRq  
创建用户角色 'ioX,KD  
操作步骤如下:
  1. 登录到 RAM 控制台
  2. 在左侧导航栏单击 [backcolor=transparent]角色管理。
  3. 单击右上角 [backcolor=transparent]新建角色。
  4. 在选择角色类型子页,单击 [backcolor=transparent]用户角色。
  5. *5m4 j=-  
    在填写类型信息子页,选择 [backcolor=transparent]受信云账号,如下图所示: Klrd|;C  
    • 若创建的角色是给您自己名下的 RAM 用户使用(比如授权移动 app 客户端直接操作 OSS 资源),请选择 [backcolor=transparent]当前云账号 为受信云账号。
    • 若创建的角色是给其他云账号名下的 RAM 用户使用(比如跨账号的资源授权),请选择 [backcolor=transparent]其他云账号,并在受信云账号 ID 中填写其他云账号的 ID。
  6. k}18 ~cWM  
    在配置角色基本信息子页,输入 [backcolor=transparent]角色名称 和 [backcolor=transparent]备注 后,单击 [backcolor=transparent]创建。
  7. xU9T8Lw  
    创建成功。成功创建角色后,角色没有任何权限,单击 [backcolor=transparent]授权 可直接为该角色授权([backcolor=transparent]编辑授权策略),授权方法请参考授权
  8. .|UIZwW0  
    至此,您已完成用户角色的创建。 x`n7D  
    返回 RAM 控制台,在 [backcolor=transparent]角色管理 页面找到新创建的角色(可使用角色名进行模糊查询),单击其 [backcolor=transparent]角色名称 或其对应操作列下的 [backcolor=transparent]管理,可以查看相应的角色详情,如下图所示:
    jJbS{1z  
    [+;>u|  
    创建服务角色 \8Y62  
    操作步骤如下:
    1. 登录到 RAM 控制台
    2. 在左侧导航栏单击 [backcolor=transparent]角色管理。
    3. 单击右上角 [backcolor=transparent]新建角色。
    4. U'*~Ju  
      在选择角色类型子页,单击 [backcolor=transparent]服务角色。可用的服务角色包括:
      • MTS 多媒体转码服务,用于将 OSS Bucket 设置为 MTS 任务的数据源时,创建以 MTS 为受信服务的角色,并使用 MTS 服务扮演该角色访问 OSS 中的数据。
      • OAS 归档存储服务,用于将 OSS Bucket 设置为归档存储服务的数据源时,创建以归档存储为受信服务的角色,并使用归档存储服务扮演该角色访问 OSS 中的数据
      • LOG 日志服务,用于将日志服务收集的日志导入 OSS 时,创建以日志服务为受信服务的角色,并使用日志服务扮演该角色将数据写入 OSS。
      • ApiGateway API 网关服务,用于将函数服务设置为 API 网关的后端服务时,创建以 API 网关服务为受信服务的角色,并使用 API 网关扮演该角色调用函数服务。
      • ECS 云服务器,用于授权 ECS 服务访问您在其他云服务中的云资源。
  9.  |pgrR7G'  
    在填写类型信息子页,选择 [backcolor=transparent]受信服务。
  10. Ndmki 7A  
    在配置角色基本信息子页,输入 [backcolor=transparent]角色名称 和 [backcolor=transparent]备注 后,单击 [backcolor=transparent]创建。
  11. ,)?!p_*@:  
    创建成功。成功创建角色后,角色没有任何权限,单击 [backcolor=transparent]授权 可直接为该角色授权([backcolor=transparent]编辑授权策略),授权方法请参考授权
  12. yi.GD~69  
    至此,您已完成服务角色的创建。 T\v~"pMu*0  
    返回 RAM 控制台,在 [backcolor=transparent]角色管理 页面找到新创建的角色(可使用角色名进行模糊查询),单击其 [backcolor=transparent]角色名称 或其对应操作列下的 [backcolor=transparent]管理,可以查看相应的角色详情。 e5 N$+P"  
    使用 RAM 角色 <]Btx;}  
    [backcolor=transparent]RAM 角色只能通过 RAM 用户身份来扮演(AssumeRole)使用,不允许受信云账号以自己身份扮演角色。因此,受信云账号必须通过创建一个 RAM 用户账号,并授予该 RAM 用户账号的 AssumeRole 权限,然后以 RAM 用户身份去扮演角色。 E\1e8Wyh  
    操作步骤:
    1. 创建一个 RAM 用户,并为该用户创建 AccessKey 或设置登录密码。
    2. 给该 RAM 用户授权,授权时添加系统授权策略:AliyunSTSAssumeRoleAccess。
    Xx,Rah)X3  
    操作控制台 <5O:jd  
    使用角色身份进行控制台操作的步骤如下:
    1. RAM 用户登录控制台。
    2. 在右上角账号菜单下,选择 [backcolor=transparent]切换身份。 &[b(Lx|i  
      例如,company2(企业别名)下的 RAM 用户 zhangsan 登录控制台之后,控制台右上角会显示该用户的身份信息,如下图所示: )6b`1o!7  
      单击 [backcolor=transparent]切换身份,进入 [backcolor=transparent]角色切换 的页面,选择相应的 [backcolor=transparent]企业别名 和 [backcolor=transparent]角色名(假设当前用户已被授权允许扮演 company1(企业别名)下的 ecs-admin 角色),单击 [backcolor=transparent]切换。 fL(_V/p^  
      切换成功后,将以角色身份访问控制台。此时控制台右上角将显示角色身份(即当前身份)和登录身份。 z?<Xx?Kk  
    3. 在扮演角色身份时,选择 [backcolor=transparent]返回登录身份 可以切换回登录身份。
    p54 e'Zb  
    访问云服务 API +k;][VC[O  
    当 RAM 用户被授予 AssumeRole 权限之后,可以使用其 AccessKey 调用安全令牌服务(STS) 的 AssumeRole 接口,以获取某个角色的临时安全令牌。关于 AssumeRole API 的调用方法,请参考 STS API文档 q~. .Z Y`7  
    [ 此帖被反向一觉在2017-10-31 14:43重新编辑 ]
    发表主题 回复主题
    « 返回列表上一主题下一主题

    限100 字节
    如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
     
    验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
    上一个 下一个
        ×
        全新阿里云开发者社区, 去探索开发者的新世界吧!
        一站式的体验,更多的精彩!
        通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)