本文以将单个命名空间授权给某个RAM用户为例,介绍如何使用ACM的访问权限控制功能。
迁移到MSE Nacos
ACM进入下线状态,所有配置管理相关的需求由MSE中的Nacos承接(ACM独享版,更好的安全和稳定性)。您需要在ACM控制台导出配置,然后在MSE控制台导入之前导出的配置即可完成迁移。具体操作,请参见将应用配置从ACM迁移到MSE Nacos。
背景信息
以往,当一个RAM用户(或角色)被授予AliyunACMFullAccess授权策略时,即拥有ACM的完全操作权限,包括对所有配置和所有命名空间的读写权限。由于RAM用户之间的配置并未隔离,因误操作或恶意操作造成的损失就可能会被放大,并造成严重后果。更重要的是,由于对所有授权用户可见,数据库账号密码等敏感配置面临着泄露的安全风险。
现在,ACM提供了更细粒度的权限控制,您可以按需为用户分配最小权限,达到为不同用户(或角色)授予不同资源操作权限的目的。对应RAM的授权策略,可以分为操作(Action)维度和资源(Resource)维度。
操作(Action)
- 读:可以读取Resource所指定范围的配置,以及读取命名空间基本信息,对应的RAM授权策略Action为
acms:R
。 - 写:可以增加、删除和修改Resource所指定范围的配置,但无法增加、删除和修改命名空间,对应的RAM授权策略Action为
acms:W
。 - 完全权限:可以读写Resource所指定范围的配置,并读取命名空间基本信息。当Resource为
*
时,也可以增加、删除和修改命名空间,对应的RAM授权策略Action为acms:*
。
资源(Resource)
授权资源的定义规则为acs:${service-name}:${region-id}:${resource-owner-id}:${resource-type}/${namespace_id}/${resource-name}
。
- 所有资源:对应的RAM授权策略Resource为
*
。 - 单个命名空间:例如命名空间为
1ca01ca0-11b0-1e01-0df1-d1010101bc10
,则对应的RAM授权策略Resource为*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10
。 - 单个命名空间下的某个Group:例如命名空间为
1ca01ca0-11b0-1e01-0df1-d1010101bc10
,Group为DEFAULT_GROUP
,则对应的RAM授权策略Resource为*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP
。 - 单个命名空间下的某个Group的特定配置项:例如命名空间为
1ca01ca0-11b0-1e01-0df1-d1010101bc10
,Group为DEFAULT_GROUP
,配置项的DataId为com.alibaba.acm.test
,则对应的RAM授权策略Resource为*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP/com.alibaba.acm.test
。
步骤一:创建RAM自定义授权策略
步骤二:创建RAM用户并授权
步骤三:登录RAM用户并验证权限
- 返回到RAM控制台。
- 在概览页面上单击账号管理区域的登录链接,并以您新建的用户登录。
- 访问ACM控制台,验证当前可以操作的只有刚刚设置授权策略中的命名空间。
更多示例
- 授予单个命名空间(例如
1ca01ca0-11b0-1e01-0df1-d1010101bc10
)的只读权限。{ "Version": "1", "Statement": [ { "Action": [ "acms:R" ], "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10", "Effect": "Allow" } ] }
- 授予单个命名空间(例如
1ca01ca0-11b0-1e01-0df1-d1010101bc10
)中单个Group(例如DEFAULT_GROUP
)的读写权限。{ "Version": "1", "Statement": [ { "Action": [ "acms:*" ], "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP", "Effect": "Allow" } ] }
- 授予单个命名空间(例如
1ca01ca0-11b0-1e01-0df1-d1010101bc10
)中多个Group(例如DEFAULT_GROUP
、DEFAULT_GROUP_1
)的只读权限。{ "Version": "1", "Statement": [ { "Action": [ "acms:R" ], "Resource": [ "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP", "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP_1" ], "Effect": "Allow" } ] }
- 授予单个命名空间(例如1ca01ca0-11b0-1e01-0df1-d1010101bc10)中某个Group(例如DEFAULT_GROUP)下特定配置项(com.alibaba.acm.test)只读权限。
{ "Version": "1", "Statement": [ { "Action": [ "acms:R" ], "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP/com.alibaba.acm.test", "Effect": "Allow" } ] }
- 授予所有命名空间中单个Group(例如DEFAULT_GROUP)的读写权限。
{ "Version": "1", "Statement": [ { "Action": [ "acms:*" ], "Resource": [ "*:*:*:*:cfg/*/DEFAULT_GROUP" ], "Effect": "Allow" } ] }
- 授予单个Region(例如杭州
cn-hangzhou
)单个命名空间(例如1ca01ca0-11b0-1e01-0df1-d1010101bc10
)的读写权限。{ "Version": "1", "Statement": [ { "Action": [ "acms:*" ], "Resource": [ "*:*:cn-hangzhou:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10" ], "Effect": "Allow" } ] }
备注
- 只有当授权策略操作(Action)为
acms:*
并且资源(Resource)为*
时,被授予该授权策略的用户(或角色)才能增加、删除和修改命名空间。 - 由于存在缓存机制,授权策略的添加和修改会延迟生效,但通常都会在10秒内生效。
- 通过ECS实例RAM角色访问ACM时,授予如上所述授权策略,同样可以实现细粒度的权限控制。