我正试图按照本指南将消息从未加密的SNS主题传递到加密的SQS队列。我能够完成";为AWS服务配置KMS权限";步骤,但我在";为生产者配置KMS权限"步我已经创建了IAM角色,但是将这个角色附加到我的SNS主题中是我特别困惑的地方。以下是我自己的研究无法回答的一些问题:
- IAM角色是否可以附加到特定项目(SNS主题、SQS队列等(?如果没有,还有什么其他方式可以授予特定项目的权限
- 当指令中提到";生产者";,这是指SNS主题还是拥有SNS主题的AWS帐户
非常感谢您的帮助。
编辑:
这是我当前的AWS KMS密钥策略:
{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Allow administration of the key",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::${aws_account_id}:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow SNS to use KMS",
"Effect": "Allow",
"Principal": {
"Service": "sns.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
]
}
每当我将以下语句添加到Statement
列表中的KMS密钥策略时,我都会得到错误";MalformedPolicyDocumentException-策略包含一个没有主体的语句":
{
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "${kms_customer_managed_key_arn}"
},
{
"Effect": "Allow",
"Action": [
"sqs:SendMessage"
],
"Resource": "${sqs_queue_arn}"
}
如果没有,还有什么其他方式可以授予特定项目的权限?
链接中的权限附加到您的KMS CMK密钥策略中。
当指令提到";生产者";,这是指SNS主题还是拥有SNS主题的AWS帐户?
生产者是发送消息的任何人或事物。它可以是lambda函数、ec2实例或IAM用户/角色。在这种情况下,您将授予生产者对sendMessage
的权限,并使用KMS密钥。对于lambda,它将处于lambda执行角色中,例如它将处于实例角色中。