class WAFV2

Collect WAFv2 resources

Public Instance Methods

collect() click to toggle source

Returns an array of resources.

TODO: resolve scope (e.g. CLOUDFRONT supported?)

# File lib/aws_recon/collectors/wafv2.rb, line 12
def collect
  resources = []

  #
  # list_web_acls
  #
  # %w[CLOUDFRONT REGIONAL].each do |scope|
  %w[REGIONAL].each do |scope|
    @client.list_web_acls({ scope: scope }).each_with_index do |response, page|
      log(response.context.operation_name, page)

      response.web_acls.each do |acl|
        struct = OpenStruct.new(acl.to_h)
        struct.type = 'web_acl'

        params = {
          name: acl.name,
          scope: scope,
          id: acl.id
        }

        # get_web_acl
        @client.get_web_acl(params).each do |r|
          struct.arn = r.web_acl.arn
          struct.details = r.web_acl
        end

        # list_resources_for_web_acl
        @client.list_resources_for_web_acl({ web_acl_arn: acl.arn }).each do |r|
          struct.resources = r.resource_arns.map(&:to_h)
        end

        resources.push(struct.to_h)
      end
    end
  end

  resources
end