授予/收回RAM角色

实例RAM角色是一种可授予实例的虚拟身份,为实例授予RAM角色后,其内部应用无需配置AccessKey,即可获取临时安全凭证,从而安全地访问其他云产品的API。这种方式极大地提升了账号密钥的安全性。同时借助访问控制RAM,实现精细化的权限管理。本文介绍如何为实例授予/回收RAM角色。

限制与前提

  • 该云主机的网络类型为虚拟私有云VPC。
  • 一台云主机只能被授予一个RAM角色。
  • 仅【运行中】状态的云主机可以被授予/收回RAM角色。
  • 当前仅支持华东-苏州 可用区四。

操作步骤

1.创建移动云服务角色

    1. 登录【访问控制RAM】控制台>【角色】>【创建角色】。
    2. 选择【移动云服务】,单击【下一步】。
    3. 输入【角色名称】。
    4. 选择云服务下拉框选择【云主机(ecs.ecloud.com)】,单击【完成】。

2.授予/收回云主机RAM角色

单实例操作:

  1.  登录云服务器控制台,点击【云主机ECS】进入云主机列表页。
  2. 选择您需要操作的云主机。
  3. 操作列单击【更多】>【实例配置】>【授予/收回RAM角色】。
  4. 在【授予/收回RAM角色】弹窗中,选择操作类型【授予】或【收回】
    1. 如为【授予】,则在【RAM角色】中选择要授予的角色,单击【确定】。
    2. 如为【收回】,则确认即将收回的【RAM角色】,单击【确定】。
说明
因单实例仅允许关联一个RAM角色,所以当为已关联RAM角色的实例再次授予时,即为替换为新的RAM角色。

批量操作:

  1. 登录云服务器控制台,点击【云主机ECS】进入云主机列表页。
  2. 勾选您需要操作的云主机。
  3. 在列表上方选择【更多操作】>【授予/收回RAM角色】。

3.获取临时密钥

移动云提供元数据服务,您可以在云主机内部通过访问元数据服务,获取到临时安全凭证,同时会确保临时访问凭证的有效性。更多关于元数据的介绍,请参见查看实例元数据

  1. 通过VNC远程登录云主机,具体请参见VNC远程登录。
  2. 执行以下命令,获取临时安全凭证。
    1. Linux实例
      curl http://169.254.169.254/latest/meta-data/ram_sts
    2. Windows实例(以Windows Server 2022 DataCenter 64位 英文版为例)
      curl.exe --http0.9 --output - http://169.254.169.254/latest/meta-data/ram_sts
说明
Windows操作系统需要下载curl工具,下载地址。

c. 临时安全凭证信息,包括:

  • accessKeyId:临时密钥ID
  • accessKeySecret:临时密钥
  • roleName:角色名称

4.使用临时密钥操作

(1)配置环境变量

将获取到的临时密钥配置为环境变量,以便 SDK 或 CLI 工具使用:

export ECLOUD_SECRET_ID="临时accessKeyId"
export ECLOUD_SECRET_KEY="临时accessKeySecret"

(2)访问资源

使用 SDK 或 CLI 工具访问目标资源。以使用 JAVA SDK 为例:

a. 工程已引入JAVA ECS SDK 包:

<dependency>
    <groupId>com.ecloud.sdk</groupId>
    <artifactId>ecloud-sdk-ecs</artifactId>
    <version>2.0.2</version>
</dependency>

b. 角色拥有操作 ECS的相应策略,初始化ECS Client 即可调用SDK内置云主机功能接口。

package com.ecloud.sdk.ecs.v2;

import com.ecloud.sdk.JSON;
import com.ecloud.sdk.config.Config;
import com.ecloud.sdk.ecs.v2.Client;
import com.ecloud.sdk.ecs.v2.model.*;
import com.ecloud.sdk.exception.SdkException;

import java.util.*;

public class DescribeRegionsSample {
  /**
   * 使用AK&SK初始化账号Client
   *
   * @param accessKey
   * @param secretKey
   * @param regionId
   * @return Client
   */
  private static Client createClient(String accessKey, String secretKey, String regionId) {
    Config config = new Config();
    config.setAccessKey(accessKey);
    config.setSecretKey(secretKey);
    config.setRegionId(regionId);
    return new Client(config);
  }

  public static void main(String[] args) throws SdkException {
    Client client = DescribeRegionsSample.createClient("临时accessKeyId", "临时accessKeySecret", "regionId");

    DescribeRegionsResponse result = client.describeRegions();
    System.out.println(new JSON().getGson().toJson(result));
  }
}

 

 

本文档内容整理自移动云官方帮助中心(查看原文),仅供参考。