AWS SNS主题策略Cloudformation

7
尝试使用云形成脚本创建SNS主题。除了主题策略之外,一切都正常工作。
以下是默认情况下的内容:

enter image description here

我希望使用云形成脚本更新以下政策。 enter image description here 对于如何实现此目标,有什么建议吗?
3个回答

9

如评论中所指出的那样,您不应使用AWS:*作为主体,因为它授予拥有AWS账户的任何人访问权限。

要创建SNS主题并限制对某些服务或帐户中的任何人的访问,请使用以下示例。

“AllowServices” SID 显示如何添加多个服务,而 AllowAWS 允许账户中的任何内容都可以访问它。

---
AWSTemplateFormatVersion: '2010-09-09'

Parameters:
  Email:
    Type: String
    Default: <your name here>

Resources:
  Topic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: TestTopic
      Subscription:
      - Endpoint: !Ref Email
        Protocol: email

  TopicPolicy:
    Type: AWS::SNS::TopicPolicy
    Properties:
      PolicyDocument:
        Statement:
          - Sid: AllowServices
            Effect: Allow
            Principal:
              Service:
                - events.amazonaws.com
                - cloudwatch.amazonaws.com
            Action: 'sns:Publish'
            Resource:
              - !Ref Topic
          - Sid: AllowAWS
            Effect: Allow
            Principal:
              AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
            Action: 'sns:Publish'
            Resource:
              - !Ref Topic
      Topics:
        - !Ref Topic

7

1

您可以使用这个-我已经删除了默认条件,该条件会锁定自己的帐户

SNSAccessPolicy:
    Type: AWS::SNS::TopicPolicy
    Properties:
     PolicyDocument:
       Id: <Yourtopic>
       Statement:
         -
           Action: 
            - "sns:Publish"
            - "SNS:GetTopicAttributes"
            - "SNS:SetTopicAttributes"
            - "SNS:AddPermission"
            - "SNS:RemovePermission"
            - "SNS:DeleteTopic"
            - "SNS:Subscribe"
            - "SNS:ListSubscriptionsByTopic"
            - "SNS:Publish"
            - "SNS:Receive"
           Effect: Allow
           Principal:
             AWS: "*"
           Resource:
             Ref: <Yourtopic>
     Topics:
       -
         Ref: <Yourtopic>

5
不要使用此功能 - 它将授予任何拥有您的SNS arn的人删除、修改等操作的能力。 - Matt McCann
我在我的使用案例中使用了这个,该案例仅需要事件服务的"sns:Publish"权限。 - Karthik Vasishta Ramesh
如@MattMcCann所说,不要使用这个。更具体地说,除非出于某种原因希望让AWS中的所有人都有访问权限,否则永远不要使用'AWS:"*"'。这几乎总是一个坏主意。 - runamok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接