Amazon 的基於身份的政策示例 SQS - Amazon Simple Queue Service

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

Amazon 的基於身份的政策示例 SQS

依預設,使用者和角色沒有建立或修改 Amazon SQS 資源的權限。他們也無法執行任務使用 AWS Management Console, AWS Command Line Interface (AWS CLI),或 AWS API。若要授與使用者對所需資源執行動作的權限,IAM管理員可以建立IAM策略。然後,系統管理員可以將IAM原則新增至角色,使用者可以擔任這些角色。

若要瞭解如何使用這些範例原則文件來建立以IAM身分識別為基礎的JSON策略,請參閱使用指南中的IAM建立IAM策略。

有關 Amazon 定義的動作和資源類型的詳細資訊SQS,包括每種資源類型的格式,請參閱服務授權參考中的 Amazon 簡單佇列服務的動作、資源和條件金鑰。ARNs

注意

當您為 Amazon EC2 Auto Scaling 設定生命週期勾點時,您不需要撰寫政策即可將訊息傳送到 Amazon SQS 佇列。如需詳細資訊,請參閱 Amazon EC2使用者指南中的 Amazon EC2 Auto Scaling 生命週期勾點。

政策最佳實務

以身分識別為基礎的政策決定某人是否可以在您的帳戶中建立、存取或刪除 Amazon SQS 資源。這些動作可能會為您帶來成本 AWS 帳戶。 建立或編輯以身分識別為基礎的原則時,請遵循下列準則和建議:

  • 開始使用 AWS 受管原則並朝著最低權限權限移轉 — 若要開始授與使用者和工作負載的權限,請使用 AWS 授與許多常見使用案例權限的受管理策略。他們是可用的 AWS 帳戶。 建議您透過定義進一步減少權限 AWS 針對您的使用案例特定的客戶管理政策。如需詳細資訊,請參閱 AWS 受管理的策略AWS 《使用者指南》中針對工作職能的IAM管理策略

  • 套用最低權限權限 — 當您使用原則設定權限時,IAM只授與執行工作所需的權限。為實現此目的,您可以定義在特定條件下可以對特定資源採取的動作,這也稱為最低權限許可。如需有關使用套用權限IAM的詳細資訊,請參閱《使用指南》IAM中的IAM《策略與權限

  • 使用IAM策略中的條件進一步限制存取 — 您可以在策略中新增條件,以限制對動作和資源的存取。例如,您可以撰寫政策條件,以指定必須使用傳送所有要求SSL。如果服務動作是透過特定使用條件,您也可以使用條件來授與對服務動作的存取權 AWS 服務,例如, AWS CloudFormation。 如需詳細資訊,請參閱《IAM使用指南》中的IAMJSON策略元素:條件

  • 使用 IAM Access Analyzer 驗證您的原IAM則,以確保安全和功能性的權限 — IAM Access Analyzer 會驗證新的和現有的原則,以便原則遵循IAM原則語言 (JSON) 和IAM最佳做法。IAMAccess Analyzer 提供超過 100 項原則檢查和可行的建議,協助您撰寫安全且功能正常的原則。如需詳細資訊,請參閱IAM使IAM用指南中的存取分析器原則驗證

  • 需要多重要素驗證 (MFA) — 如果您的案例需要使IAM用者或 root 使用者 AWS 帳戶,請開啟MFA以獲得額外的安全性。若要在呼叫API作業MFA時需要,請在原則中新增MFA條件。如需詳細資訊,請參閱《IAM使用指南》中的 < 設定MFA受保護的API存取 >。

如需有關中最佳作法的詳細資訊IAM,請參閱《IAM使用指南》IAM中的「安全性最佳作法」。

使用 Amazon SQS 控制台

若要存取 Amazon Simple Queue Service 主控台,您必須擁有最基本的一組許可。這些許可必須允許您列出和查看有關 Amazon 資SQS源的詳細信息 AWS 帳戶。 如果您建立的以身分識別為基礎的原則比所需的最低權限更嚴格,則控制台將無法如預期用於具有該原則的實體 (使用者或角色) 運作。

您不需要針對只撥打電話的使用者允許最低主控台權限 AWS CLI 或 AWS API。相反地,只允許存取符合他們嘗試執行之API作業的動作。

為了確保用戶和角色仍然可以使用 Amazon SQS 控制台,還附加了 Amazon SQS AmazonSQSReadOnlyAccess AWS 對實體的管理策略。如需詳細資訊,請參閱《使用指南》中的〈將權限新增至IAM使用者〉

允許使用者檢視他們自己的許可

此範例顯示如何建立原則,讓使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": "*" } ] }

允許使用者建立佇列

在下列範例中,我們為 Bob 建立政策,該政策可讓 Bob 存取所有 Amazon SQS 動作,但只能存取名稱前置文字字串alice_queue_的佇列。

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

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

允許開發人員將消息寫入共享隊列

在下列範例中,我們為開發人員建立群組,並附加政策,讓群組使用 Amazon SQS SendMessage 動作,但只能使用屬於指定的佇列 AWS 帳戶 並命名為MyCompanyQueue

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

您可以使用 * 代替 SendMessage 授與主體對共享佇列進行以下動作:ChangeMessageVisibilityDeleteMessageGetQueueAttributesGetQueueUrlReceiveMessageSendMessage

注意

雖然*包括其他權限類型提供的存取權,但 Amazon SQS 會分別考慮許可。例如,可以將 *SendMessage 許可同時授與一名使用者,即便 * 包含由 SendMessage 提供的存取權。

移除許可時也適用此概念。若主體僅有 * 許可,提出移除 SendMessage 許可的請求並不會使主體只獨缺該項許可。反之,由於主體並未擁有明確的 SendMessage 許可,此請求將不會起作用。若想要讓主體僅有 ReceiveMessage 許可,請先新增 ReceiveMessage 許可再移除 * 許可。

允許管理者取得佇列的一般大小

在下列範例中,我們為管理員建立群組,並附加政策,讓群組對屬於指定的所有佇列使用 Amazon SQS GetQueueAttributes 動作 AWS 帳戶。

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

允許合作夥伴將訊息傳送至特定佇列

您可以使用 Amazon SQS 政策或政策完成此任務。IAM如果您的伴侶有 AWS 帳戶,使用 Amazon SQS 政策可能更容易。但是,合作夥伴公司中擁有 AWS 安全認證可以將消息發送到隊列。如果您想限制對特定使用者或應用程式的存取,則必須將合作夥伴視為自己公司中的使用者,並使用IAM政策而不是 Amazon SQS 政策。

此範例執行下列動作:

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

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

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

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

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