aws_recon 0.2.23 → 0.2.28

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +17 -1
  3. data/lib/aws_recon/collectors/accessanalyzer.rb +5 -0
  4. data/lib/aws_recon/collectors/acm.rb +5 -0
  5. data/lib/aws_recon/collectors/apigateway.rb +5 -0
  6. data/lib/aws_recon/collectors/apigatewayv2.rb +5 -0
  7. data/lib/aws_recon/collectors/applicationautoscaling.rb +5 -0
  8. data/lib/aws_recon/collectors/athena.rb +5 -0
  9. data/lib/aws_recon/collectors/autoscaling.rb +5 -0
  10. data/lib/aws_recon/collectors/backup.rb +5 -0
  11. data/lib/aws_recon/collectors/cloudformation.rb +5 -0
  12. data/lib/aws_recon/collectors/cloudfront.rb +5 -0
  13. data/lib/aws_recon/collectors/cloudtrail.rb +5 -0
  14. data/lib/aws_recon/collectors/cloudwatch.rb +5 -0
  15. data/lib/aws_recon/collectors/cloudwatchlogs.rb +5 -0
  16. data/lib/aws_recon/collectors/codebuild.rb +5 -0
  17. data/lib/aws_recon/collectors/codepipeline.rb +29 -9
  18. data/lib/aws_recon/collectors/configservice.rb +5 -0
  19. data/lib/aws_recon/collectors/directconnect.rb +5 -0
  20. data/lib/aws_recon/collectors/{directyservice.rb → directoryservice.rb} +5 -0
  21. data/lib/aws_recon/collectors/dms.rb +6 -1
  22. data/lib/aws_recon/collectors/dynamodb.rb +5 -0
  23. data/lib/aws_recon/collectors/ec2.rb +6 -3
  24. data/lib/aws_recon/collectors/ecr.rb +8 -1
  25. data/lib/aws_recon/collectors/ecs.rb +12 -9
  26. data/lib/aws_recon/collectors/efs.rb +5 -0
  27. data/lib/aws_recon/collectors/eks.rb +5 -0
  28. data/lib/aws_recon/collectors/elasticache.rb +5 -0
  29. data/lib/aws_recon/collectors/elasticloadbalancing.rb +5 -0
  30. data/lib/aws_recon/collectors/elasticloadbalancingv2.rb +5 -0
  31. data/lib/aws_recon/collectors/elasticsearch.rb +5 -0
  32. data/lib/aws_recon/collectors/emr.rb +5 -0
  33. data/lib/aws_recon/collectors/firehose.rb +5 -0
  34. data/lib/aws_recon/collectors/guardduty.rb +5 -2
  35. data/lib/aws_recon/collectors/iam.rb +20 -7
  36. data/lib/aws_recon/collectors/kafka.rb +5 -0
  37. data/lib/aws_recon/collectors/kinesis.rb +5 -0
  38. data/lib/aws_recon/collectors/kms.rb +7 -1
  39. data/lib/aws_recon/collectors/lambda.rb +5 -0
  40. data/lib/aws_recon/collectors/lightsail.rb +5 -0
  41. data/lib/aws_recon/collectors/organizations.rb +27 -7
  42. data/lib/aws_recon/collectors/rds.rb +7 -0
  43. data/lib/aws_recon/collectors/redshift.rb +5 -0
  44. data/lib/aws_recon/collectors/route53.rb +5 -0
  45. data/lib/aws_recon/collectors/route53domains.rb +5 -0
  46. data/lib/aws_recon/collectors/s3.rb +8 -1
  47. data/lib/aws_recon/collectors/sagemaker.rb +25 -1
  48. data/lib/aws_recon/collectors/secretsmanager.rb +5 -0
  49. data/lib/aws_recon/collectors/securityhub.rb +26 -6
  50. data/lib/aws_recon/collectors/servicequotas.rb +7 -1
  51. data/lib/aws_recon/collectors/ses.rb +5 -0
  52. data/lib/aws_recon/collectors/shield.rb +7 -1
  53. data/lib/aws_recon/collectors/sns.rb +5 -0
  54. data/lib/aws_recon/collectors/sqs.rb +6 -1
  55. data/lib/aws_recon/collectors/ssm.rb +5 -0
  56. data/lib/aws_recon/collectors/support.rb +8 -1
  57. data/lib/aws_recon/collectors/transfer.rb +5 -0
  58. data/lib/aws_recon/collectors/wafv2.rb +5 -0
  59. data/lib/aws_recon/collectors/workspaces.rb +5 -0
  60. data/lib/aws_recon/collectors/xray.rb +5 -0
  61. data/lib/aws_recon/lib/mapper.rb +8 -6
  62. data/lib/aws_recon/lib/patch.rb +2 -0
  63. data/lib/aws_recon/options.rb +12 -6
  64. data/lib/aws_recon/services.yaml +28 -0
  65. data/lib/aws_recon/version.rb +1 -1
  66. data/readme.md +79 -35
  67. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54fad8cccce80029ddf2ae72d7dc8bccb12677d1605f113c16416f2b9e897536
