如何为特定Cognito标识的SQS队列创建IAM策略

时间:2018-06-04 17:56:32

标签: amazon-web-services amazon-cognito amazon-sqs amazon-iam cognito

我正在尝试创建要应用于SQS队列的IAM策略。该策略应将对队列的访问限制为单个Cognito联合身份。

我发现来自亚马逊的this引用了如何实现这一点但是在将策略应用于SQS队列时遇到了问题。

以下是我要申请的政策。

{
  "Version": "2012-10-17",
  "Id": "arn:aws:sqs:us-west-2:604080725100:Test2.fifo/SQSDefaultPolicy",
  "Statement": [
    {
      "Sid": "Sid1528133390193",
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "SQS:*",
      "Condition": {
        "StringEquals": {
            "cognito-identity.amazonaws.com:aud": "us-east-1:ff1b33f4-7f66-47a5-b7ff-9696b0e1fb52",
            "cognito-identity.amazonaws.com:sub": ["us-east-1:4a6d7e43-4522-41fb-9248-b5b79933b8e9"]
        }
      }
    }
  ]
}

用于编辑政策的在线用户界面显示在审核屏幕中:

Allow   None    
All SQS Actions (SQS:*)
StringEquals
cognito-identity.amazonaws.com:aud: "us-east-1:ff1b33f4-7f66-47a5-b7ff-9696b0e1fb52"
cognito-identity.amazonaws.com:sub: "us-east-1:4a6d7e43-4522-41fb-9248-b5b79933b8e9"

按下应用后,会出现以下错误:

Failed to save changes to the policy document. Reason: com.amazonaws.services.sqs.model.AmazonSQSException: We encountered an internal error. Please try again.

我不确定该政策有什么问题。我正在寻找任何修复策略的帮助,或者寻求将SQS队列限制为单个Cognito身份的不同策略。

1 个答案:

答案 0 :(得分:0)

不幸的是,SQS仅支持subset of the condition keys,而认知用户ID并非其中之一。我读过一个article,它通过创建所有用户都可以读取但实际上不可猜测的随机队列名称来解决了这个问题。