跳到主要内容

ECS RAM 角色

EcsRamRole 从 ECS 实例元数据服务(IMDS)获取绑定到该实例的 RAM 角色的临时凭证。磁盘上不存储任何机密,凭证会自行续期,因此对于已经运行在 ECS 上的工作负载,这是合适的默认选择。

该模式只在已绑定角色的 ECS 实例上有效。在其他位置运行时,会因元数据服务不可达而失败。

使用阿里云 CLI 配置​

aliyun configure --mode EcsRamRole --profile instance

不支持 ecctl configure --mode EcsRamRole。--mode 只接受 OAuth,而 ecctl 原生 profile 只能解析 OAuth 或静态凭证。请把该 profile 放在兼容 aliyun 的配置文件中。

使用环境变量配置​

export ALIBABA_CLOUD_ECS_METADATA=<role-name>

未选中任何已存储的 profile 时,或者 ALIBABA_CLOUD_IGNORE_PROFILE=TRUE 强制走纯环境变量路径时,会读取环境变量路径。在环境变量链中,它的检测顺序位于 AccessKey 密钥对之后、完整 OIDC 组合之后。

另外两个变量控制元数据服务本身:

变量作用
ALIBABA_CLOUD_IMDSV1_DISABLED为 true 时拒绝回退到 IMDSv1,要求走加固的 IMDSv2 路径
ALIBABA_CLOUD_ECS_METADATA_DISABLED为 true 时完全禁用元数据凭证获取

两者都按布尔值读取;1 和 true 均可,不区分大小写。

profile 字段​

字段必填说明
mode否EcsRamRole。存在 ram_role_name 时推导得出
ram_role_name否为空时回退到 ALIBABA_CLOUD_ECS_METADATA

ram_role_name 可以留空。元数据服务能够报告已绑定的角色,因此空名称也能解析。提供名称更严格:当实例绑定的角色与 profile 期望的角色不一致时会失败。

{
"name": "instance",
"mode": "EcsRamRole",
"ram_role_name": "my-ecs-role",
"region_id": "cn-hangzhou"
}

验证​

ecctl --profile instance configure get
ecctl --profile instance --region cn-hangzhou ecs region list

请在实例本身上执行检查。从工作站执行时,命令失败在元数据获取环节而不是凭证有效性环节,这不是有用的信号。

续期​

来自 IMDS 的凭证是可续期的。ecctl 在整条命令期间保留该 provider,并在凭证接近过期时于后续已签名请求之前刷新,因此长时间操作不会中途失败。

第一个可续期凭证会固定规范化身份。刷新后属于其他角色的凭证会在其签名请求之前被拒绝,因此实例上的角色变化无法在命令中途静默切换账号。

相关文档​