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

IAM策略允许SMS发布,但不拒绝所有SNS

潘坚白
2023-03-14

我想设置IAM策略以允许用户发布到SNS以发送SMS并发布到特定的SNS arn。

我找到了一种允许短信发布而不允许任何SNS发布的方法:使用亚马逊SNS客户端发送短信时的授权

{

    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "arn:aws:sns:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "*"
        }
    ]
}

但是这个策略明确拒绝所有其他SNS发布,所以我不能添加允许特定SNS发布的策略。

问题是SMS发布没有特定的arn。

所以我正在寻找一种方法来限制只允许发布短信的条件。但是具体的短信参数(phone number cf https://docs . AWS . Amazon . com/AWSJavaScriptSDK/latest/AWS/SNS . html # publish-property)不能在条件中过滤:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "*",
            "Condition": {"Null":{"PhoneNumber":"false"}}
        }
    ]
}

有办法实现这样的政策吗?

共有1个答案

闻人嘉木
2023-03-14

实际上,为了达到这个目的,我找到了一种使用allow with < code > not resource JSON策略元素(spec)的方法。我使用这个属性来匹配没有ARN的资源:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "NotResource": "arn:aws:sns:*:*:*"
        }
    ]
}

有了这个技巧,我可以允许所有sns发布没有ARN(但我不知道是否有任何其他服务,然后短信...).

这也允许我允许ARN在另一项政策中具体说明。

 类似资料:
  • 我在Amazon S3上使用getObject和putObject请求,在创建访问bucket的策略时,我发现如果我不允许listBucket,就会出现“拒绝访问”错误。 问题是listBucket意味着用户可以列出bucket中的密钥,这会带来安全威胁。 是否可以在不允许listBucket的情况下允许getObject和putObject?或者有解决方法吗? 以下是政策:

  • 我已创建IAM策略并分配给IAM用户。 请查找保险单 我未选中s3 bucket testingbucket00的“阻止新公共bucket策略”。 我尝试登录aws控制台使用IAM用户列出所有桶,但显示"访问为错误"。 我想给IAM用户分配一个桶,请帮忙。

  • Meteor 的安全系统不需要我们在每次修改数据的时候,在各自的函数里面进行手动检查。 例如,对于一个博客系统,我们常常需要做很多操作,往新帖子上添加属性,当发布帖子的时候进行特定检查。这些操作都是围绕帖子(post)这个对象进行的,所以我们应该为帖子设置一个专门的函数进行安全检查。 但在另一方面,我们又不希望为修改帖子或删除帖子这些简单的操作编写特定的函数。我们只需要在这些操作之前,检查用户是否

  • 在让IAM策略为我的SQS队列工作时遇到问题,我尝试了IAM策略模拟器。无论我的政策多么简单,它总是说它被拒绝了。 以下政策旨在允许对任何SQS资源采取任何行动。这是我附加到特定用户的一个策略,这就是没有指定主体的原因。 当我尝试在策略模拟器中运行这个列表队列操作时,我会被拒绝:隐式拒绝(没有匹配的声明)。这种说法怎么可能不符合呢? 以下是策略编辑器上被拒绝的截图:

  • 以下是我所做的: 提前致谢

  • 我用Spring靴和Spring安全。 我这样添加基于url的安全性 有没有办法只授权get、post、put…在url上担任某些角色?