【问题标题】:AWS SNS Policy IP Address AccessAWS SNS 策略 IP 地址访问
【发布时间】:2017-12-11 21:46:05
【问题描述】:

在 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"
        }
      }
    }
  ]
}

【问题讨论】:

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


    【解决方案1】:

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

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

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

    SNS: Controlling User Access to Your AWS Account

    【讨论】:

    • SNS 有一个 topic policy 类似于 S3 中的存储桶策略,并且似乎可以使用此策略来允许匿名访问(这是否是一个好主意完全是另一个问题)。例如,Unreliable Town Clock 似乎允许匿名订阅请求。
    • @Michael-sqlbot。这很有趣。谢谢你。我查看了他的代码,看起来他正在使用 AWS:* 主体,所以这仍然需要 AWS 凭证才能订阅。但是,他并未发布复制其 Chime 服务所需的所有内容。
    • 您可能是正确的,但请注意,在 S3 中,"Principal": { "AWS": "*" } 包括匿名用户。 docs.aws.amazon.com/AmazonS3/latest/dev/…
    • @Michael-sqlbot。你是对的,我是错的。我实际上认为 AWS:* 意味着通过 AWS 进行身份验证,而不是真正的匿名。我忽略了一个基本项目。
    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多