aws_security_viz 0.1.5.pre.alpha.pre.112 → 0.1.5.pre.alpha.pre.130

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53e3a236d712ec7522a04a41b777257eaa29910e08d0277d780d17db9d25fdc1
4
- data.tar.gz: 2c5461e7fe4cd76845cd8b5481fea6551c5037e1586f5dad190ed0cfe55355e5
3
+ metadata.gz: 38a094e251fdddd0b80c4df4f8471cc5c186b45fd3ddd838034701def6d2b7f1
4
+ data.tar.gz: 3208a726e793e810e7ce581b1a677a03395a1e15579f6a0e210282ecf035cf1f
5
5
  SHA512:
6
- metadata.gz: c2e98a63663d9feeaa1b9c883fc87f3ed064247d21689228b2b1ce1df2cadc35ab3928afdfccdb858cb3b95f86ed60ae15a60ebfa39575f0882d0e499ca1f91a
7
- data.tar.gz: f2e91ff5aafda4b1135ae8b6c5b261621392c397e11e2f7125fb94c4d7d6817418269812110e6d766c925b02c737f080595a831c7c32f30fa76be943228b08cd
6
+ metadata.gz: 9639a24f8a202d66e6d793a9da86639d7fcc2ba843028c3ec2f4adebbe037a03ea877a9df987cd5b9fadaca1d4368e74b999298c3942d1b4cdcfa17873d3c1fa
7
+ data.tar.gz: 94591ee3242ef23e573f097d0671d568e5c9773ff21400e3c561fe78776a1298d26027d4bca23383063ff4e14d8fac35e21036b8a0c9578445e1a5a20f046f93
data/.travis.yml CHANGED
@@ -3,7 +3,7 @@ language: ruby
3
3
  rvm:
4
4
  - 2.4.4
5
5
  - 2.3.4
6
- - 2.2.7
6
+ - 2.6.0
7
7
  - 2.5.1
8
8
 
9
9
  script: bundle exec rspec spec --tag '~integration'
data/CHANGELOG.md CHANGED
@@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
5
  ## [Unreleased]
6
+ ### Changed
7
+ - Replaced fog gem with aws-sdk-ec2
8
+ - Upgrade bundler to 2.x
9
+ - Removed unused dependencies
6
10
 
7
11
  ## [0.1.5] - 2018-10-10
8
12
  ### Added
@@ -21,17 +21,15 @@ Gem::Specification.new do |s|
21
21
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
22
22
  s.require_paths = ['lib']
23
23
 
24
- s.add_development_dependency 'bundler', '~> 1.15'
24
+ s.add_development_dependency 'bundler', '~> 2.0.1'
25
25
  s.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
26
26
  s.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0'
27
27
 
28
28
  s.add_runtime_dependency 'graphviz', '~> 1.1', '>= 1.1.0'
29
- s.add_runtime_dependency 'fog-aws', '~> 2.0', '>= 2.0.1'
30
- s.add_runtime_dependency 'unf', '~> 0.1.4'
31
- s.add_runtime_dependency 'json', '~> 2.1', '>= 2.1.0'
32
29
  s.add_runtime_dependency 'optimist', '~> 3.0.0'
33
30
  s.add_runtime_dependency 'organic_hash', '~> 1.0', '>= 1.0.2'
34
31
  s.add_runtime_dependency 'rgl', '~> 0.5.3'
32
+ s.add_runtime_dependency 'aws-sdk-ec2', '~> 1.65.0'
35
33
 
36
34
  s.required_ruby_version = '>= 2.0.0'
37
35
  end
data/lib/provider/ec2.rb CHANGED
@@ -1,25 +1,21 @@
1
- require 'fog/aws'
1
+ require 'aws-sdk-ec2'
2
2
 
3
3
  class Ec2Provider
4
4
 
5
5
  def initialize(options)
6
6
  @options = options
7
7
  conn_opts = {
8
- region: options[:region]
9
- }
10
-
11
- conn_opts[:aws_access_key_id] = options[:access_key]
12
- conn_opts[:aws_secret_access_key] = options[:secret_key]
13
-
14
- if options[:session_token]
15
- conn_opts[:aws_session_token] = options[:session_token]
16
- end
8
+ region: options[:region],
9
+ access_key_id: options[:access_key],
10
+ secret_access_key: options[:secret_key],
11
+ session_token: options[:session_token]
12
+ }.delete_if {|k,v| v.nil?}
17
13
 
