aws_recon 0.2.24 → 0.2.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +5 -0
  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 +9 -2
  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 +7 -1
  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 +7 -1
  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 +8 -2
  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 +7 -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 +23 -0
  65. data/lib/aws_recon/version.rb +1 -1
  66. data/readme.md +84 -37
  67. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '091d2a7a27fb6c37494ec2bbddfc029c73e915925ea93e4011dbaaf6fbf637e5'
4
- data.tar.gz: a6f2cfb73e6a667f3d3faff70956d26e065d3f83a6dedcdbdf0cd8eb82102385
3
+ metadata.gz: a607b768fb5220d5db2fb904b74a06669ac5f3b966260bd401cc63eed5fc0c66
4
+ data.tar.gz: 4798d7b5d6ee9ec3353a2cb0d5a00d284102030b46b2a0a66637d0741a439f9f
5
5
  SHA512:
6
- metadata.gz: b488755dd29b5d262e2b6775a9de1830f024975874a4f617f0cd01f80a621e2a18e1955b4a590418aa0d1efc203b2427221129ae069c01a038d1ed35bdc0b500
7
- data.tar.gz: 8997f3f3350fc9c8a6ded6fbd437816005d5a17a7b6db76c2e3e646b9076af210c4b803a68e2b568bff8ea277950bfb99031c6baa767b23138db5da9869c41c0
6
+ metadata.gz: 4846c6ec9026d462b18a9ccecd0efa628d61b06431568c80d11c6b845fba94b964f564fb3ad018cfc2c3786ba57a7faf6080aba6617905d6fb3003b53ad21034
7
+ data.tar.gz: 4de17a7300f269790a9406788943c8260617022914a3b0c9e84e2f3a1b8557552a7ada8b4f0681442a9cba70784f2309c4a395b4fc4e4e4755dc73fdbaa52cb0
@@ -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.
@@ -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.
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Collect GuardDuty resources
5
+ #
1
6
  class GuardDuty < 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