当前位置: 首页 > 知识库问答 >
问题:

将IAM策略附加到SNS主题

顾昊穹
2023-03-14

我正在尝试按照本指南将消息从未加密的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": "*"
        }
    ]
}

每当我将以下语句添加到列表中的KMS密钥策略中时,就会出现错误“MalformedPolicyDocumentException-策略包含没有主体的语句”:

{
    "Effect": "Allow",
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
    ],
    "Resource": "${kms_customer_managed_key_arn}"
},
{
    "Effect": "Allow",
    "Action": [
        "sqs:SendMessage"
    ],
    "Resource": "${sqs_queue_arn}"
}

共有1个答案

丁俊爽
2023-03-14

如果没有,还有什么其他方法可以授予特定项目的权限?

链接中的权限附加到您的KMS CMK密钥策略。

当说明书提到“制作人”时,这是指SNS主题还是指拥有SNS主题的AWS帐户?

生产者是发送消息的任何人或任何东西。它可以是lambda函数、ec2实例或IAM用户/角色。在这种情况下,您授予生产者sendMessage的权限并使用KMS密钥。对于lambda,它将处于lambda执行角色,例如,它将处于实例角色。

 类似资料:
  • 我对策略变量${aws: username}感到困惑,即它是我在AWS帐户中登录的IAM用户名,还是我在创建实例时手动输入的标记值。 实际上,我想实现ec2实例的唯一所有者应该是执行操作

  • 我正在尝试从CloudWatch启动StepFunction。当事件源是一个时间表时,这就像一个魅力。但是,当我尝试创建事件模式来观看相应的SNS主题时,CloudWatch看不到它的发布。我尝试了两种默认模式: 并使用arn: 在这两种情况下,当我发布到主题时都没有发生任何事情。我做错了什么?更新:不幸的是,我不明白“事件模式”规则是干什么的,它在其他情况下不起作用——即使事件是从lambda手

  • 我想设置IAM策略以允许用户发布到SNS以发送SMS并发布到特定的SNS arn。 我找到了一种允许短信发布而不允许任何SNS发布的方法:使用亚马逊SNS客户端发送短信时的授权 但是这个策略明确拒绝所有其他SNS发布,所以我不能添加允许特定SNS发布的策略。 问题是SMS发布没有特定的arn。 所以我正在寻找一种方法来限制只允许发布短信的条件。但是具体的短信参数(phone number cf h

  • 我有一个SNS(用KMS加密)是由两个lambda订阅的。我正在尝试向其中一个订阅添加重新驱动策略。问题中的DLQ已加密。 添加重新驱动策略会给我一个错误‘无法检查Amazon SQS队列权限。请确保队列存在,并且您的帐户具有读取队列属性的权限。要允许Amazon SNS主题向Amazon SQS队列发送消息,您必须创建Amazon SQS队列策略‘

  • 为了进一步加强我们解决方案的安全性,我们现在正在研究使用的SNS主题和SQS队列。我们的所有组件都位于同一个AWS帐户中。 首先,我们希望限制对基于IP的SQS队列的访问。因此,只允许来自NAT网关IP的请求。我们不允许匿名访问SQS队列。 但似乎没有办法实现这一点,因为SQS队列的创建者(AWS帐户id)在默认情况下具有访问权限。因此,您无法在同一AWS帐户id中为其他用户创建有效权限。因为新创

  • 以下gCloud留档 将IAM策略绑定添加到IAM服务帐户 https://cloud.google.com/sdk/gcloud/reference/iam/service-accounts/add-iam-policy-binding 要将角色/编辑器的角色的IAM策略绑定添加到服务号test-proj1@example.domain.com,请运行: 为项目添加IAM策略绑定 https:/