Tof*_*nov 1 amazon-sqs amazon-web-services amazon-iam aws-kms
上下文:AWS账户2中存在一个API,它将SQS url作为其输入之一并将其发布输出。帐户1的所有者希望将此API与自己的SQS队列一起使用。
帐户1具有启用了SSE-KMS的SQS队列。帐户1的所有者希望帐户2中的特定IAM用户能够发布到此SQS队列。我知道的实现此目标的唯一方法是:
这种方法的问题在于两个帐户都需要采取措施。是否只有一个帐户1的所有者需要做任何事情而无需打扰帐户2的所有者,是否有更简单的方法来达到相同的结果?
编辑1:当我们尝试在不启用SQS加密的情况下进行集成时,一切正常。这就是我们所知道的是KMS问题,而不是SQS政策。启用SQS加密后,由于AccessDeniedException,它开始失败
为了测试这种情况,我做了以下工作:
在帐户A中:
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
Run Code Online (Sandbox Code Playgroud)
响应是:
调用SendMessage操作时发生错误(KMS.AccessDeniedException):用户:arn:aws:iam :: 123456789012:user / user-1无权执行:kms:GenerateDataKey资源:arn:aws:kms:ap- southeast-2:123456789012:key / xxx(服务:AWSKMS;状态代码:400;错误代码:AccessDeniedException;请求ID:xxx)
因此,这表明在向队列发送消息(显然是)时,必须授予该用户使用KMS的权限kms:GenerateDataKey。我假设每个消息都是通过KMS生成的唯一密钥分别加密的。
然后,我授予了User-1使用KMS密钥的权限,并且命令成功完成。因此,它在同一帐户中运行。
然后,在帐户2中:
AmazonSQSFullAccess权限当我再次使用User-2的凭据运行命令时,收到以下消息:
调用SendMessage操作时发生错误(AccessDenied):拒绝访问资源https://ap-southeast-2.queue.amazonaws.com/。
这是预期的,因为用户2在另一个帐户(帐户2)中。
然后,我进入了Account-1中的SQS队列,并通过提供User-2的ARN为User-2添加了权限。
我再次运行命令并熟悉了:
调用SendMessage操作时发生错误(KMS.AccessDeniedException):null(服务:AWSKMS;状态代码:400;错误代码:AccessDeniedException;请求ID:xxx)
请注意,它ASKMS在错误中提及。
然后,我更新了KMS密钥以允许arn:aws:iam::<Account-2>:root用作外部帐户。
那仍然没有帮助。原来,我不得不kms:*向User-2 添加一些类型许可。(权限太大,但是我很懒!)
这,然后工作。
然后,我删除了KMS 外部帐户权限,该权限仍然有效。
因此,似乎:
您可能要问他们是否真的想要使用KMS密钥!:)
| 归档时间: |
|
| 查看次数: |
2265 次 |
| 最近记录: |