gpt4 book ai didi

amazon-web-services - 在启用服务器端加密的情况下跨账户访问 AWS SQS

转载 作者:行者123 更新时间:2023-12-03 15:57:24 25 4
gpt4 key购买 nike

上下文:AWS 帐户 2 中有一个 API,它将 SQS url 作为其输入之一并将输出发布到它。帐户 1 的所有者希望将此 API 与他自己的 SQS 队列一起使用。

账户 1 有一个启用了 SSE-KMS 的 SQS 队列。账户 1 的所有者希望账户 2 中的特定 IAM 用户能够发布到此 SQS 队列。我知道实现这一目标的唯一方法是:

  • 将外部账户 2 的 ID 添加到账户 1 的 KMS key 设置
  • 向账户 2 的 IAM 用户添加策略以允许访问给定的 KMS key

  • 这种方法的问题是两个帐户都需要采取行动。有没有一种更简单的方法来实现相同的结果,其中只有帐户 1 的所有者需要做任何事情并且不需要打扰帐户 2 的所有者?

    编辑 1:当我们在没有启用 SQS 加密的情况下尝试我们的集成时,一切正常。这就是我们知道这是 KMS 问题,而不是 SQS 政策的方式。一旦我们启用 SQS 加密,它就会由于 AccessDeniedException 而开始失败

    最佳答案

    为了测试这种情况,我做了以下事情:

    在账户 A 中:

  • 创建了 User-1
  • 创建了 KMS key
  • 授予我使用 key 的权限,但不授予 User-1
  • 在 Account-A 中创建队列,激活 SSE 并选择新 key
  • 授予 User-1 AmazonSQSFullAccess 权限策略

  • 然后我以 User-1 的身份运行一个命令来向队列发送一条消息:
    aws sqs send-message --queue-url https://sqs.ap-southeast-2.amazonaws.com/123456789012/my-queue --message-body foo --profile user-1

    回应是:

    An error occurred (KMS.AccessDeniedException) when calling the SendMessage operation: User: arn:aws:iam::123456789012:user/user-1 is not authorized to perform: kms:GenerateDataKey on resource: arn:aws:kms:ap-southeast-2:123456789012:key/xxx (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: xxx)



    因此,这表明用户在向队列发送消息时必须被授予使用 KMS 的权限,显然是 kms:GenerateDataKey 。我假设每条消息都通过 KMS 生成的唯一 key 单独加密。

    然后我授予 User-1 使用 KMS key 的权限,命令成功完成。因此,它在同一个帐户中工作。

    然后,在 Account-2 中:
  • 创建了用户 2
  • 授予 AmazonSQSFullAccess 权限

  • 当我使用 User-2 的凭据再次运行命令时,我收到:

    An error occurred (AccessDenied) when calling the SendMessage operation: Access to the resource https://ap-southeast-2.queue.amazonaws.com/ is denied.



    这是意料之中的,因为 User-2 位于不同的帐户 (Account-2) 中。

    然后,我转到 Account-1 中的 SQS 队列,并通过提供 User-2 的 ARN 添加对 User-2 的权限。

    我再次运行命令并得到熟悉的:

    An error occurred (KMS.AccessDeniedException) when calling the SendMessage operation: null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: xxx)



    请注意,它在错误中提到了 ASKMS

    然后我更新了 KMS key 以允许 arn:aws:iam::<Account-2>:root 作为 外部帐户

    那仍然没有帮助。结果我不得不向 User-2 添加一些 kms:* 类型的权限。 (太多权限,但我越来越懒了!)

    这,然后工作。

    然后我删除了 KMS 外部帐户权限,它仍然有效。

    所以,似乎:
  • Account-2 中的 User-2 需要调用 SQS 和 KMS 的权限
  • Account-1 中的 SQS 队列需要权限以允许 User-2 使用队列

  • 您可能想问他们是否真的、真的想使用 KMS key ! :)

    关于amazon-web-services - 在启用服务器端加密的情况下跨账户访问 AWS SQS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50756932/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com