4
- data.tar.gz: '02280cf3c096fa03d3b893a19ef444c14f891ab6f1694997ca76905a11290b29'
3
+ metadata.gz: 8df2a508259a0c930a5bfa6c9c01965eeb1fe9955fb6dc48e812303a79062d85
4
+ data.tar.gz: 4118ae4e81b0361d8e6c5193eb4adeb69f7c6c0e37e2e8c13ed6e4357c4b377b
5
5
  SHA512:
6
- metadata.gz: cf30189b0f288c076d026104a1ce43775b9ae4704f842aa2d77d7166773a232716e85822392321fe958a74896a2ced3b0f0e36ffbfb82e2b4f5a98f33f17f660
7
- data.tar.gz: e0990bc486ffaf659d84de6a23e8d214bb9327c81d8518810682107e1c9144b7d40f35d5a3addf61ce1b5b5b57f3a398898c83b81b6187aa9911b7650e5be5d2
6
+ metadata.gz: 633d6e44f13ffb2d1cb34aad13cb0139db582e62fe195564f476d41ac267762d28a5f2c9baacc5fee97344d960fff19ef95fc21d72f2bdbf96f701c107107b4a
7
+ data.tar.gz: e61afaa923d73cf1d48708f8eff4ca5462cc24fd59a3227178356451cb31a1553a7ad9f5818d52da597171bfa49ef58b8259ff4e5a49ae89c1c3bd8f8a3feb4a
@@ -9,4 +9,20 @@
9
9
  #
10
10
  # See https://docs.rubocop.org/rubocop/configuration
11
11
  Layout/LineLength:
12
- Max: 80
12
+ Max: 100
13
+ Style/FrozenStringLiteralComment:
14
+ EnforcedStyle: always_true
15
+ Safe: true
16
+ SafeAutoCorrect: true
17
+ Style/ClassAndModuleChildren:
18
+ Enabled: false
19
+ Metrics/BlockLength:
20
+ Enabled: false
21
+ Metrics/MethodLength:
22
+ Enabled: false
23
+ Metrics/PerceivedComplexity:
24
+ Enabled: false
25
+ Metrics/CyclomaticComplexity:
26
+ Enabled: false
27
+ Metrics/AbcSize:
28
+ Enabled: false
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect AccessAnalyzer resources
5
+ #
1
6
  class AccessAnalyzer < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect ACM resources
5
+ #
1
6
  class ACM < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect API Gateway resources
5
+ #
1
6
  class APIGateway < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect API Gateway v2 resources
5
+ #
1
6
  class ApiGatewayV2 < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect ApplicationAutoScaling resources
5
+ #
1
6
  class ApplicationAutoScaling < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect Athena resources
5
+ #
1
6
  class Athena < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect AutoScaling resources
5
+ #
1
6
  class AutoScaling < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect Backup resources
5
+ #
1
6
  class Backup < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect CloudFormation resources
5
+ #
1
6
  class CloudFormation < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect CloudFront resources
5
+ #
1
6
  class CloudFront < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect CloudTrail resources
5
+ #
1
6
  class CloudTrail < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect CloudWatch resources
5
+ #
1
6
  class CloudWatch < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect CloudWatchLogs resources
5
+ #
1
6
  class CloudWatchLogs < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect CodeBuild resources
5
+ #
1
6
  class CodeBuild < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect CodePipeline resources
5
+ #
1
6
  class CodePipeline < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -8,20 +13,35 @@ class CodePipeline < Mapper
8
13
  #
9
14
  # list_pipelines
10
15
  #
11
- @client.list_pipelines.each_with_index do |response, page|
12
- log(response.context.operation_name, page)
16
+ begin
17
+ @client.list_pipelines.each_with_index do |response, page|
18
+ log(response.context.operation_name, page)
13
19
 
14
- # get_pipeline
15
- response.pipelines.each do |pipeline|
16
- resp = @client.get_pipeline(name: pipeline.name)
17
- struct = OpenStruct.new(resp.pipeline.to_h)
18
- struct.type = 'pipeline'
19
- struct.arn = resp.metadata.pipeline_arn
20
+ # get_pipeline
21
+ response.pipelines.each do |pipeline|
22
+ resp = @client.get_pipeline(name: pipeline.name)
23
+ struct = OpenStruct.new(resp.pipeline.to_h)
24
+ struct.type = 'pipeline'
25
+ struct.arn = resp.metadata.pipeline_arn
20
26
 
21
- resources.push(struct.to_h)
27
+ resources.push(struct.to_h)
28
+ end
22
29
  end
30
+ rescue Aws::CodePipeline::Errors::ServiceError => e
31
+ log_error(e.code)
32
+
33
+ raise e unless suppressed_errors.include?(e.code) && !@options.quit_on_exception
23
34
  end
