Sha256: b1c0826990df7c89485ca58477644abfd4f6028f62dfef289557a5a38f00731f

Contents?: true

Size: 1.38 KB

Versions: 70

Compression:

Stored size: 1.38 KB

Contents

require "resource_support/aws/aws_plural_resource_mixin"
require "resource_support/aws/aws_backend_base"
require "aws-sdk-iam"

class AwsIamGroups < Inspec.resource(1)
  name "aws_iam_groups"
  desc "Verifies settings for AWS IAM groups in bulk"
  example <<~EXAMPLE
    describe aws_iam_groups do
      it { should exist }
    end
  EXAMPLE
  supports platform: "aws"

  include AwsPluralResourceMixin

  def validate_params(resource_params)
    unless resource_params.empty?
      raise ArgumentError, "aws_iam_groups does not accept resource parameters."
    end

    resource_params
  end

  # Underlying FilterTable implementation.
  filter = FilterTable.create
  filter.register_column(:group_names, field: :group_name)
  filter.install_filter_methods_on_resource(self, :table)

  def to_s
    "IAM Groups"
  end

  def fetch_from_api
    backend = BackendFactory.create(inspec_runner)
    @table = []
    pagination_opts = {}
    loop do
      api_result = backend.list_groups(pagination_opts)
      @table += api_result.groups.map(&:to_h)
      pagination_opts = { marker: api_result.marker }
      break unless api_result.is_truncated
    end
  end

  class Backend
    class AwsClientApi < AwsBackendBase
      BackendFactory.set_default_backend(self)
      self.aws_client_class = Aws::IAM::Client

      def list_groups(query = {})
        aws_service_client.list_groups(query)
      end
    end
  end
end

Version data entries

70 entries across 70 versions & 1 rubygems

Version Path
inspec-4.56.58 lib/resources/aws/aws_iam_groups.rb
inspec-4.56.20 lib/resources/aws/aws_iam_groups.rb
inspec-4.56.19 lib/resources/aws/aws_iam_groups.rb
inspec-4.56.17 lib/resources/aws/aws_iam_groups.rb
inspec-4.52.9 lib/resources/aws/aws_iam_groups.rb
inspec-4.50.3 lib/resources/aws/aws_iam_groups.rb
inspec-4.49.0 lib/resources/aws/aws_iam_groups.rb
inspec-4.46.13 lib/resources/aws/aws_iam_groups.rb
inspec-4.41.20 lib/resources/aws/aws_iam_groups.rb
inspec-4.41.2 lib/resources/aws/aws_iam_groups.rb
inspec-4.38.9 lib/resources/aws/aws_iam_groups.rb
inspec-4.38.3 lib/resources/aws/aws_iam_groups.rb
inspec-4.37.30 lib/resources/aws/aws_iam_groups.rb
inspec-4.37.25 lib/resources/aws/aws_iam_groups.rb
inspec-4.37.23 lib/resources/aws/aws_iam_groups.rb
inspec-4.37.20 lib/resources/aws/aws_iam_groups.rb
inspec-4.37.17 lib/resources/aws/aws_iam_groups.rb
inspec-4.37.8 lib/resources/aws/aws_iam_groups.rb
inspec-4.37.0 lib/resources/aws/aws_iam_groups.rb
inspec-4.36.4 lib/resources/aws/aws_iam_groups.rb