aws_security_viz 0.1.5 → 0.1.6.pre.alpha.pre.134
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.
- checksums.yaml +5 -5
- data/.travis.yml +1 -1
- data/CHANGELOG.md +22 -0
- data/Dockerfile +5 -0
- data/README.md +11 -0
- data/aws_security_viz.gemspec +2 -4
- data/lib/color_picker.rb +228 -1
- data/lib/provider/ec2.rb +19 -19
- data/lib/version.rb +1 -1
- data/spec/color_picker_spec.rb +20 -0
- data/spec/spec_helper.rb +13 -8
- data/spec/visualize_aws_spec.rb +24 -29
- metadata +38 -76
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d94979958293ad824811f781685c98de06ddd8e3aa572d52da2a5dda436f8bd1
|
4
|
+
data.tar.gz: 78fae896841040518d0d20a5248db75048fbd86463cd1f43dd2f847bc789dd98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a471c6dc463303a8a49a0b4bcb195fb764ece04885734db090158ae10513a33343dd2acc448900904d604296c1d498dcdccaad5eb87a4cf887dd16a2c950e107
|
7
|
+
data.tar.gz: 788eb15b47e284314f520eac1a4d8d7fc5faaf4f118665f85a274a75fa758e5612e5d32a3434d608fa5f183c5de5165fea0b216607931cc11bf4140bf8311d63
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,28 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
|
5
5
|
## [Unreleased]
|
6
6
|
|
7
|
+
## [0.1.6] - 2019-01-14
|
8
|
+
### Added
|
9
|
+
- Dockerfile
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
- Replaced fog gem with aws-sdk-ec2
|
13
|
+
- Upgrade bundler to 2.x
|
14
|
+
- Removed unused dependencies
|
15
|
+
|
16
|
+
### Fixed
|
17
|
+
- Issue with --color=true failing with exception due to change in Graphviz library.
|
18
|
+
|
19
|
+
## [0.1.5] - 2018-10-10
|
20
|
+
### Added
|
21
|
+
- Filter by VPC id
|
22
|
+
- Support for AWS session token
|
23
|
+
- Use rankdir with graphviz to improve layout
|
24
|
+
|
25
|
+
### Changed
|
26
|
+
- Dependent trollop gem renamed to optimist
|
27
|
+
- Switched from ruby-graphviz to graphviz gem
|
28
|
+
|
7
29
|
## [0.1.4] - 2017-02-03
|
8
30
|
### Added
|
9
31
|
- CHANGELOG.md
|
data/Dockerfile
ADDED
data/README.md
CHANGED
@@ -49,6 +49,17 @@ To generate a web view
|
|
49
49
|
* The json file name needs to be passed in as a html fragment identifier.
|
50
50
|
* The generated graph can be viewed in a webserver e.g. http://localhost:3000/view.html#aws.json by using `python -m SimpleHTTPServer 3000` (python2) or `python -m http.server 3000` (python3)
|
51
51
|
|
52
|
+
## DOCKER USAGE
|
53
|
+
|
54
|
+
If you don't want to install the dependencies and ruby libs you can execute aws-security-viz inside a docker container. To do so, follow these steps:
|
55
|
+
|
56
|
+
1. Clone this repository, open it in a console.
|
57
|
+
2. Build the docker container: `docker build -t sec-viz .`
|
58
|
+
3. Run the container: `docker run -i --rm -t -p 3000:3000 -v $(pwd)/tmp:/aws-security-viz --name sec-viz sec-viz` (Description: `-i` interactive shell, `--rm` remove the container after usage, `-t` attach this terminal to it, `-p 3000:3000` we expose port 3000 for the HTTP server, `-v $(pwd)/tmp:aws-security-viz` mount tmp directory for generated artifacts, `-name sec-viz` the container will have the same name as the image we will start)
|
59
|
+
4. Now you can use the tool as described in [usage](#USAGE). Make sure that you use the commands with `bundler exec ` as prefix. For example: `aws_security_viz -a your_aws_key -s your_aws_secret_key -f aws.json`.
|
60
|
+
5. To start the web view, execute `ruby -run -e httpd -- -p 3000` in the container. You can open it with your local browser at `http://0.0.0.0:3000/`. There you can view the generated images and the graph. Use `Ctrl+C` to close the HTTP server.
|
61
|
+
6. Terminate the docker container by typing `exit` in the console.
|
62
|
+
|
52
63
|
### Help
|
53
64
|
|
54
65
|
```
|
data/aws_security_viz.gemspec
CHANGED
@@ -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
|
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/color_picker.rb
CHANGED
@@ -7,7 +7,7 @@ class ColorPicker
|
|
7
7
|
end
|
8
8
|
class NodeColors
|
9
9
|
def color(index, ingress)
|
10
|
-
|
10
|
+
ColorPicker::COLORS[index % ColorPicker::COLORS.length]
|
11
11
|
end
|
12
12
|
end
|
13
13
|
class DefaultColors
|
@@ -15,4 +15,231 @@ class ColorPicker
|
|
15
15
|
ingress ? :blue : :red
|
16
16
|
end
|
17
17
|
end
|
18
|
+
|
19
|
+
COLORS = %w(
|
20
|
+
#00004c
|
21
|
+
#000080
|
22
|
+
#0000fb
|
23
|
+
#003a52
|
24
|
+
#0040cd
|
25
|
+
#0050b2
|
26
|
+
#005390
|
27
|
+
#007800
|
28
|
+
#007eff
|
29
|
+
#0096D8
|
30
|
+
#009917
|
31
|
+
#00B4AB
|
32
|
+
#00a6a6
|
33
|
+
#00cafe
|
34
|
+
#012456
|
35
|
+
#0298c3
|
36
|
+
#02f88c
|
37
|
+
#04133b
|
38
|
+
#0579aa
|
39
|
+
#078193
|
40
|
+
#0aa0ff
|
41
|
+
#0db7ed
|
42
|
+
#0e60e3
|
43
|
+
#101F1F
|
44
|
+
#118f9e
|
45
|
+
#120F14
|
46
|
+
#14253c
|
47
|
+
#178600
|
48
|
+
#185619
|
49
|
+
#198CE7
|
50
|
+
#199f4b
|
51
|
+
#1C3552
|
52
|
+
#1D222D
|
53
|
+
#1F1F1F
|
54
|
+
#1ac620
|
55
|
+
#1e4aec
|
56
|
+
#22228f
|
57
|
+
#244776
|
58
|
+
#28431f
|
59
|
+
#2ACCA8
|
60
|
+
#2F2530
|
61
|
+
#2b7489
|
62
|
+
#2c3e50
|
63
|
+
#302B6D
|
64
|
+
#315665
|
65
|
+
#341708
|
66
|
+
#348a34
|
67
|
+
#3572A5
|
68
|
+
#358a5b
|
69
|
+
#375eab
|
70
|
+
#37775b
|
71
|
+
#3A4E3A
|
72
|
+
#3D6117
|
73
|
+
#3F3F3F
|
74
|
+
#3F85AF
|
75
|
+
#3ac486
|
76
|
+
#3be133
|
77
|
+
#3d3c6e
|
78
|
+
#3d9970
|
79
|
+
#3fb68b
|
80
|
+
#403a40
|
81
|
+
#40d47e
|
82
|
+
#427819
|
83
|
+
#42f1f4
|
84
|
+
#438eff
|
85
|
+
#447265
|
86
|
+
#44a51c
|
87
|
+
#46390b
|
88
|
+
#499886
|
89
|
+
#4A76B8
|
90
|
+
#4B6BEF
|
91
|
+
#4B6C4B
|
92
|
+
#4C3023
|
93
|
+
#4F5D95
|
94
|
+
#4d41b1
|
95
|
+
#5232e7
|
96
|
+
#555555
|
97
|
+
#563d7c
|
98
|
+
#596706
|
99
|
+
#5A8164
|
100
|
+
#5B2063
|
101
|
+
#5a6986
|
102
|
+
#5c7611
|
103
|
+
#5e5086
|
104
|
+
#60B5CC
|
105
|
+
#62A8D6
|
106
|
+
#636746
|
107
|
+
#646464
|
108
|
+
#64C800
|
109
|
+
#64b970
|
110
|
+
#652B81
|
111
|
+
#6594b9
|
112
|
+
#6600cc
|
113
|
+
#665a4e
|
114
|
+
#6866fb
|
115
|
+
#6E4C13
|
116
|
+
#6a40fd
|
117
|
+
#6c616e
|
118
|
+
#6e4a7e
|
119
|
+
#701516
|
120
|
+
#7055b5
|
121
|
+
#74283c
|
122
|
+
#747faa
|
123
|
+
#7582D1
|
124
|
+
#776791
|
125
|
+
#7790B2
|
126
|
+
#77d9fb
|
127
|
+
#79aa7a
|
128
|
+
#7b9db4
|
129
|
+
#7e7eff
|
130
|
+
#7fa2a7
|
131
|
+
#800000
|
132
|
+
#814CCC
|
133
|
+
#82937f
|
134
|
+
#843179
|
135
|
+
#878787
|
136
|
+
#87AED7
|
137
|
+
#882B0F
|
138
|
+
#88562A
|
139
|
+
#88ccff
|
140
|
+
#89e051
|
141
|
+
#8a1267
|
142
|
+
#8dc63f
|
143
|
+
#8f0f8d
|
144
|
+
#8f14e9
|
145
|
+
#8fb200
|
146
|
+
#913960
|
147
|
+
#945db7
|
148
|
+
#946d57
|
149
|
+
#94B0C7
|
150
|
+
#990000
|
151
|
+
#999999
|
152
|
+
#99DA07
|
153
|
+
#9DC3FF
|
154
|
+
#9EEDFF
|
155
|
+
#9d5200
|
156
|
+
#A0AA87
|
157
|
+
#AA6746
|
158
|
+
#B0CE4E
|
159
|
+
#B34936
|
160
|
+
#B5314C
|
161
|
+
#B83998
|
162
|
+
#B9D9FF
|
163
|
+
#C1F12E
|
164
|
+
#C76F5B
|
165
|
+
#C7D7DC
|
166
|
+
#DA5B0B
|
167
|
+
#DAE1C2
|
168
|
+
#DBCA00
|
169
|
+
#E3F171
|
170
|
+
#E4E6F3
|
171
|
+
#E6EFBB
|
172
|
+
#E8274B
|
173
|
+
#EB8CEB
|
174
|
+
#F18E33
|
175
|
+
#FEFE00
|
176
|
+
#FF5000
|
177
|
+
#FFF4F3
|
178
|
+
#a270ba
|
179
|
+
#a3522f
|
180
|
+
#a54c4d
|
181
|
+
#a78649
|
182
|
+
#a9188d
|
183
|
+
#a957b0
|
184
|
+
#aa2afe
|
185
|
+
#adb2cb
|
186
|
+
#b07219
|
187
|
+
#b0b77e
|
188
|
+
#b2011d
|
189
|
+
#b2b7f8
|
190
|
+
#b30000
|
191
|
+
#b7e1f4
|
192
|
+
#b845fc
|
193
|
+
#ba595e
|
194
|
+
#c065db
|
195
|
+
#c22d40
|
196
|
+
#c4a79c
|
197
|
+
#c7a938
|
198
|
+
#c9df40
|
199
|
+
#cabbff
|
200
|
+
#cc0000
|
201
|
+
#cc0088
|
202
|
+
#cc9900
|
203
|
+
#cca760
|
204
|
+
#ccccff
|
205
|
+
#ccce35
|
206
|
+
#cd6400
|
207
|
+
#cdd0e3
|
208
|
+
#cf142b
|
209
|
+
#d4bec1
|
210
|
+
#d80074
|
211
|
+
#da291c
|
212
|
+
#dad8d8
|
213
|
+
#db5855
|
214
|
+
#db901e
|
215
|
+
#dbb284
|
216
|
+
#dc566d
|
217
|
+
#dce200
|
218
|
+
#dea584
|
219
|
+
#df7900
|
220
|
+
#dfa535
|
221
|
+
#e16737
|
222
|
+
#e34c26
|
223
|
+
#e4cc98
|
224
|
+
#e69f56
|
225
|
+
#ecdebe
|
226
|
+
#ed2cd6
|
227
|
+
#f0a9f0
|
228
|
+
#f1e05a
|
229
|
+
#f34b7d
|
230
|
+
#f3ca0a
|
231
|
+
#f50000
|
232
|
+
#f7ede0
|
233
|
+
#f97732
|
234
|
+
#fab738
|
235
|
+
#fb855d
|
236
|
+
#fbe5cd
|
237
|
+
#fcd7de
|
238
|
+
#ff0c5a
|
239
|
+
#ff2b2b
|
240
|
+
#ff6375
|
241
|
+
#ff7f7f
|
242
|
+
#ffac45
|
243
|
+
#fffaa0
|
244
|
+
)
|
18
245
|
end
|
data/lib/provider/ec2.rb
CHANGED
@@ -1,25 +1,21 @@
|
|
1
|
-
require '
|
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
|
-
|
12
|
-
|
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
|
-
@
|
14
|
+
@client = Aws::EC2::Client.new(conn_opts)
|
19
15
|
end
|
20
16
|
|
21
17
|
def security_groups
|
22
|
-
@
|
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['
|
57
|
+
@ip['ip_protocol']
|
58
58
|
end
|
59
59
|
|
60
60
|
def from
|
61
|
-
@ip['
|
61
|
+
@ip['from_port']
|
62
62
|
end
|
63
63
|
|
64
64
|
def to
|
65
|
-
@ip['
|
65
|
+
@ip['to_port']
|
66
66
|
end
|
67
67
|
|
68
68
|
def ip_ranges
|
69
|
-
@ip['
|
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['
|
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['
|
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['
|
101
|
+
@gp['group_name'] || @gp['group_id']
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
data/lib/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ColorPicker do
|
4
|
+
context 'default picker' do
|
5
|
+
let(:picker) { ColorPicker.new(false) }
|
6
|
+
|
7
|
+
it 'should add default colors for edges' do
|
8
|
+
expect(picker.color(0, true)).to eq(:blue)
|
9
|
+
expect(picker.color(0, false)).to eq(:red)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
context 'color picker' do
|
13
|
+
let(:picker) { ColorPicker.new(true) }
|
14
|
+
|
15
|
+
it 'should add default colors for edges' do
|
16
|
+
expect(picker.color(0, 'ignore')).to eq('#00004c')
|
17
|
+
expect(picker.color(10000, 'ignore')).to eq('#C76F5B')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
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
|
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
|
-
{
|
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
|
-
{
|
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
|
data/spec/visualize_aws_spec.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
47
|
+
stub_security_groups(
|
53
48
|
[
|
54
|
-
group('App', group_ingress(
|
55
|
-
group('Web', group_ingress(
|
56
|
-
group('Db', group_ingress(
|
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
|
-
|
73
|
+
stub_security_groups(
|
79
74
|
[
|
80
|
-
group('Web', group_ingress(
|
81
|
-
group('Db', group_ingress(
|
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
|
-
|
94
|
+
stub_security_groups(
|
100
95
|
[
|
101
|
-
group('Web', group_ingress(
|
102
|
-
group('Db', group_ingress(
|
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
|
-
|
119
|
+
stub_security_groups(
|
125
120
|
[
|
126
|
-
group('ssh', cidr_ingress(
|
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
|
-
|
139
|
+
stub_security_groups(
|
145
140
|
[
|
146
|
-
group('Web', cidr_ingress(
|
147
|
-
group('Db', cidr_ingress(
|
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
|
-
|
157
|
+
stub_security_groups(
|
163
158
|
[
|
164
|
-
group('Web', group_ingress(
|
165
|
-
group('Db', group_ingress(
|
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
|
-
|
174
|
+
stub_security_groups(
|
180
175
|
[
|
181
|
-
group('Web', group_ingress(
|
182
|
-
group('Db', group_ingress(
|
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.
|
4
|
+
version: 0.1.6.pre.alpha.pre.134
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anay Nayak
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,128 +16,74 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
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:
|
26
|
+
version: 2.0.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '12.0'
|
34
31
|
- - ">="
|
35
32
|
- !ruby/object:Gem::Version
|
36
33
|
version: 12.0.0
|
34
|
+
- - "~>"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '12.0'
|
37
37
|
type: :development
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - "~>"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '12.0'
|
44
41
|
- - ">="
|
45
42
|
- !ruby/object:Gem::Version
|
46
43
|
version: 12.0.0
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '12.0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '3.5'
|
54
51
|
- - ">="
|
55
52
|
- !ruby/object:Gem::Version
|
56
53
|
version: 3.5.0
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '3.5'
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- - "~>"
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '3.5'
|
64
61
|
- - ">="
|
65
62
|
- !ruby/object:Gem::Version
|
66
63
|
version: 3.5.0
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '3.5'
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: graphviz
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
|
-
- - "~>"
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '1.1'
|
74
71
|
- - ">="
|
75
72
|
- !ruby/object:Gem::Version
|
76
73
|
version: 1.1.0
|
77
|
-
type: :runtime
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
74
|
- - "~>"
|
82
75
|
- !ruby/object:Gem::Version
|
83
76
|
version: '1.1'
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 1.1.0
|
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
77
|
type: :runtime
|
98
78
|
prerelease: false
|
99
79
|
version_requirements: !ruby/object:Gem::Requirement
|
100
80
|
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'
|
128
81
|
- - ">="
|
129
82
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
131
|
-
type: :runtime
|
132
|
-
prerelease: false
|
133
|
-
version_requirements: !ruby/object:Gem::Requirement
|
134
|
-
requirements:
|
83
|
+
version: 1.1.0
|
135
84
|
- - "~>"
|
136
85
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
138
|
-
- - ">="
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
version: 2.1.0
|
86
|
+
version: '1.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
|
@@ -198,6 +158,7 @@ files:
|
|
198
158
|
- ".travis.yml"
|
199
159
|
- CHANGELOG.md
|
200
160
|
- CODE_OF_CONDUCT.md
|
161
|
+
- Dockerfile
|
201
162
|
- Gemfile
|
202
163
|
- LICENSE.md
|
203
164
|
- README.md
|
@@ -225,6 +186,7 @@ files:
|
|
225
186
|
- lib/renderer/graphviz.rb
|
226
187
|
- lib/renderer/json.rb
|
227
188
|
- lib/version.rb
|
189
|
+
- spec/color_picker_spec.rb
|
228
190
|
- spec/graph_filter_spec.rb
|
229
191
|
- spec/integration/aws_expected.json
|
230
192
|
- spec/integration/dummy.dot
|
@@ -248,16 +210,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
248
210
|
version: 2.0.0
|
249
211
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
250
212
|
requirements:
|
251
|
-
- - "
|
213
|
+
- - ">"
|
252
214
|
- !ruby/object:Gem::Version
|
253
|
-
version:
|
215
|
+
version: 1.3.1
|
254
216
|
requirements: []
|
255
|
-
|
256
|
-
rubygems_version: 2.5.2.3
|
217
|
+
rubygems_version: 3.0.2
|
257
218
|
signing_key:
|
258
219
|
specification_version: 4
|
259
220
|
summary: Visualize your aws security groups
|
260
221
|
test_files:
|
222
|
+
- spec/color_picker_spec.rb
|
261
223
|
- spec/graph_filter_spec.rb
|
262
224
|
- spec/integration/aws_expected.json
|
263
225
|
- spec/integration/dummy.dot
|