24
35
 
25
36
  resources
26
37
  end
38
+
39
+ private
40
+
41
+ # not an error
42
+ def suppressed_errors
43
+ %w[
44
+ AccessDeniedException
45
+ ]
46
+ end
27
47
  end
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect Config resources
5
+ #
1
6
  class ConfigService < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect DirectConnect resources
5
+ #
1
6
  class DirectConnect < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect DirectoryService resources
5
+ #
1
6
  class DirectoryService < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect DMS resources
5
+ #
1
6
  class DatabaseMigrationService < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -14,7 +19,7 @@ class DatabaseMigrationService < Mapper
14
19
  response.replication_instances.each do |instance|
15
20
  struct = OpenStruct.new(instance.to_h)
16
21
  struct.type = 'replication_instance'
17
- struct.arb = "arn:aws:#{@service}:#{@region}::replication_instance/#{instance.replication_instance_identifier}"
22
+ struct.arn = "arn:aws:#{@service}:#{@region}::replication_instance/#{instance.replication_instance_identifier}"
18
23
 
19
24
  resources.push(struct.to_h)
20
25
  end
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect DynamodDB resources
5
+ #
1
6
  class DynamoDB < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect EC2 resources
5
+ #
1
6
  class EC2 < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -71,9 +76,7 @@ class EC2 < Mapper
71
76
  if user_data_raw
72
77
  user_data = Base64.decode64(user_data_raw)
73
78
 
74
- if user_data.force_encoding('UTF-8').ascii_only?
75
- struct.user_data = user_data
76
- end
79
+ struct.user_data = user_data if user_data.force_encoding('UTF-8').ascii_only?
77
80
  end
78
81
  end
79
82
 
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect ECR resources
5
+ #
1
6
  class ECR < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -19,7 +24,9 @@ class ECR < Mapper
19
24
  .get_repository_policy({ repository_name: repo.repository_name }).policy_text.parse_policy
20
25
 
21
26
  rescue Aws::ECR::Errors::ServiceError => e
22
- raise e unless suppressed_errors.include?(e.code)
27
+ log_error(e.code)
28
+
29
+ raise e unless suppressed_errors.include?(e.code) && !@options.quit_on_exception
23
30
  ensure
24
31
  resources.push(struct.to_h)
25
32
  end
@@ -1,31 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect ECS resources
5
+ #
1
6
  class ECS < Mapper
2
7
  #
3
8
  # Returns an array of resources.
4
9
  #
5
- # TODO: test live
6
- #
7
10
  def collect
8
11
  resources = []
9
12
 
10
13
  #
11
- # describe_clusters
14
+ # list_clusters
12
15
  #
13
- @client.describe_clusters.each_with_index do |response, page|
16
+ @client.list_clusters.each_with_index do |response, page|
14
17
  log(response.context.operation_name, page)
15
18
 
16
- response.clusters.each do |cluster|
17
- struct = OpenStruct.new(cluster.to_h)
19
+ response.cluster_arns.each do |cluster|
20
+ struct = OpenStruct.new(@client.describe_clusters({ clusters: [cluster] }).clusters.first.to_h)
18
21
  struct.type = 'cluster'
19
- struct.arn = cluster.cluster_arn
22
+ struct.arn = cluster
20
23
  struct.tasks = []
21
24
 
22
25
  # list_tasks
23
- @client.list_tasks({ cluster: cluster.cluster_arn }).each_with_index do |response, page|
26
+ @client.list_tasks({ cluster: cluster }).each_with_index do |response, page|
24
27
  log(response.context.operation_name, 'list_tasks', page)
25
28
 
26
29
  # describe_tasks
27
30
  response.task_arns.each do |task_arn|
28
- @client.describe_tasks({ cluster: cluster.cluster_arn, tasks: [task_arn] }).tasks.each do |task|
31
+ @client.describe_tasks({ cluster: cluster, tasks: [task_arn] }).tasks.each do |task|
29
32
  struct.tasks.push(task)
30
33
  end
31
34
  end
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect EFS resources
5
+ #
1
6
  class EFS < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect EKS resources
5
+ #
1
6
  class EKS < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect ElastiCache resources
5
+ #
1
6
  class ElastiCache < Mapper
2
7
  def collect
3
8
  resources = []
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect ELB resources
5
+ #
1
6
  class ElasticLoadBalancing < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect ELBv2 resources
5
+ #
1
6
  class ElasticLoadBalancingV2 < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect ElasticSearch resources
5
+ #
1
6
  class ElasticsearchService < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect EMR resources
5
+ #
1
6
  class EMR < Mapper
2
7
  #
3
8
  # Returns an array of resources.
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect Firehose resources
5
+ #
1
6
  class Firehose < Mapper
2
7
  #
3
8
  # Returns an array of resources.