Sha256: 0e75d754590cb67ad0c8c7324fa285e161cb6c17d421e386b4f5b3c7a1a909d2

Contents?: true

Size: 1.25 KB

Versions: 21

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

#
# Collect WAFv2 resources
#
class WAFV2 < Mapper
  #
  # Returns an array of resources.
  #
  # TODO: test live
  # TODO: resolve scope (e.g. CLOUDFRONT supported?)
  # TODO: confirm paging behavior
  #
  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'
          # struct.arn = "arn:aws:#{@service}:#{@region}::web_acl/#{acl.id}"

          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: 'ResourceArn' }).each do |r|
            struct.resources = r.resource_arns.map(&:to_h)
          end

          resources.push(struct.to_h)
        end
      end
    end

    resources
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
aws_recon-0.5.6 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.5.5 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.5.4 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.5.3 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.5.2 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.5.1 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.5.0 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.4.6 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.4.5 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.4.4 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.4.3 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.4.2 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.4.1 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.4.0 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.3.5 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.3.4 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.3.3 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.3.2 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.3.1 lib/aws_recon/collectors/wafv2.rb
aws_recon-0.3.0 lib/aws_recon/collectors/wafv2.rb