您可以通过API创建、授权实例RAM角色,并将其授予实例。

前提条件

请确保您已经开通RAM服务,详情请参见RAM文档计费方法

背景信息

使用限制如下:
  • 只有专有网络(VPC)网络类型的ECS实例才能使用实例RAM角色。
  • 一个ECS实例一次只能授予一个实例RAM角色。
  • 当您给ECS实例授予了实例RAM角色后,并希望在ECS实例内部部署的应用程序中访问云产品的API时,您需要通过实例元数据获取实例RAM角色的临时授权Token。详情请参见获取临时授权Token
  • 如果您是通过RAM用户使用实例RAM角色,您需要通过阿里云账号授权RAM用户使用实例RAM角色。具体操作,请参见授权RAM用户使用实例RAM角色

操作步骤

步骤一:创建实例RAM角色

调用CreateRole接口创建实例RAM角色。

设置RoleName参数,例如将其值置为EcsRamRoleDocumentTesting

按如下策略设置参数 AssumeRolePolicyDocument
{
     "Statement": [
     {
         "Action": "sts:AssumeRole",
         "Effect": "Allow",
         "Principal": {
         "Service": [
         "ecs.aliyuncs.com"
         ]
         }
     }
     ],
     "Version": "1"
 }

步骤二:授权实例RAM角色

  1. 调用CreatePolicy接口新建授权策略。
    设置如下参数:
    • 设置RoleName参数,例如EcsRamRoleDocumentTestingPolicy
    • 按如下策略设置参数PolicyDocument
      {
           "Statement": [
               {
               "Action": [
                   "oss:Get*",
                   "oss:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
               }
           ],
           "Version": "1"
       }
  2. 调用AttachPolicyToRole接口授权角色策略。
    设置如下参数:
    • 设置PolicyType参数为Custom
    • 设置PolicyName参数,例如EcsRamRoleDocumentTestingPolicy
    • 设置RoleName参数,例如EcsRamRoleDocumentTesting

步骤三:授予实例RAM角色

调用AttachInstanceRamRole接口为实例授予RAM角色。

设置如下参数:
  • 设置RegionIdInstanceIds参数指定一个ECS实例。
  • 设置RamRoleName参数,例如EcsRamRoleDocumentTesting

步骤四:(可选)收回实例RAM角色

调用DetachInstanceRamRole接口收回实例RAM角色。

设置如下参数:
  • 设置RegionIdInstanceIds参数指定一个ECS实例。
  • 设置RamRoleName参数,例如EcsRamRoleDocumentTesting

步骤五:(可选)获取临时授权Token

您可以获得实例RAM角色的临时授权Token,该临时授权Token可以执行实例RAM角色的权限和资源,并且该临时授权Token会自动周期性地更新。操作步骤如下:

检索名为EcsRamRoleDocumentTesting的实例RAM角色的临时授权Token。
  • Linux实例:执行命令curl http://100.100.100.200/latest/meta-data/Ram/security-credentials/EcsRamRoleDocumentTesting
  • Windows实例:具体操作,请参见实例元数据
获得临时授权Token。返回示例如下:
{
"AccessKeyId" : "XXXXXXXXX",
"AccessKeySecret" : "XXXXXXXXX",
"Expiration" : "2017-11-01T05:20:01Z",
"SecurityToken" : "XXXXXXXXX",
"LastUpdated" : "2017-10-31T23:20:01Z",
"Code" : "Success"
}

步骤六:(可选)授权RAM用户使用实例RAM角色

说明 当您授权RAM用户使用实例RAM角色时,您必须授权RAM用户对该实例RAM角色的 PassRole权限。其中, PassRole决定该RAM用户能否直接执行角色策略赋予的权限。
  1. 登录RAM控制台
  2. 授权RAM用户使用实例RAM角色。具体操作,请参见为RAM用户授权
    {
            "Version": "2016-10-17",
            "Statement": [
                {
                "Effect": "Allow",
                "Action": [
                    "ecs: [ECS RAM Action]",
                    "ecs: CreateInstance",
                    "ecs: AttachInstanceRamRole",
                    "ecs: DetachInstanceRAMRole"
                ],
                "Resource": "*"
                },
                {
            "Effect": "Allow",
            "Action": "ram:PassRole",
            "Resource": "*"
                }
            ]
    }

    其中,[ECS RAM Action]表示可授权RAM用户的权限,详情请参见鉴权规则