【问题标题】:How to add permissions to a queue to allow a user in a different account permissions on the queue如何向队列添加权限以允许不同帐户中的用户对队列的权限
【发布时间】:2019-03-07 22:19:57
【问题描述】:
sqs.addPermission("https://sqs.eu-west-1.amazonaws.com/111111111111/queueName", "remoteAccess",
        Arrays.asList("arn:aws:iam::222222222222:user/user.x@mycompany.com"), Arrays.asList(SQSActions.SendMessage.name()));

应该 (IMO) 将队列的权限添加到不同帐户中的用户。

我得到一个错误。

值 [arn:aws:iam::222222222222:user/user.x@mycompany.com] 参数 PrincipalId 无效。原因:无法验证。 (服务: 亚马逊SQS;状态码:400;错误代码:无效参数值;

有人知道如何以编程方式让不同帐户中的特定用户访问队列吗?

这与我通过 sqs Web 控制台添加权限时看到的用户 arn 相同。

【问题讨论】:

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


    【解决方案1】:

    文档的这一部分有跨账户 SQS 访问策略的示例:https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-customer-managed-policy-examples.html

    您需要在队列级别和其他帐户中的委托人上应用策略。

    例如,在队列级别

    {
      "Version": "2012-10-17",
      "Statement": {
        "Effect": "Allow",
        "Principal": {"AWS": "111122223333"},
        "Action": [
          "sqs:SendMessage",
          "sqs:ReceiveMessage"
        ],
        "Resource": ["arn:aws:sqs:*:123456789012:queue1"],
      }
    }
    

    如果您确实想授予特定用户、组或角色的访问权限,您可以像这样使用Principal 字段:

    "Principal": {
             "AWS": [
                "arn:aws:iam::111122223333:role/role1",
                "arn:aws:iam::111122223333:user/username1"
             ]
          },
    

    而在另一个账户中,给需要访问队列的角色或用户(你显然可以限制SQS API列表,这只是一个例子)

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

    【讨论】:

    • 我只想向另一个帐户上的特定用户授予访问权限。不是每个人都在那里
    • 在那个链接上 docs.aws.amazon.com/AWSSimpleQueueService/latest/… 我正在尝试做类似示例 4 的事情
    • 没问题,AWS Principal 不需要是账户,可以是特定的用户、组或角色。我会编辑答案
    猜你喜欢
    • 1970-01-01
    • 2022-08-14
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多