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

使用限制

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

前提条件

您已经开通RAM服务,参见RAM文档开通方法开通RAM服务。

步骤1:创建实例RAM角色

  1. 调用接口CreateRole创建实例RAM角色。
  2. 设置RoleName参数,如将其值置为EcsRamRoleDocumentTesting。
  3. 按如下策略设置AssumeRolePolicyDocument
    {
         "Statement": [
         {
             "Action": "sts:AssumeRole",
             "Effect": "Allow",
             "Principal": {
             "Service": [
             "ecs.aliyuncs.com"
             ]
             }
         }
         ],
         "Version": "1"
     }

步骤2:授权实例RAM角色

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

步骤3:授予实例RAM角色

  1. 调用接口AttachInstanceRamRole为实例授予RAM角色。
  2. 设置RegionIdInstanceIds参数指定一个ECS实例。
  3. 设置RamRoleName参数,如EcsRamRoleDocumentTesting

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

  1. 调用接口DettachInstanceRamRole收回实例RAM角色。
  2. 设置RegionIdInstanceIds参数指定一个ECS实例。
  3. 设置RamRoleName参数,如EcsRamRoleDocumentTesting

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

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

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

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

说明 当您授权RAM用户使用实例RAM角色时,您必须授权RAM用户对该实例RAM角色的 PassRole权限。其中, PassRole决定该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用户的权限,请参见鉴权规则

相关文档