如果您的账号存在多个云资源(例如伸缩组资源),您可以通过创建资源组,对云资源(例如伸缩组资源)进行分组管理,实现资源的隔离显示和权限控制。本文主要介绍如何通过资源组精细化管理弹性伸缩。
背景信息
资源组指对您拥有的云资源从用途、权限、归属等维度上进行分组,实现企业内部多用户、多项目的资源分级管理。一个云资源只能属于一个资源组,云资源之间的关联关系不会因加入资源组而发生变化。更多信息,请参见资源组。
资源组使用说明如下所示:
伸缩组加入资源组后,伸缩组下的伸缩配置、伸缩规则、报警任务、定时任务等资源都会自动加入该资源组。
伸缩组本身所属的资源组与伸缩组内实例所属的资源组之间是独立的。
例如,伸缩组本身所属的资源组与伸缩组内扩容的ECS实例或ECI实例所属的资源组可以是两个不同的资源组。
一个资源组可以包含不同地域的伸缩组。
例如,资源组A中可以包含华北2(北京)地域的伸缩组和华东1(杭州)地域的伸缩组。
如果您授权RAM账号管理所有的阿里云资源,则该RAM账户中将显示主账号下所有的资源组。
应用场景
使用资源组管理伸缩组前,请确认您已创建RAM用户,如未创建,请参见创建RAM用户。
使用资源组管理伸缩组包括以下两个应用场景:
将用途不同的伸缩组加入不同的资源组,通过资源组归属范围控制对伸缩组进行分类管理。更多信息,请参见场景一:按用途对伸缩组进行分组。
为各个资源组设置完全独立的管理员,实现资源组范围内的用户与权限管理。更多信息,请参见场景二:资源组范围内的用户与权限管理。
场景一:按用途对伸缩组进行分组
场景描述
假设客户存在生产环境和测试环境两个使用场景,在这两个场景下,如果伸缩组资源没有进行分组,则伸缩组会全部展示出来,容易出现误操作风险。为了简化管理同时避免误操作,建议您创建两个资源组,分别为生产环境资源组和测试环境资源组,然后将不同用途的伸缩组分别加入到生产环境资源组和测试环境资源组。以下列场景作为示例,说明如何按用途对伸缩组进行分组。
例如,在同一个阿里云账号下有两个伸缩组,伸缩组A用于生产环境使用,伸缩组B用于测试环境使用。将伸缩组A加入生产环境资源组中,将伸缩组B加入测试环境资源组中,具体分组要求如下:
在测试环境资源组下,只能查看或操作伸缩组B,避免在未分组(例如资源组选择账号全部资源)情况下,您对伸缩组A进行了误操作而影响在线产品性能。
在生产环境资源组下,只能查看或操作伸缩组A,避免在未分组(例如资源组选择账号全部资源)情况下,您对伸缩组B进行了误操作而影响正式产品上线进度。
操作步骤
创建测试环境资源组和生产环境资源组。
以创建生产环境资源组(
ProdResourceGroup
)和测试环境资源组(TestResourceGroup
)为例。具体操作,请参见创建资源组。上述操作完成后,资源组的状态会处于创建中...。大约3秒后,单击。如果状态变为可用,表示资源组创建成功。
创建测试环境的伸缩组。
为确保伸缩组内的ECS实例所属资源组与伸缩组本身所属资源组一致,创建伸缩组(例如
TestScalingGroup
)时,根据组内实例配置信息来源不同,采取以下方案:组内实例配置信息来源配置为启动模板:创建启动模板时,在高级配置(选填)阶段,指定资源组为测试环境资源组(
TestResourceGroup
)。具体操作,请参见创建实例启动模板。组内实例配置信息来源配置为选择已有实例:创建ECS实例时,在高级配置(选填)区域,指定资源组为测试环境资源组(
TestResourceGroup
)。具体操作,请参见自定义购买实例。组内实例配置信息来源配置为从零开始创建:创建伸缩配置时,在高级设置区域,指定资源组为测试环境资源组(
TestResourceGroup
)。具体操作,请参见创建伸缩配置(ECS实例)。
在配置伸缩组参数时,请指定资源组为测试环境资源组(
TestResourceGroup
)来创建测试环境的伸缩组。具体操作,请参见创建伸缩组。创建生产环境的伸缩组。
为确保伸缩组内的ECS实例所属资源组与伸缩组本身所属资源组一致,创建伸缩组(例如
ProdScalingGroup
)时,根据组内实例配置信息来源不同,采取以下方案:组内实例配置信息来源配置为启动模板:创建启动模板时,在高级配置(选填)阶段,指定资源组为生产环境资源组(
ProdResourceGroup
)。具体操作,请参见创建实例启动模板。组内实例配置信息来源配置为选择已有实例:创建ECS实例时,在高级配置(选填)区域,指定资源组为生产环境资源组(
ProdResourceGroup
)。具体操作,请参见自定义购买实例。组内实例配置信息来源配置为从零开始创建:创建伸缩配置时,在高级设置区域,指定资源组为生产环境资源组(
ProdResourceGroup
)。具体操作,请参见创建伸缩配置(ECS实例)。
在配置伸缩组参数时,请指定资源组为生产环境资源组(
ProdResourceGroup
)来创建生产环境的伸缩组。具体操作,请参见创建伸缩组。
验证结果
- 登录弹性伸缩控制台。
在顶部菜单栏左上角,选择不同资源组,验证不同资源组下伸缩组和伸缩组内实例的显示情况。
资源组选择账号全部资源:您可以看到测试环境的伸缩组(
TestScalingGroup
)和生产环境的伸缩组(ProdScalingGroup
)都出现在伸缩组列表中。如果伸缩组扩容了新的ECS实例,在实例列表页签下,您都可以查看到测试环境(TestResourceGroup)和生产环境(ProdResourceGroup)下的所有实例。资源组选择TestResourceGroup:您只能查看到伸缩组(TestScalingGroup)出现在伸缩组列表中。如果伸缩组扩容了新的ECS实例,在实例列表页签下,您也只能查看到在测试环境(TestResourceGroup)下的实例。
资源组选择ProdResourceGroup:您只能查看到伸缩组(ProdScalingGroup)出现在伸缩组列表中。如果伸缩组扩容了新的ECS实例,在实例列表页签下,您也只能查看到在生产环境(ProdResourceGroup)下的实例。
场景二:资源组范围内的用户与权限管理
场景描述
假设公司中存在不同部门使用不同的伸缩组,该伸缩组归属在不同的资源组(分别为生产环境资源组和测试环境资源组)中,且各部门分配了各自的管理人员。为了实现不同部门管理员在资源组范围内对不同资源组中伸缩组的分权管理,建议对管理员授予对应资源组内的权限,通过对资源组范围内的用户与权限进行管理,限制某些管理员只能看到并操作生产环境中的资源,某些管理员只能查看或操作测试环境下的资源。以下列场景作为示例,说明如何实现资源组范围内的分权管理。
例如,一个公司有一个阿里云账号,并为公司下的每个部门分配一个RAM子用户,现在有两个部门:部门A和部门B,要求部门之间独立管理各自的伸缩组,不能相互操作对方的伸缩组,具体分权管理要求如下:
不能给对方部门创建伸缩组、修改伸缩组,同时也不能修改伸缩组下的伸缩规则等配置。
不能查询对方部门的伸缩组。
操作步骤
在RAM中创建自定义权限策略(
ApiWithoutResourcePolicy
)。由于伸缩组的某些API不支持资源组鉴权,故需要对该API进行自定义权限配置。具体操作,请参见创建自定义权限策略。
目前不支持资源组鉴权的API接口如下所示:
DescribeRegions
DescribeLimitation
DescribeNotificationTypes
ListTagKeys
ListTagValues
自定义权限策略(
ApiWithoutResourcePolicy
)如下所示:{ "Version": "1", "Statement": [ { "Action": [ "ess:DescribleRegions", "ess:DescribleLimitation", "ess:DecsribleNotificationTypes", "ess:ListTagKeys", "ess:ListTagValues" ], "Resource": "*", "Effect": "Allow" } ] }
在整个云账号范围内,为部门A和部门B的管理员创建RAM账户并设置对应的资源组权限。
本步骤以授权部门A管理员为例,授权主体请选择部门A管理员名称,权限策略请选择步骤一创建的自定义权限策略(
ApiWithoutResourcePolicy
)和系统策略(AliyunECSFullAccess)。具体操作,请参见为RAM用户授权。为部门A管理员授权如下自定义策略:
为部门A管理员授权如下系统策略:
为部门A创建资源组DepartmentA,为部门B创建资源组DepartmentB。
具体操作,请参见创建资源组。
为部门A的管理员在资源组DepartmentA范围内授予弹性伸缩管理权限策略(AliyunESSFullAccess)。
具体操作,请参见添加RAM身份并授权或者为RAM用户授权。
参考步骤4为部门B的管理员在资源组DepartmentB范围内授予弹性伸缩管理权限策略(AliyunESSFullAccess)。
其中,权限范围选择指定资源组DepartmentB,授权主体选择部门B的管理员名称。