本文介绍在云消息队列 MQTT 版中常见的授权策略示例。
注意事项
在阅读本文前,建议您可先查看在访问控制RAM中支持的云消息队列 MQTT 版相关的权限策略。
如需直接复制示例代码,使用时请删除注释内容,即双斜杠(//)及以后的文字说明。示例中的取值均需替换为您实际的资源信息:
post-cn-09k1noy****替换为您的实例ID。
Topic_****替换为您的Topic。
GID_****替换为您的Group ID。
Rule****替换为您的规则ID。
示例一:授予RAM用户访问MQTT控制台概览页面以及首页权限
{
"Version": "1",
"Statement": [
{ // 授予消息收发的授权前,请先授予相应实例的权限。
"Effect": "Allow",
"Action": "mq:MqttInstanceAccess",
"Resource": "acs:mq:*:*:instance/mqtt-cn-7213l8z****"
},
{ // 授予访问控制台概览页面及首页权限,否则会导致访问报错。
"Effect": "Allow",
"Action": "mq:MqttMetaData",
"Resource": "acs:mq:*:198126978280****:*"
},
{ // 授予访问实例列表权限,否则无法列出实例。
"Effect": "Allow",
"Action": "mq:ListMqttInstance",
"Resource": "acs:mq:*:198126978280****:instance/mqtt-cn-7213l8z****"
}
]
}
示例二:授予MQTT客户端消息收发权限
说明
MQTT客户端消息收发权限不支持跨云账号授权。
{
"Version":"1",
"Statement":[
{ // 授予消息收发的授权前,请先授予相应实例的权限。
"Effect":"Allow",
"Action":[
"mq:MqttInstanceAccess"
],
"Resource":[
"acs:mq:*:*:instance/post-cn-09k1noy****"
]
},
{ // 授予Topic的消息发布和订阅权限。
"Effect":"Allow",
"Action":[
"mq:PUB",
"mq:SUB"
],
"Resource":[
"acs:mq:*:*:topic/post-cn-09k1noy****/Topic_****"
]
},
{ // 授予Group的权限。
"Effect":"Allow",
"Action":[
"mq:SUB"
],
"Resource":[
"acs:mq:*:*:groupId/post-cn-09k1noy****/GID_****"
]
}
]
}
示例三:授予控制台某Topic发消息权限
{
"Version":"1",
"Statement":[
{ // 授予Topic控制台发消息权限前,请先授予相应实例的权限。
"Effect":"Allow",
"Action":[
"mq:MqttInstanceAccess"
],
"Resource":[
"acs:mq:*:*:instance/post-cn-09k1noy****"
]
},
{ // 授予Topic控制台发消息权限。
"Effect":"Allow",
"Action":[
"mq:SendMqttMessageByConsole"
],
"Resource":[
"acs:mq:*:*:topic/post-cn-09k1noy****/Topic_****"
]
}
]
}
示例四:授予申请Token的OpenAPI权限
{
"Version":"1",
"Statement":[
{ // 授予申请Token的OpenAPI权限前,请先授予相应实例的权限。
"Effect":"Allow",
"Action":[
"mq:MqttInstanceAccess"
],
"Resource":[
"acs:mq:*:*:instance/post-cn-09k1noy****"
]
},
{ // 授予申请Token的OpenAPI权限。
"Effect":"Allow",
"Action":[
"mq:ApplyToken"
],
"Resource":[
"acs:mq:*:*:topic/post-cn-09k1noy****/Topic_****"
]
}
]
}
示例五:授予数据流出规则的所有OpenAPI权限
授予规则权限时,请确保涉及的实例、Topic以及Group ID资源属于同一阿里云账号。
{
"Version":"1",
"Statement":[
{ // 授予数据流出规则的所有OpenAPI权限前,请先授予相应实例的权限。
"Effect":"Allow",
"Action":[
"mq:MqttInstanceAccess"
],
"Resource":[
"acs:mq:*:*:instance/post-cn-09k1noy****"
]
},
{ // 授予数据流出规则的所有OpenAPI权限。
"Effect":"Allow",
"Action":[
"mq:CreateMqttOutboundRule",
"mq:DeleteMqttOutboundRule",
"mq:ListMqttOutboundRule",
"mq:UpdateMqttOutboundRule"
],
"Resource":[
"acs:mq:*:*:rule/post-cn-09k1noy****/Rule****"
]
}
]
}
示例六:授予某个实例所有的权限
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "mq:MqttInstanceAccess",
"Resource": "acs:mq:*:*:instance/post-cn-09k1noy****"
},
{
"Effect": "Allow",
"Action": "mq:MqttMetaData",
"Resource": "acs:mq:*:*:*"
},
{
"Effect": "Allow",
"Action": "mq:ListMqttInstance",
"Resource": "acs:mq:*:*:instance/post-cn-09k1noy****"
},
{
"Effect": "Allow",
"Action": "mq:*",
"Resource": "acs:mq:*:*:*/post-cn-09k1noy****/*"
}
]
}