跳至內容

如何授予 Amazon SQS 佇列的存取權?

2 分的閱讀內容
0

我想要存取 Amazon Simple Queue Service (Amazon SQS) 佇列。我需要知道存取佇列所需的 Amazon SQS 存取政策與 AWS Identity and Access Management (IAM) 政策權限。

解決方法

若要存取 Amazon SQS 佇列,您必須將權限新增至 SQS 存取政策、IAM 政策,或兩者都新增。特定權限需求取決於 SQS 佇列與 IAM 角色是否來自同一個 AWS 帳戶。

相同帳戶

SQS 存取政策或 IAM 政策中需要陳述式以允許存取。

注意: 如果 SQS 存取政策或 IAM 政策其中一項明確允許存取,但另一項政策明確拒絕存取,則會拒絕佇列的存取權。

IAM 使用者政策SQS 存取政策SQS 存取政策
允許允許允許
允許既不允許也不拒絕允許
允許拒絕拒絕
既不允許也不拒絕允許允許
既不允許也不拒絕既不允許也不拒絕隱含拒絕
既不允許也不拒絕拒絕拒絕
拒絕允許拒絕
拒絕既不允許也不拒絕拒絕
拒絕拒絕拒絕

不同帳戶

在 SQS 存取政策與 IAM 政策中,都需要有陳述式才能允許存取。

IAM 使用者政策SQS 存取政策結果
允許允許允許
允許既不允許也不拒絕隱含拒絕
允許拒絕拒絕
既不允許也不拒絕允許隱含拒絕
既不允許也不拒絕既不允許也不拒絕隱含拒絕
既不允許也不拒絕拒絕拒絕
拒絕允許拒絕
拒絕既不允許也不拒絕拒絕
拒絕拒絕拒絕

政策陳述式範例

以下政策範例顯示您必須在 IAM 政策和 SQS 佇列存取政策上設定的權限。這些政策允許 SQS 佇列的跨帳戶存取權。

username1 的 IAM 政策陳述式範例

以下政策授予 username1 將訊息傳送至資源 arn:aws:sqs:us-east-1:123456789012:queue_1 的權限:

{
   "Version": "2012-10-17",
   "Statement": [{
      "Effect": "Allow",
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:us-east-1:123456789012:queue_1"
   }]
}

queue_1 的 SQS 資源政策陳述式範例

以下政策允許 username1 將訊息傳送至 SQS 佇列:

{   "Version": "2012-10-17",
   "Id": "Queue1_Policy",
   "Statement": [{
      "Sid":"Queue1_AllActions",
      "Effect": "Allow",
      "Principal": {
         "AWS": [
            "arn:aws:iam::111122223333:user/username1"
         ]
      },
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:us-east-1:123456789012:queue_1"
   }]
}

如需更多資訊,請參閱 IAM 政策類型: 如何以及何時使用