

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon SQS 的身分型政策範例
<a name="sqs-basic-examples-of-iam-policies"></a>

根據預設，IAM 使用者和角色不具備建立或修改 Amazon SQS 資源的許可。若要授予使用者對其所需資源執行動作的許可，IAM 管理員可以建立 IAM 政策。

如需了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱《*IAM 使用者指南*》中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

如需 Amazon SQS 所定義之動作和資源類型的詳細資訊，包括每種資源類型的 ARN 格式，請參閱《服務授權參考》**中的[適用 Amazon Simple Queue Service 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsqs.html)。

**注意**  
當您設定 Amazon EC2 Auto Scaling 的生命週期關聯時，您無須撰寫將訊息傳送至 Amazon SQS 佇列的政策。如需詳細資訊，請參閱[《Amazon EC2 使用者指南》中的 Amazon EC2 Auto Scaling 生命週期掛鉤](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)。 *Amazon EC2 *

## 政策最佳實務
<a name="security_iam_id-based-policy-examples"></a>

身分型政策會判斷您帳戶中的某個人員是否可以建立、存取或刪除 Amazon SQS 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：
+ **開始使用 AWS 受管政策並邁向最低權限許可** – 若要開始將許可授予您的使用者和工作負載，請使用將許可授予許多常見使用案例的 *AWS 受管政策*。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策，以進一步減少許可。如需更多資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **套用最低權限許可** – 設定 IAM 政策的許可時，請僅授予執行任務所需的許可。為實現此目的，您可以定義在特定條件下可以對特定資源採取的動作，這也稱為*最低權限許可*。如需使用 IAM 套用許可的更多相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 政策中的條件進一步限制存取權** – 您可以將條件新增至政策，以限制動作和資源的存取。例如，您可以撰寫政策條件，指定必須使用 SSL 傳送所有請求。如果透過特定 例如 使用服務動作 AWS 服務，您也可以使用條件來授予其存取權 CloudFormation。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 驗證 IAM 政策，確保許可安全且可正常運作** – IAM Access Analyzer 驗證新政策和現有政策，確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議，可協助您撰寫安全且實用的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 IAM Access Analyzer 驗證政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重要素驗證 (MFA)** – 如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶，請開啟 MFA 以提高安全性。如需在呼叫 API 操作時請求 MFA，請將 MFA 條件新增至您的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[透過 MFA 的安全 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

如需 IAM 中最佳實務的相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 使用 Amazon SQS 主控台
<a name="security_iam_id-based-policy-examples-console"></a>

若要存取 Amazon Simple Queue Service 主控台，您必須擁有最基本的一組許可。這些許可必須允許您列出和檢視 中 Amazon SQS 資源的詳細資訊 AWS 帳戶。如果您建立比最基本必要許可更嚴格的身分型政策，則對於具有該政策的實體 (使用者或角色) 而言，主控台就無法如預期運作。

對於僅呼叫 AWS CLI 或 AWS API 的使用者，您不需要允許最低主控台許可。反之，只需允許存取符合他們嘗試執行之 API 操作的動作就可以了。

為了確保使用者和角色仍然可以使用 Amazon SQS 主控台，也請將 Amazon SQS `AmazonSQSReadOnlyAccess` AWS 受管政策連接到實體。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[新增許可到使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

## 允許使用者檢視他們自己的許可
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

此範例會示範如何建立政策，允許 IAM 使用者檢視連接到他們使用者身分的內嵌及受管政策。此政策包含在主控台或使用 或 AWS CLI AWS API 以程式設計方式完成此動作的許可。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## 允許使用者建立佇列
<a name="allow-queue-creation"></a>

在下列範例政策中，我們為 Bob 建立一個政策，允許他存取所有 Amazon SQS 動作，但僅能用於名稱字首為常值字串 `alice_queue_` 的佇列。

Amazon SQS 不會自動授予佇列建立者使用該佇列的許可。因此，除了 IAM 政策中的 `CreateQueue` 動作，我們還必須明確授與 Bob 使用所有 Amazon SQS 動作的許可。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": "sqs:*",
      "Resource": "arn:aws:sqs:*:123456789012:alice_queue_*"
   }]
}
```

------

## 允許開發人員將訊息寫入共用佇列
<a name="write-messages-to-shared-queue"></a>

在下列範例中，我們為開發人員建立群組，並連接政策，讓群組使用 Amazon SQS `SendMessage`動作，但僅限於屬於指定 AWS 帳戶 且名為 的佇列`MyCompanyQueue`。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": "sqs:SendMessage",
      "Resource": "arn:aws:sqs:*:123456789012:MyCompanyQueue"
   }]
}
```

------

您可以使用 `*` 代替 `SendMessage` 授與主體對共享佇列進行以下動作：`ChangeMessageVisibility`、`DeleteMessage`、`GetQueueAttributes`、`GetQueueUrl`、`ReceiveMessage` 和 `SendMessage`。

**注意**  
儘管 `*` 包含由其他許可類型提供的存取權，Amazon SQS 會個別考量各項許可。例如，可以將 `*` 和 `SendMessage` 許可同時授與一名使用者，即便 `*` 包含由 `SendMessage` 提供的存取權。  
移除許可時也適用此概念。若主體僅有 `*` 許可，提出移除 `SendMessage` 許可的請求並*不會*使主體*只獨缺*該項許可。反之，由於主體並未擁有明確的 `SendMessage` 許可，此請求將不會起作用。若想要讓主體僅有 `ReceiveMessage` 許可，請先新增 `ReceiveMessage` 許可再移除 `*` 許可。

## 允許管理員取得佇列的一般大小
<a name="get-size-of-queues"></a>

在下列範例中，我們為管理員建立群組，並連接政策，讓群組將 Amazon SQS `GetQueueAttributes`動作與屬於指定 AWS 帳戶的所有佇列搭配使用。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": "sqs:GetQueueAttributes",
      "Resource": "*"   
   }]
}
```

------

## 允許合作夥伴傳送訊息至特定佇列
<a name="send-messages-to-specific-queue"></a>

您可以使用 Amazon SQS 政策或 IAM 政策來完成這項工作。如果您的合作夥伴有 AWS 帳戶，則使用 Amazon SQS 政策可能會更輕鬆。不過，合作夥伴公司中擁有 AWS 安全登入資料的任何使用者都可以傳送訊息到佇列。如果您想將存取權限制至特定的使用者或應用程式，您必須將合作夥伴視同您自己公司中的使用者，並改為使用 IAM 政策，而非 Amazon SQS 政策。

此範例執行下列動作：

1. 建立稱為 WidgetCo 的群組，來代表合作夥伴公司。

1. 為合作夥伴公司中需要存取權的特定使用者或應用程式，建立使用者。

1. 將 使用者新增至 群組。

1. 連接政策，提供僅能對名為 `WidgetPartnerQueue` 的佇列，僅限存取名為 `SendMessage` 之動作的存取權給群組。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
         "Effect": "Allow",
         "Action": "sqs:SendMessage",
         "Resource": "arn:aws:sqs:*:123456789012:WidgetPartnerQueue"
   }]
}
```

------