全部產品
Search
文件中心

:授權策略和樣本

更新時間:Jan 23, 2025

輕量訊息佇列(原 MNS)的許可權管理是通過阿里雲的存取控制RAM(Resource Access Management)產品實現的。使用RAM可以讓您避免與其他使用者共用雲帳號密鑰,即AccessKey(包含AccessKey ID和AccessKey Secret),按需為使用者指派最小許可權。本文介紹輕量訊息佇列(原 MNS)在RAM中的權限原則和樣本。

背景資訊

在RAM中,權限原則是用權限原則文法和結構描述的一組許可權的集合,可以精確地描述被授權的Resource(資源集)、Action(操作集)以及授權條件。更多資訊,請參見權限原則文法和結構

輕量訊息佇列(原 MNS)支援的RAM的權限原則有以下類型:

  • 系統策略

    系統策略統一由阿里雲建立,您只能使用不能修改,策略的版本更新由阿里雲維護。

  • 自訂策略

    自訂策略可由您自主建立、更新和刪除,策略的版本更新由您自己維護。您需到RAM控制台編輯相應權限原則,再給相應使用者授予該許可權。

系統策略

輕量訊息佇列(原 MNS)提供以下系統預設的權限原則。

權限原則名稱

說明

AliyunMNSFullAccess

輕量訊息佇列(原 MNS)的系統管理權限,等同於阿里雲帳號的許可權,被授予該許可權的RAM使用者具有所有訊息收發許可權和控制台所有功能操作許可權。

AliyunMNSReadOnlyAccess

輕量訊息佇列(原 MNS)的唯讀許可權,被授予該許可權的RAM使用者僅有通過存取控制台或調用API讀取資源資訊的許可權。

自訂策略

自訂權限原則可以滿足您更細粒度的授權需求。輕量訊息佇列(原 MNS)提供以下自訂權限原則。

API

Action

Resource

OpenService

mns:OpenService

acs:mns:$region:$accountid:/commonbuy/openservice

ListQueue

mns:ListQueue

acs:mns:$region:$accountid:/queues

CreateQueue

mns:CreateQueue

acs:mns:$region:$accountid:/queues/$queueName

DeleteQueue

mns:DeleteQueue

acs:mns:$region:$accountid:/queues/$queueName

SetQueueAttributes

mns:SetQueueAttributes

acs:mns:$region:$accountid:/queues/$queueName

GetQueueAttributes

mns:GetQueueAttributes

acs:mns:$region:$accountid:/queues/$queueName

SendMessageBatchSendMessage

mns:SendMessage

acs:mns:$region:$accountid:/queues/$queueName/messages

ReceiveMessageBatchReceiveMessage

mns:ReceiveMessage

acs:mns:$region:$accountid:/queues/$queueName/messages

DeleteMessage

mns:DeleteMessage

acs:mns:$region:$accountid:/queues/$queueName/messages

PeekMessageBatchPeekMessage

mns:PeekMessage

acs:mns:$region:$accountid:/queues/$queueName/messages

ChangeMessageVisibility

mns:ChangeMessageVisibility

acs:mns:$region:$accountid:/queues/$queueName/messages

ListTopic

mns:ListTopic

acs:mns:$region:$accountid:/topics

CreateTopic

mns:CreateTopic

acs:mns:$region:$accountid:/topics/$topicName

DeleteTopic

mns:DeleteTopic

acs:mns:$region:$accountid:/topics/$topicName

SetTopicAttributes

mns:SetTopicAttributes

acs:mns:$region:$accountid:/topics/$topicName

GetTopicAttributes

mns:GetTopicAttributes

acs:mns:$region:$accountid:/topics/$topicName

ListSubscriptionByTopic

mns:ListSubscriptionByTopic

acs:mns:$region:$accountid:/topics/$topicName/subscriptions

Subscribe

mns:Subscribe

acs:mns:$region:$accountid:/topics/$topicName/subscriptions/$subscriptionName

Unsubscribe

mns:Unsubscribe

acs:mns:$region:$accountid:/topics/$topicName/subscriptions/$subscriptionName

SetSubscriptionAttributes

mns:SetSubscriptionAttributes

acs:mns:$region:$accountid:/topics/$topicName/subscriptions/$subscriptionName

GetSubscriptionAttributes

mns:GetSubscriptionAttributes

acs:mns:$region:$accountid:/topics/$topicName/subscriptions/$subscriptionName

PublishMessage

mns:PublishMessage

acs:mns:$region:$accountid:/topics/$topicName/messages

自訂權限原則樣本

  • 樣本一:在Allow授權中增加IP限制

    允許通過42.120.88.0/2442.120.66.0/24兩個IP段訪問輕量訊息佇列(原 MNS)

    {
        "Version": "1",
        "Statement": [
            {
                "Action": "mns:*",
                "Effect": "Allow",
                "Resource": "acs:mns:*:*:*",
                "Condition":{
                    "IpAddress": {
                        "acs:SourceIp": ["42.120.88.0/24", "42.120.66.0/24"]
                    }
                }
            }
        ]
    }            
  • 樣本二:在Deny授權中增加IP限制

    如果源IP不在42.120.88.0/24中,則禁止對輕量訊息佇列(原 MNS)執行任何操作。

    {
        "Version":"1",
        "Statement":[
            {
                "Action":"mns:*",
                "Effect":"Deny",
                "Resource":"acs:mns:*:*:*",
                "Condition":{
                    "NotIpAddress":{
                        "acs:SourceIp":[
                            "42.120.88.0/24"
                        ]
                    }
                }
            }
        ]
    }          
    重要

    因為Policy的鑒權規則是Deny優先(即如果您的訪問操作命中任意一條Deny規則,則禁止訪問),所以訪問者從42.120.88.0/24以外的IP地址訪問時,輕量訊息佇列(原 MNS)會通知沒有許可權。

  • 樣本三:授予RAM使用者隊列、主題的可讀許可權

    授予查看隊列、主題、隊列屬性和主題屬性的許可權,請按以下樣本設定。

    {
        "Version":"1",
        "Statement":[
            {
                "Effect":"Allow",
                "Action":[
                    "mns:ListQueue",
                    "mns:ListTopic",
                    "mns:GetQueueAttributes",
                    "mns:GetTopicAttributes"
                ],
                "Resource":"acs:mns:*:*:*"
            }
        ]
    }