您可以通过API创建、授权实例RAM角色,并将其授予实例。
前提条件
- 待授予实例RAM角色的ECS实例网络类型必须是专有网络VPC。
- 当您给ECS实例授予了实例RAM角色后,并希望在ECS实例内部部署的应用程序中访问阿里云产品的API时,您需要通过实例元数据获取实例RAM角色的临时授权Token。具体操作,请参见获取临时授权Token。
操作步骤
步骤一:创建实例RAM角色
调用CreateRole接口创建实例RAM角色。
设置RoleName参数,例如将其值置为EcsRamRoleDocumentTesting。
按如下策略设置参数AssumeRolePolicyDocument:
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"ecs.aliyuncs.com"
]
}
}
],
"Version": "1"
}
步骤二:授权实例RAM角色
说明 一台ECS实例一次只能授予一个实例RAM角色。
- 调用CreatePolicy接口新建授权策略。设置如下参数:
- 设置PolicyName参数,例如EcsRamRoleDocumentTestingPolicy。
- 按如下策略设置参数PolicyDocument:
{ "Statement": [ { "Action": [ "oss:Get*", "oss:List*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
- 调用AttachPolicyToRole接口授权角色策略。设置如下参数:
- 设置PolicyType参数为Custom。
- 设置PolicyName参数,例如EcsRamRoleDocumentTestingPolicy。
- 设置RoleName参数,例如EcsRamRoleDocumentTesting。
步骤三:授予实例RAM角色
调用AttachInstanceRamRole接口为实例授予RAM角色。
设置如下参数:
- 设置RegionId及InstanceIds参数指定一个ECS实例。
- 设置RamRoleName参数,例如EcsRamRoleDocumentTesting。
步骤四:(可选)收回实例RAM角色
调用DetachInstanceRamRole接口收回实例RAM角色。
设置如下参数:
- 设置RegionId及InstanceIds参数指定一个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用户能否直接执行角色策略赋予的权限。
- 登录RAM控制台。
- 授权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用户的权限。更多信息,请参见鉴权规则。