如果系统权限策略不能满足您的要求,您可以创建自定义权限策略实现最小授权。使用自定义权限策略有助于实现权限的精细化管控,是提升资源访问安全的有效手段。本文介绍云消息队列 RocketMQ 版使用自定义权限策略的场景和策略示例。
什么是自定义权限策略
在基于RAM的访问控制体系中,自定义权限策略是指在系统权限策略之外,您可以自主创建、更新和删除的权限策略。自定义权限策略的版本更新需由您来维护。
创建自定义权限策略后,需为RAM用户、用户组或RAM角色绑定权限策略,这些RAM身份才能获得权限策略中指定的访问权限。
已创建的权限策略支持删除,但删除前需确保该策略未被引用。如果该权限策略已被引用,您需要在该权限策略的引用记录中移除授权。
自定义权限策略支持版本控制,您可以按照RAM规定的版本管理机制来管理您创建的自定义权限策略版本。
操作文档
自定义权限授权示例
重要
如需直接复制示例代码,使用时请删除注释内容,即“//”及以后的文字说明。
示例一:授予实例中某Topic和Group的权限
授予使用实例下某Topic和Group消息发布和订阅的权限,请按以下示例设置。
适用于有命名空间的实例
{ "Version":"1", "Statement":[ { // 授予实例的权限,授予Topic和Group的权限前须先授予相应实例的权限(适用于有命名空间的实例)。 "Effect":"Allow", "Action":[ "mq:QueryInstanceBaseInfo" ], "Resource":[ "acs:mq:*:*:{instanceId}" ] }, { // 授予Topic的消息发布和订阅权限。 "Effect":"Allow", "Action":[ "mq:PUB", "mq:SUB" ], "Resource":[ "acs:mq:*:*:{instanceId}%{topic}" ] }, { // 授予Group的权限。 "Effect":"Allow", "Action":[ "mq:SUB" ], "Resource":[ "acs:mq:*:*:{instanceId}%{groupId}" ] } ] }
适用于无命名空间的实例
{ "Version":"1", "Statement":[ { // 授予实例的权限,授予Topic和Group的权限前须先授予相应实例的权限(适用于无命名空间的实例)。 "Effect":"Allow", "Action":[ "mq:QueryInstanceBaseInfo" ], "Resource":[ "acs:mq:*:*:{instanceId}" ] }, { // 授予Topic的消息发布和订阅权限。 "Effect":"Allow", "Action":[ "mq:PUB", "mq:SUB" ], "Resource":[ "acs:mq:*:*:{topic}" ] }, { // 授予Group的权限。 "Effect":"Allow", "Action":[ "mq:SUB" ], "Resource":[ "acs:mq:*:*:{groupId}" ] } ] }
示例二:授予用户某实例下的所有权限(只适用于有命名空间的实例)
若要授予用户整个实例的权限,即该实例中所有资源的所有操作权限,请按以下示例设置。
{ // 仅适用于有命名空间的实例。 "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "mq:*" ], "Resource": [ "acs:mq:*:*:{instanceId}*" // 授予用户该实例下的所有权限,{instanceId}用实例ID代替。 ] } ] }
授权信息参考
使用自定义权限策略,您需要了解业务的权限管控需求,并了解云消息队列 RocketMQ 版的授权信息。详细内容请参见授权信息。