全部产品
云服务器 ECS

使用实例 RAM 角色

更新时间:2017-06-07 08:51:41   分享:   

目前您只能通过 OpenAPI 使用实例 RAM 角色,控制台的功能即将开放。

什么是实例 RAM 角色

实例 RAM 角色属于 RAM 角色的一种,它的目的是让 ECS 实例扮演具有某些权限的角色,从而赋予实例一定的访问权限。

实例 RAM 角色允许您将一个 RAM 角色关联到 ECS 实例,在实例内部基于 STS 临时凭证(临时凭证将周期性更新)访问其他云产品。这样,一方面可以保证 Access Key 安全,另一方面也可以借助 RAM 实现权限的精细化控制和管理。

为什么需要实例 RAM 角色

ECS 实例中的应用程序通常是使用云账号或 RAM 用户账号的 Access Key (AccessKeyId/AccessKeySecret)访问阿里云各产品的 API。为了满足调用需求,一般需要直接把 Access Key 固化在实例中,比如写在配置文件中。但是,这种方式存在下面几个缺点:

  • 如果是云账号的 Access Key,其权限过大,不建议使用。

  • Access Key 写入磁盘的方式很难保证安全,存在较高的泄露风险。

  • 当您需要更换 Access Key 时,还必须更新所有实例和相关镜像。

使用实例 RAM 角色,您可以:

  • 安全地在 ECS 实例中使用 STS 临时凭证访问阿里云的其他云服务。

  • 为不同的实例赋予包含不同授权策略的角色,使它们对不同的云资源具有不同的访问权限。

  • 无需手动在实例中保存 Access Key,通过修改角色的授权即可变更权限。

使用说明

  • 必须是 VPC 网络类型的实例才能使用实例 RAM 角色。

  • 一个实例只能拥有一个角色。

  • 若要支持 RAM 子账号使用 RAM 角色,您在创建授权策略时,必须授以 PassRole 的权限,策略详情示例如下。

    1. {
    2. "Version": "2016-10-17",
    3. "Statement": [
    4. {
    5. "Effect": "Allow",
    6. "Action": [
    7. "ecs:CreateInstance",
    8. "ecs: AttachInstanceRamRole",
    9. "ecs: DetachInstanceRAMRole"
    10. ],
    11. "Resource": "*"
    12. },
    13. {
    14. "Effect": "Allow",
    15. "Action": "ram:PassRole",
    16. "Resource": "*"
    17. }
    18. ]
    19. }

    注意:子账号必须被授权对某角色的 PassRole 权限,这样可以避免实例角色的权限被未授权子账号滥用。

  • 您需要通过 Meta Data 获取实例角色的临时授权凭证。

    • 实例上的应用程序通过 http://100.100.100.200/latest/meta-data/ram/security-credentials/role-name 获取 STS 临时凭证。使用该临时凭证可以操作角色授予的操作和资源。其中临时凭证将自动周期性更新。

    • 您可以使用以下命令检索名为 ossaccess 的实例 RAM 角色的安全证书。
      curl http://100.100.100.200/latest/meta-data/Ram/security-credentials/ossaccess
      下面是示例输出。

      1. {
      2. "Code" : "Success",
      3. "LastUpdated" : "2012-04-26T16:39:16Z",
      4. "AccessKeyId" : "AKIAIOSFODNN7EXAMPLE",
      5. "AccessKeySecret" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
      6. "SecurityToken" : "token",
      7. "Expiration" : "2017-05-27T22:39:16Z"
      8. }

API 接口

实例 RAM 角色相关的 API 接口包括:

本文导读目录
本文导读目录
以上内容是否对您有帮助?