AWS Inspector 的 AWS CloudFormation 模板能否添加 SNS 主题

Posted

技术标签:

【中文标题】AWS Inspector 的 AWS CloudFormation 模板能否添加 SNS 主题【英文标题】:Can AWS CloudFormation templates for AWS Inspector add an SNS Topic 【发布时间】:2018-09-06 07:19:06 【问题描述】:

我创建了一些 CloudFormation 模板来部署 Inspector 模板/目标和相关的 Lambda 函数,这些函数解析输出并将结果传递给 Slack。是否可以像在 Inspector 门户中创建模板时那样在 Inspector 的 CF 模板中包含 SNS 主题关联?

它不是 AWS::Inspector::AssessmentTemplate 的可用参数。这是我必须通过门户手动添加的内容吗?

【问题讨论】:

【参考方案1】:

我就是这样做的。我使用成云模板创建了评估目标、评估资源组和评估模板。此外,还包括一个 cloudwatch 事件规则,以每周触发评估运行。

截至目前,尚不支持通过 Inspector Assessment 模板云生成资源添加 SNS Topic,我通过 boto3 API 进行事件订阅。参考这里的 API:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/inspector.html#Inspector.Client.subscribe_to_event

如果您参考上述 API 文档,您将能够开发一个小型 python lambda 函数来为您的检查员评估模板订阅 SNS 主题。然后在配置或定义评估模板的同一模板中使用自定义资源调用该 lambda 函数,如下所示。

自定义资源如下所示:

  SubscribeToEvent: 
   Type: "Custom::<whatever_name>"
   Version: "1.0"
   Properties: 
     ServiceToken: !GetAtt <Lambda function logical name>.Arn
     AssessmentTemplateArn: !GetAtt <Assessment template logical name>.Arn
     topicArn: !Sub arn:aws:sns:$AWS::Region:$account number:<Nameofthetopic>

如果您尝试引用跨账户主题或存在于另一个账户中的主题,在这种情况下,您需要更新主题策略以向 AWS Inspector 账户授予 publish topic 权限。要查找 AWS 帐号,请参阅此处:https://docs.aws.amazon.com/inspector/latest/userguide/inspector_assessments.html#sns-topic

【讨论】:

【参考方案2】:

我看到 SNS 选项仅在 UI 和 CLI/API 中可用,我猜 UI/CLI 在后台为您创建 Cloudwatch Events 规则,您使用 AWS::Events::Rule 创建自己的规则

参考:Event Patterns

EventRule: 
  Type: "AWS::Events::Rule"
  Properties: 
    Description: "EventRule"
    EventPattern: 
      source: 
        - "aws.inspector"
      detail-type: 
        - "AWS API Call via CloudTrail"
      resources:
        - arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0
      detail:
        eventSource:
          - "inspector.amazonaws.com"
        eventName: 
          - "ASSESSMENT_RUN_COMPLETED"
    State: "ENABLED"
    Targets: 
      - arn:aws:sns:us-west-2:123456789012:exampletopic

【讨论】:

嗨。不幸的是,通过 CloudTrail API 调用(通过查看 CloudTrail 日志)跟踪的事件与评估运行启动事件本身(StartAssessmentRun)相关,而不是评估运行发出的消息(ASSESSMENT_RUN_STARTED、ASSESSMENT_RUN_COMPLETED、FINDING_REPORTED 等)。

以上是关于AWS Inspector 的 AWS CloudFormation 模板能否添加 SNS 主题的主要内容,如果未能解决你的问题,请参考以下文章

防止 spring-cloud-aws-messaging 尝试停止队列

AWS 实例配置文件不适用于 Spring Cloud AWS

带有 AWS 参数存储的 Spring Cloud

如何在本地使用 spring-cloud-starter-aws 运行应用程序?

通过代理连接时有没有办法用aws客户端配置信息配置spring cloud aws

Spring Boot、Spring Cloud AWS 和 AWS SQS 未从队列中读取