本文提供了在ECS通过访问控制实现团队或者部门成员鉴权、RAM用户授权、RAM角色授权、标签鉴权、以及跨云服务授权的Action列表和Resource列表,适用于创建自定义策略实现精细化权限控制的业务需求。
背景信息
如果您无需授权就能访问目标资源,可以跳过此章节。
默认情况下,主账号或者RAM账号均能使用ECS控制台或ECS API完整操作自己创建的ECS资源。在以下场景中,会涉及到操作授权问题:
RAM账号刚创建时没有权限操作主账号的资源时。
从其他阿里云服务访问ECS资源,或者ECS访问其他阿里云服务时。
操作具有权限控制的ECS资源前,需要资源拥有者授权目标资源和目标API行为权限。
操作具有标签鉴权的ECS资源前,需要资源拥有者授权目标资源和目标API行为权限。
当其他账号通过ECS API访问主账号资源时,阿里云ECS首先向RAM发起权限检查,以确保资源拥有者已经将相关权限授予调用者。不同的ECS API会根据涉及的资源以及API语义确定需要检查哪些资源的权限。更多信息,请参见访问控制产品文档和访问控制API文档。
自定义策略
访问控制RAM可基于权限策略,管理用户身份,控制云资源的访问和操作权限。权限策略是一组访问权限的集合。结构包括版本号和授权语句列表,每条授权语句包括授权效果(Effect)、操作(Action)、资源(Resource)以及条件(Condition,可选项)。
标签可用于标识云资源,您可以利用标签将云资源进行分组管理和归类,实现资源的分类管理。
标签和RAM结合,将标签作为权限策略的匹配条件,可以实现云资源精细化权限管理。支持的标签鉴权条件如下:
标签鉴权条件 | 说明 |
| 限制在请求中必须传入特定的标签。 如果API请求中没有标签参数,则不能使用 |
| 限制指定的资源必须包含特定的标签。 如果API请求中没有资源ID参数,则不能使用 |
您可以通过RAM控制台或者调用RAM API CreatePolicy创建一个自定义策略。在以下自定义策略中,您需要根据JSON模板文件填写。其中,Action和Resource参数取值取自鉴权列表中的ARN(Aliyun Resource Name)值,Condition参数取值取自API接口标签鉴权说明。更多信息,请参见通过RAM用户控制资源访问和权限策略基本元素。
关于如何使用标签鉴权,请参见通过标签实现精细化权限管理。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow"
"Action": [
"ecs:[ECS RAM Action]",
"ecs:DescribeInstances"
],
"Resource": [
"[ECS RAM Action Resource]",
"acs:ecs:$regionid:15619224785*****:instance/i-bp1bzvz55uz27hf*****"
],
"Condition": {
"StringEquals": {
"acs:RequestTag/${key}":"${value}"
}
},
{
"Effect": "Allow"
"Action": [
"ecs:[ECS RAM Action]",
"ecs:DescribeInstances"
],
"Resource": [
"[ECS RAM Action Resource]",
"acs:ecs:$regionid:15619224785*****:instance/i-bp1bzvz55uz27hf*****"
],
"Condition": {
"StringEquals": {
"acs:ResourceTag/${key}":"${value}"
}
}
]
}
鉴权列表
Resource格式说明,请参见相关术语。
实例
Action | Resource | Action说明 |
CreateInstance |
| 创建一台包年包月或者按量付费ECS实例。 |
DeleteInstance | acs:ecs:$regionid:$accountid:instance/$instanceId | 释放一台按量付费实例或者到期的包年包月实例。 |
DescribeInstances |
| 查询一台或多台ECS实例的详细信息。 |
DescribeInstanceStatus | acs:ecs:$regionid:$accountid:instance/* | 获取一台或多台ECS实例的状态信息。 |
DescribeInstanceVncUrl | acs:ecs:$regionid:$accountid:instance/$instanceId | 查询一台ECS实例的Web管理终端地址。 |
ModifyInstanceAttribute |
| 修改一台ECS实例的部分信息,包括实例密码、名称、描述、安全组、主机名和自定义数据等。如果是突发性能实例,可以切换这台实例的性能突发模式。 |
ModifyInstanceAutoReleaseTime | acs:ecs:$regionid:$accountid:instance/$instanceId | 为一台按量付费ECS实例设定或者取消自动释放时间。设置自动释放时请谨慎操作,配置的时间到期后将自动释放ECS实例。 |
ModifyInstanceChargeType | acs:ecs:$regionid:$accountid:instance/$instanceId | 更换一台或者多台ECS实例的计费方式。支持在按量付费实例和包年包月实例间相互转换,同时可以将实例挂载的所有按量付费云盘转换为包年包月云盘。 |
ModifyInstanceVncPasswd | acs:ecs:$regionid:$accountid:instance/$instanceId | 修改一台ECS实例的Web管理终端密码。 |
ModifyPrepayInstanceSpec | acs:ecs:$regionid:$accountid: | 升级或者降低一台包年包月ECS实例的实例规格,新实例规格将会覆盖实例的整个生命周期。 |
RebootInstance | acs:ecs:$regionid:$accountid:instance/$instanceId | 重启一台处于运行中(Running)状态的ECS实例。 |
RenewInstance | acs:ecs:$regionid:$accountid:instance/$instanceId | 续费一台包年包月ECS实例。 |
RunInstances |
| 创建一台或多台按量付费或者包年包月ECS实例。 |
StartInstance | acs:ecs:$regionid:$accountid:instance/$instanceId | 启动一台实例。 |
StopInstance | acs:ecs:$regionid:$accountid:instance/$instanceId | 停止运行一台实例。 |
块存储
Action | Resource | Action说明 |
CreateDisk |
| 创建一块按量付费或包年包月数据盘。 |
AttachDisk |
| 为一台ECS实例挂载一块按量付费数据盘。 |
DescribeDisks |
| 查询一块或多块您已经创建的云盘以及本地盘。 |
ModifyDiskAttribute | acs:ecs:$regionid:$accountid:disk/$diskId | 修改您的磁盘的属性或者明细。 |
ResetDisk | acs:ecs:$regionid:$accountid:disk/$diskId | 使用磁盘的历史快照回滚至某一阶段的磁盘状态。 |
ResizeDisk | acs:ecs:$regionid:$accountid:disk/$diskId | 扩容一块云盘,支持扩容系统盘和数据盘。 |
ReplaceSystemDisk |
| 更换一台ECS实例的系统盘或者操作系统。 |
DetachDisk |
| 从一台实例上卸载一块按量付费磁盘。 |
DeleteDisk | acs:ecs:$regionid:$accountid:disk/$diskId | 释放一块按量付费数据盘。 |
预留实例券
Action | Resource | Action说明 |
PurchaseReservedInstancesOffering | acs:ecs:$regionid:$accountid:reservedinstance | 购买一张预留实例券。 |
DescribeReservedInstances | acs:ecs:$regionid:$accountid:reservedinstance | 查询已经购买的预留实例券。 |
ModifyReservedInstances | acs:ecs:$regionid:$accountid:reservedinstance | 拆分、合并或修改预留实例券。 |
镜像
Action | Resource | Action说明 |
CreateImage |
| 创建一份自定义镜像。 |
ImportImage | acs:ecs:$regionid:$accountid:image/* | 导入您已有的镜像文件到云服务器ECS,并作为自定义镜像出现在相应地域中。 |
CopyImage |
| 复制一个地域下的自定义镜像到其他地域。 |
CancelCopyImage | acs:ecs:$regionid:$accountid:image/$imageNo | 取消正在进行中的复制镜像(CopyImage)任务。 |
ExportImage | acs:ecs:$regionid:$accountid:image/$imageNo | 导出您的自定义镜像到与该自定义镜像同一地域的OSS Bucket里。 |
DescribeImages |
| 查询您可以使用的镜像资源。 |
ModifyImageAttribute | acs:ecs:$regionid:$accountid:image/$imageNo | 修改一份自定义镜像的名称或描述信息。 |
DeleteImage | acs:ecs:$regionid:$accountid:image/$imageNo | 删除一份自定义镜像。 |
快照
Action | Resource | Action说明 |
CreateSnapshot |
| 为一块云盘创建一份快照。 |
DescribeSnapshots |
| 查询一台ECS实例或一块云盘所有的快照列表。 |
ModifySnapshotAttribute | acs:ecs:$regionid:$accountid:snapshot/$snapshotId | 修改一份快照的名称或描述。 |
DeleteSnapshot | acs:ecs:$regionid:$accountid:snapshot/$snapshotId | 删除指定的快照。 |
CreateAutoSnapshotPolicy | acs:ecs:*:$accountid:snapshot/* | 创建一条自动快照策略。 |
CancelAutoSnapshotPolicy | acs:ecs:*:$accountid:snapshot/* | 取消一块或者多块云盘的自动快照策略。 |
DescribeSnapshotLinks |
| 查询云盘快照链。 |
DeleteAutoSnapshotPolicy | acs:ecs:*:$accountid:snapshot/* | 删除一条自动快照策略。 |
ApplyAutoSnapshotPolicy | acs:ecs:*:$accountid:snapshot/* | 为一块或者多块云盘应用自动快照策略或者更换云盘当前应用的自动快照策略。 |
安全组
Action | Resource | Action说明 |
CreateSecurityGroup | acs:ecs:$regionid:$accountid:securitygroup/* | 新建一个安全组。新建的安全组,默认只允许安全组内的实例互相访问,安全组外的一切通信请求会被拒绝。若您想允许其他安全组实例的通信请求,或者来自互联网的访问请求,需要授权安全组权限(AuthorizeSecurityGroup)。 |
AuthorizeSecurityGroup | acs:ecs:$regionid:$accountid:securitygroup/$groupNo | 增加一条安全组入方向规则。 |
AuthorizeSecurityGroupEgress | acs:ecs:$regionid:$accountid:securitygroup/$groupNo | 增加一条安全组出方向规则。 |
RevokeSecurityGroup | acs:ecs:$regionid:$accountid:securitygroup/$groupNo | 删除一条安全组入方向规则,撤销安全组入方向的权限设置。 |
RevokeSecurityGroupEgress | acs:ecs:$regionid:$accountid:securitygroup/$groupNo | 删除一条安全组出方向规则,撤销安全组出方向的访问权限。 |
JoinSecurityGroup |
| 将一台ECS实例加入到指定的安全组。 |
LeaveSecurityGroup |
| 将一台ECS实例移出指定的安全组。 |
DescribeSecurityGroupAttribute | acs:ecs:$regionid:$accountid:securitygroup/$groupNo | 查询一个安全组的安全组规则。 |
DescribeSecurityGroups |
| 查询您创建的安全组的基本信息。 |
ModifySecurityGroupAttribute | acs:ecs:$regionid:$accountid:securitygroup/$groupNo | 修改指定安全组的属性,包括修改安全组名称和描述。 |
ModifySecurityGroupRule | acs:ecs:$regionid:$accountid:securitygroup/$groupNo | 修改安全组入方向规则的描述信息。 |
ModifySecurityGroupEgressRule | acs:ecs:$regionid:$accountid:securitygroup/$groupNo | 修改安全组出方向规则的描述信息。 |
DeleteSecurityGroup | acs:ecs:$regionid:$accountid:securitygroup/$groupNo | 删除一个安全组。 |
部署集
Action | Resource | Action说明 |
CreateDeploymentSet | acs:ecs:{#regionId}:{#accountId}:deploymentset/* | 创建一个部署集。 |
ModifyDeploymentSetAttribute | acs:ecs:{#regionId}:{#accountId}:deploymentset/{#deploymentSetId} | 修改一个部署集的名称和描述信息。 |
DeleteDeploymentSet | acs:ecs:{#regionid}:{#accountId}:deploymentset/{#deploymentSetId} | 删除一个部署集。 |
DescribeDeploymentSets | acs:ecs:{#regionId}:{#accountId}:deploymentset/{#deploymentSetId} | 查询一个或多个部署集的属性列表。 |
SSH密钥对
Action | Resource | Action说明 |
CreateKeyPair | acs:ecs:$regionid:$accountid:keypair/* | 创建一对SSH密钥对。 |
ImportKeyPair | acs:ecs:$regionid:$accountid:keypair/* | 导入由其他工具产生的RSA密钥对的公钥部分。导入密钥对后,阿里云为您保管公钥部分,您需要自行妥善保存密钥对的私钥部分。 |
DescribeKeyPairs |
| 查询一个或多个密钥对。 |
AttachKeyPair |
| 绑定一个SSH密钥对到一台或多台Linux实例。 |
DetachKeyPair |
| 为一台或者多台Linux实例解绑SSH密钥对。 |
DeleteKeyPairs | acs:ecs:$regionid:$accountid:keypair/$keyPairName | 删除一对或者多对SSH密钥对。 |
网络
Action | Resource | Action说明 |
ModifyInstanceVpcAttribute |
| 修改一台ECS实例的专有网络VPC属性。 |
AllocatePublicIpAddress | acs:ecs:$regionid:$accountid:instance/$instanceId | 为一台ECS实例分配一个固定公网IP地址。 |
ConvertNatPublicIpToEip | acs:ecs:$regionid:$accountid:instance/$instanceId | 将一台网络类型为专有网络VPC的ECS实例的公网IP(PublicIp)转化为弹性公网IP(EIP)。 |
AttachClassicLinkVpc | acs:ecs:$regionid:$accountid:instance/$instanceId | 将一台经典网络类型实例连接到专有网络VPC中,使经典网络类型实例可以和VPC中的云资源私网互通。 |
DetachClassicLinkVpc | acs:ecs:$regionid:$accountid:instance/$instanceId | 取消经典网络类型实例与专有网络VPC的连接(ClassicLink)。 |
DescribeClassicLinkInstances | acs:ecs:$regionid:$accountid:instance/* | 查询一台或多台与专有网络VPC建立了连接的经典网络类型实例。 |
ModifyInstanceNetworkSpec | acs:ecs:$regionid:$accountid:instance/$instanceId | 修改实例的带宽配置。 |
运维与监控
Action | Resource | Action说明 |
DescribeSnapshotMonitorData | acs:ecs:*:$accountid:snapshot/* | 查询一个地域下近30天内的快照容量变化监控数据。 |
DescribeInstanceMonitorData | acs:ecs:$regionid:$accountid:instance/$instanceId | 查询一台ECS实例的监控信息。 |
DescribeDiskMonitorData | acs:ecs:$regionid:$accountid:disk/$diskId | 查询一块云盘指定时间内的使用信息。 |
标签
Action | Resource | Action说明 |
TagResources | acs:ecs:$regionid:$accountid:$resourceType/$resourceId | 为指定的ECS资源列表统一创建并绑定标签。 |
ListTagResources | acs:ecs:$regionid:$accountid:$resourceType/$resourceId | 查询一个或多个ECS资源已经绑定的标签列表。 |
UntagResources | acs:ecs:$regionid:$accountid:$resourceType/$resourceId | 为指定的ECS资源列表统一解绑并删除标签。 |
询价
Action | Resource | Action说明 |
DescribePrice | acs:ecs:*:$accountid:* | 查询云服务器ECS资源的最新价格。 |
DescribeRenewalPrice | acs:ecs:$regionid:$accountid:instance/$instanceId | 查询云服务器ECS资源的续费价格。仅支持查询包年包月资源的续费价格。 |
UntagResources | acs:ecs:$regionid:$accountid:$resourceType/$resourceId | 为指定的ECS资源列表统一解绑并删除标签。 |
API接口标签鉴权说明
为某一RAM用户授予含有标签鉴权的权限策略后,该RAM用户调用各API接口时的鉴权情况如下表所示:
接口 | 说明 |
RunInstances、CreateDisk等创建接口 | 该类接口无需指定资源ID,则匹配
|
DescribeInstances、DescribeDisks等查询接口 | 该类接口按需指定资源ID,则匹配
说明 查询接口在鉴权不通过时,返回结果为空,并不会报错。 |
ModifyInstanceAttribute、ModifyDiskAttribute等修改类接口 | 该类接口必须指定资源ID,则匹配
|
StartInstance、RebootInstance、StopInstance等操作类接口 | 该类接口必须指定资源ID,则匹配
|