18
- @compute = Fog::Compute::AWS.new conn_opts
14
+ @client = Aws::EC2::Client.new(conn_opts)
19
15
  end
20
16
 
21
17
  def security_groups
22
- @compute.security_groups.reject { |sg|
18
+ @client.describe_security_groups.security_groups.reject { |sg|
23
19
  @options[:vpc_id] && sg.vpc_id != @options[:vpc_id]
24
20
  }.collect { |sg|
25
21
  Ec2::SecurityGroup.new(sg)
@@ -35,6 +31,10 @@ module Ec2
35
31
  @sg = sg
36
32
  end
37
33
 
34
+ def name
35
+ @sg.group_name
36
+ end
37
+
38
38
  def ip_permissions
39
39
  @sg.ip_permissions.collect { |ip|
40
40
  Ec2::IpPermission.new(ip)
@@ -54,25 +54,25 @@ module Ec2
54
54
  end
55
55
 
56
56
  def protocol
57
- @ip['ipProtocol']
57
+ @ip['ip_protocol']
58
58
  end
59
59
 
60
60
  def from
61
- @ip['fromPort']
61
+ @ip['from_port']
62
62
  end
63
63
 
64
64
  def to
65
- @ip['toPort']
65
+ @ip['to_port']
66
66
  end
67
67
 
68
68
  def ip_ranges
69
- @ip['ipRanges'].collect {|gp|
69
+ @ip['ip_ranges'].collect {|gp|
70
70
  Ec2::IpPermissionRange.new(gp)
71
71
  }
72
72
  end
73
73
 
74
74
  def groups
75
- @ip['groups'].collect {|gp|
75
+ @ip['user_id_group_pairs'].collect {|gp|
76
76
  Ec2::IpPermissionGroup.new(gp)
77
77
  }
78
78
  end
@@ -84,7 +84,7 @@ module Ec2
84
84
  end
85
85
 
86
86
  def cidr_ip
87
- @range['cidrIp']
87
+ @range['cidr_ip']
88
88
  end
89
89
 
90
90
  def to_str
@@ -98,7 +98,7 @@ module Ec2
98
98
  end
99
99
 
100
100
  def name
101
- @gp['groupName'] || @gp['groupId']
101
+ @gp['group_name'] || @gp['group_id']
102
102
  end
103
103
  end
104
104
 
data/spec/spec_helper.rb CHANGED
@@ -7,18 +7,23 @@ require File.expand_path(File.dirname(__FILE__) + "/../config/boot")
7
7
  Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
8
8
 
9
9
  def group name, *ingress
10
- group = double("Group")
11
- allow(group).to receive(:ip_permissions).and_return(ingress)
12
- allow(group).to receive(:ip_permissions_egress).and_return([])
13
- allow(group).to receive(:name).and_return(name)
14
- allow(group).to receive(:group_id).and_return('some group')
15
- group
10
+ {group_name: name, group_id: 'some group', ip_permissions: ingress, ip_permissions_egress: []}
16
11
  end
17
12
 
18
13
  def group_ingress port, name
19
- {"groups"=>[{"userId"=>"userId", "groupId"=>"sg-groupId", "groupName"=>name}], "ipRanges"=>[], "ipProtocol"=>"tcp", "fromPort"=>port, "toPort"=>port}
14
+ {user_id_group_pairs:[{user_id: "userId", group_id: "sg-groupId", group_name: name}], ip_ranges:[], ip_protocol: "tcp", from_port: port, to_port: port}
20
15
  end
21
16
 
22
17
  def cidr_ingress port, cidr_ip
23
- {"groups"=>[], "ipRanges"=>[{"cidrIp"=> cidr_ip}], "ipProtocol"=>"tcp", "fromPort"=>port, "toPort"=>port}
18
+ {ip_ranges:[{cidr_ip: cidr_ip}], ip_protocol: "tcp", from_port: port, to_port: port}
24
19
  end
20
+
21
+ def stub_security_groups groups
22
+ Aws.config[:ec2] = {
23
+ stub_responses: {
24
+ describe_security_groups: {
25
+ security_groups: groups
26
+ }
27
+ }
28
+ }
29
+ end
@@ -17,16 +17,11 @@ class DummyRenderer
17
17
  end
18
18
 
19
19
  describe VisualizeAws do
20
- before do
21
- @ec2 = double(Fog::Compute)
22
- allow(Fog::Compute::AWS).to receive(:new).and_return(@ec2)
23
- end
24
-
25
20
  let(:visualize_aws) { VisualizeAws.new(AwsConfig.new) }
26
21
  let(:renderer) { DummyRenderer.new }
27
22
 
28
- it 'should add nodes, edges for each security group' do
29
- expect(@ec2).to receive(:security_groups).and_return([group('Remote ssh', group_ingress('22', 'My machine')), group('My machine')])
23
+ it 'should add nodes, edges for each security group' do
24
+ stub_security_groups([group('Remote ssh', group_ingress(22, 'My machine')), group('My machine')])
30
25
  graph = visualize_aws.build
31
26
 
32
27
  expect(graph.output(renderer)).to contain_exactly(
@@ -38,7 +33,7 @@ describe VisualizeAws do
38
33
 
39
34
  context 'groups' do
40
35
  it 'should add nodes for external security groups defined through ingress' do
41
- expect(@ec2).to receive(:security_groups).and_return([group('Web', group_ingress('80', 'ELB'))])
36
+ stub_security_groups([group('Web', group_ingress(80, 'ELB'))])
42
37
  graph = visualize_aws.build
43
38
 
44
39
  expect(graph.output(renderer)).to contain_exactly(
@@ -49,11 +44,11 @@ describe VisualizeAws do
49
44
  end
50
45
 
51
46
  it 'should add an edge for each security ingress' do
52
- expect(@ec2).to receive(:security_groups).and_return(
47
+ stub_security_groups(
53
48
  [
54
- group('App', group_ingress('80', 'Web'), group_ingress('8983', 'Internal')),
55
- group('Web', group_ingress('80', 'External')),
56
- group('Db', group_ingress('7474', 'App'))
49
+ group('App', group_ingress(80, 'Web'), group_ingress(8983, 'Internal')),
50
+ group('Web', group_ingress(80, 'External')),
51
+ group('Db', group_ingress(7474, 'App'))
57
52
  ])
58
53
  graph = visualize_aws.build
59
54
 
@@ -75,10 +70,10 @@ describe VisualizeAws do
75
70
  context 'cidr' do
76
71
 
77
72
  it 'should add an edge for each cidr ingress' do
78
- expect(@ec2).to receive(:security_groups).and_return(
73
+ stub_security_groups(
79
74
  [
80
- group('Web', group_ingress('80', 'External')),
81
- group('Db', group_ingress('7474', 'App'), cidr_ingress('22', '127.0.0.1/32'))
75
+ group('Web', group_ingress(80, 'External')),
76
+ group('Db', group_ingress(7474, 'App'), cidr_ingress(22, '127.0.0.1/32'))
82
77
  ])
83
78
  graph = visualize_aws.build
84
79
 
@@ -96,10 +91,10 @@ describe VisualizeAws do
96
91
  end
97
92
 
98
93
  it 'should add map edges for cidr ingress' do
99
- expect(@ec2).to receive(:security_groups).and_return(
94
+ stub_security_groups(
100
95
  [
101
- group('Web', group_ingress('80', 'External')),
102
- group('Db', group_ingress('7474', 'App'), cidr_ingress('22', '127.0.0.1/32'))
96
+ group('Web', group_ingress(80, 'External')),
97
+ group('Db', group_ingress(7474, 'App'), cidr_ingress(22, '127.0.0.1/32'))
103
98
  ])
104
99
  mapping = {'127.0.0.1/32' => 'Work'}
105
100
  mapping = CidrGroupMapping.new([], mapping)
@@ -121,9 +116,9 @@ describe VisualizeAws do
121
116
  end
122
117
 
123
118
  it 'should group mapped duplicate edges for cidr ingress' do
124
- expect(@ec2).to receive(:security_groups).and_return(
119
+ stub_security_groups(
125
120
  [
126
- group('ssh', cidr_ingress('22', '192.168.0.1/32'), cidr_ingress('22', '127.0.0.1/32'))
121
+ group('ssh', cidr_ingress(22, '192.168.0.1/32'), cidr_ingress(22, '127.0.0.1/32'))
127
122
  ])
128
123
  mapping = {'127.0.0.1/32' => 'Work', '192.168.0.1/32' => 'Work'}
129
124
  mapping = CidrGroupMapping.new([], mapping)
@@ -141,10 +136,10 @@ describe VisualizeAws do
141
136
 
142
137
  context "filter" do
143
138
  it 'include cidr which do not match the pattern' do
144
- expect(@ec2).to receive(:security_groups).and_return(
139
+ stub_security_groups(
145
140
  [
146
- group('Web', cidr_ingress('22', '127.0.0.1/32')),
147
- group('Db', cidr_ingress('22', '192.0.1.1/32'))
141
+ group('Web', cidr_ingress(22, '127.0.0.1/32')),
142
+ group('Db', cidr_ingress(22, '192.0.1.1/32'))
148
143
  ])
149
144
 
150
145
  opts = {:exclude => ['127.*']}
@@ -159,10 +154,10 @@ describe VisualizeAws do
159
154
  end
160
155
 
161
156
  it 'include groups which do not match the pattern' do
162
- expect(@ec2).to receive(:security_groups).and_return(
157
+ stub_security_groups(
163
158
  [
164
- group('Web', group_ingress('80', 'External')),
165
- group('Db', group_ingress('7474', 'App'), cidr_ingress('22', '127.0.0.1/32'))
159
+ group('Web', group_ingress(80, 'External')),
160
+ group('Db', group_ingress(7474, 'App'), cidr_ingress(22, '127.0.0.1/32'))
166
161
  ])
167
162
 
168
163
  opts = {:exclude => ['D.*b', 'App']}
@@ -176,10 +171,10 @@ describe VisualizeAws do
176
171
  end
177
172
 
178
173
  it 'include derived groups which do not match the pattern' do
179
- expect(@ec2).to receive(:security_groups).and_return(
174
+ stub_security_groups(
180
175
  [
181
- group('Web', group_ingress('80', 'External')),
182
- group('Db', group_ingress('7474', 'App'), cidr_ingress('22', '127.0.0.1/32'))
176
+ group('Web', group_ingress(80, 'External')),
177
+ group('Db', group_ingress(7474, 'App'), cidr_ingress(22, '127.0.0.1/32'))
183
178
  ])
184
179
 
185
180
  opts = {:exclude => ['App']}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_security_viz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5.pre.alpha.pre.112
4
+ version: 0.1.5.pre.alpha.pre.130
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anay Nayak
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-30 00:00:00.000000000 Z
11
+ date: 2019-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.15'
19
+ version: 2.0.1
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.15'
26
+ version: 2.0.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -84,60 +84,6 @@ dependencies:
84
84
  - - "~>"
85
85
  - !ruby/object:Gem::Version
86
86
  version: '1.1'
87
- - !ruby/object:Gem::Dependency
88
- name: fog-aws
89
- requirement: !ruby/object:Gem::Requirement
90
- requirements:
91
- - - "~>"
92
- - !ruby/object:Gem::Version
93
- version: '2.0'
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 2.0.1
97
- type: :runtime
98
- prerelease: false
99
- version_requirements: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '2.0'
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: 2.0.1
107
- - !ruby/object:Gem::Dependency
108
- name: unf
109
- requirement: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - "~>"
112
- - !ruby/object:Gem::Version
113
- version: 0.1.4
114
- type: :runtime
115
- prerelease: false
116
- version_requirements: !ruby/object:Gem::Requirement
117
- requirements:
118
- - - "~>"
119
- - !ruby/object:Gem::Version
120
- version: 0.1.4
121
- - !ruby/object:Gem::Dependency
122
- name: json
123
- requirement: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- version: 2.1.0
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '2.1'
131
- type: :runtime
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: 2.1.0
138
- - - "~>"
139
- - !ruby/object:Gem::Version
140
- version: '2.1'
141
87
  - !ruby/object:Gem::Dependency
142
88
  name: optimist
143
89
  requirement: !ruby/object:Gem::Requirement
@@ -186,6 +132,20 @@ dependencies:
186
132
  - - "~>"
187
133
  - !ruby/object:Gem::Version
188
134
  version: 0.5.3
135
+ - !ruby/object:Gem::Dependency
136
+ name: aws-sdk-ec2
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: 1.65.0
142
+ type: :runtime
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: 1.65.0
189
149
  description: Provides a quick mechanism to visualize your EC2 security groups in multiple
190
150
  formats
191
151
  email: anayak007+rubygems@gmail.com
@@ -252,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
212
  - !ruby/object:Gem::Version
253
213
  version: 1.3.1
254
214
  requirements: []
255
- rubygems_version: 3.0.1
215
+ rubygems_version: 3.0.2
256
216
  signing_key:
257
217
  specification_version: 4
258
218
  summary: Visualize your aws security groups