AWS SNS策略IP地址访问

时间:2017-12-11 21:46:05

标签: amazon-web-services amazon-iam amazon-sns

在SNS中,我设置了一个主题。

在IAM中,我设置了一个策略,允许仅从特定IP地址访问主题ARN:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "sns:Publish",
                "sns:Subscribe"
            ],
            "Resource": "arn:aws:sns:us-east-1:111111111111:topic_name",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "xxx.xxx.xxx.x"
                }
            }
        }
    ]
}

我已将此政策附加到群组,并将用户添加到此群组。

在C#windows应用程序中,我现在可以从策略中列出的指定SourceIp订阅和发布主题。

但在这种情况下,我需要使用IAM用户的AccessKey和SecretAccessKey。

只要SourceIp正确,我是否可以绕过需要AccessKey和SecretKey的方式?

我看到SNS主题“主题策略”,但我无法弄清楚如何添加IpAddress条件。这可能吗?

主题政策:

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:GetTopicAttributes",
        "SNS:SetTopicAttributes",
        "SNS:AddPermission",
        "SNS:RemovePermission",
        "SNS:DeleteTopic",
        "SNS:Subscribe",
        "SNS:ListSubscriptionsByTopic",
        "SNS:Publish",
        "SNS:Receive"
      ],
      "Resource": "arn:aws:sns:us-east-1:111111111111:topic_name",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "111111111111"
        }
      }
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

Amazon SNS需要身份验证和授权才能使用该服务。这意味着IAM用户或角色。这意味着您必须使用凭据来访问该服务。

我会将IAM用户策略与SNS策略结合起来,以控制谁(用户或服务)可以发布/订阅SNS。

有许多AWS服务可以使用SNS。您的IP地址政策可能会破坏它们。

SNS: Controlling User Access to Your AWS Account