輕量訊息佇列(原 MNS)的許可權管理是通過阿里雲的存取控制RAM(Resource Access Management)產品實現的。使用RAM可以讓您避免與其他使用者共用雲帳號密鑰,即AccessKey(包含AccessKey ID和AccessKey Secret),按需為使用者指派最小許可權。本文介紹輕量訊息佇列(原 MNS)在RAM中的權限原則和樣本。
背景資訊
在RAM中,權限原則是用權限原則文法和結構描述的一組許可權的集合,可以精確地描述被授權的Resource(資源集)、Action(操作集)以及授權條件。更多資訊,請參見權限原則文法和結構。
輕量訊息佇列(原 MNS)支援的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 |
SendMessage或BatchSendMessage | mns:SendMessage | acs:mns:$region:$accountid:/queues/$queueName/messages |
ReceiveMessage或BatchReceiveMessage | mns:ReceiveMessage | acs:mns:$region:$accountid:/queues/$queueName/messages |
DeleteMessage | mns:DeleteMessage | acs:mns:$region:$accountid:/queues/$queueName/messages |
PeekMessage或BatchPeekMessage | 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/24,42.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:*:*:*" } ] }