aws_assume_role 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +31 -11
  4. data/Gemfile +7 -13
  5. data/LICENSE.md +201 -19
  6. data/README.md +176 -145
  7. data/aws_assume_role.gemspec +35 -21
  8. data/bin/aws-assume-role +1 -83
  9. data/i18n/en.yml +106 -0
  10. data/lib/aws_assume_role.rb +2 -3
  11. data/lib/aws_assume_role/cli.rb +15 -0
  12. data/lib/aws_assume_role/cli/actions/abstract_action.rb +53 -0
  13. data/lib/aws_assume_role/cli/actions/configure_profile.rb +21 -0
  14. data/lib/aws_assume_role/cli/actions/configure_role_assumption.rb +19 -0
  15. data/lib/aws_assume_role/cli/actions/console.rb +68 -0
  16. data/lib/aws_assume_role/cli/actions/delete_profile.rb +20 -0
  17. data/lib/aws_assume_role/cli/actions/includes.rb +18 -0
  18. data/lib/aws_assume_role/cli/actions/list_profiles.rb +10 -0
  19. data/lib/aws_assume_role/cli/actions/migrate_profile.rb +18 -0
  20. data/lib/aws_assume_role/cli/actions/reset_environment.rb +48 -0
  21. data/lib/aws_assume_role/cli/actions/run.rb +34 -0
  22. data/lib/aws_assume_role/cli/actions/set_environment.rb +60 -0
  23. data/lib/aws_assume_role/cli/actions/test.rb +31 -0
  24. data/lib/aws_assume_role/cli/commands/configure.rb +29 -0
  25. data/lib/aws_assume_role/cli/commands/console.rb +17 -0
  26. data/lib/aws_assume_role/cli/commands/delete.rb +11 -0
  27. data/lib/aws_assume_role/cli/commands/environment.rb +32 -0
  28. data/lib/aws_assume_role/cli/commands/list.rb +10 -0
  29. data/lib/aws_assume_role/cli/commands/migrate.rb +11 -0
  30. data/lib/aws_assume_role/cli/commands/run.rb +17 -0
  31. data/lib/aws_assume_role/cli/commands/test.rb +18 -0
  32. data/lib/aws_assume_role/configuration.rb +19 -0
  33. data/lib/aws_assume_role/core_ext/aws-sdk/credential_provider_chain.rb +2 -0
  34. data/lib/aws_assume_role/core_ext/aws-sdk/includes.rb +7 -0
  35. data/lib/aws_assume_role/credentials/factories.rb +9 -0
  36. data/lib/aws_assume_role/credentials/factories/abstract_factory.rb +31 -0
  37. data/lib/aws_assume_role/credentials/factories/assume_role.rb +38 -0
  38. data/lib/aws_assume_role/credentials/factories/default_chain_provider.rb +101 -0
  39. data/lib/aws_assume_role/credentials/factories/environment.rb +24 -0
  40. data/lib/aws_assume_role/credentials/factories/includes.rb +17 -0
  41. data/lib/aws_assume_role/credentials/factories/instance_profile.rb +17 -0
  42. data/lib/aws_assume_role/credentials/factories/repository.rb +35 -0
  43. data/lib/aws_assume_role/credentials/factories/shared.rb +15 -0
  44. data/lib/aws_assume_role/credentials/factories/shared_keyring.rb +16 -0
  45. data/lib/aws_assume_role/credentials/factories/static.rb +16 -0
  46. data/lib/aws_assume_role/credentials/providers/assume_role_credentials.rb +58 -0
  47. data/lib/aws_assume_role/credentials/providers/includes.rb +9 -0
  48. data/lib/aws_assume_role/credentials/providers/mfa_session_credentials.rb +102 -0
  49. data/lib/aws_assume_role/credentials/providers/shared_keyring_credentials.rb +22 -0
  50. data/lib/aws_assume_role/includes.rb +30 -0
  51. data/lib/aws_assume_role/logging.rb +16 -28
  52. data/lib/aws_assume_role/profile_configuration.rb +71 -0
  53. data/lib/aws_assume_role/runner.rb +39 -0
  54. data/lib/aws_assume_role/store/includes.rb +16 -0
  55. data/lib/aws_assume_role/store/keyring.rb +59 -0
  56. data/lib/aws_assume_role/store/serialization.rb +18 -0
  57. data/lib/aws_assume_role/store/shared_config_with_keyring.rb +175 -0
  58. data/lib/aws_assume_role/types.rb +30 -0
  59. data/lib/aws_assume_role/ui.rb +55 -0
  60. data/lib/aws_assume_role/vendored/aws.rb +4 -0
  61. data/lib/aws_assume_role/vendored/aws/README.md +2 -0
  62. data/lib/aws_assume_role/vendored/aws/assume_role_credentials.rb +68 -0
  63. data/lib/aws_assume_role/vendored/aws/includes.rb +9 -0
  64. data/lib/aws_assume_role/vendored/aws/refreshing_credentials.rb +60 -0
  65. data/lib/aws_assume_role/vendored/aws/shared_config.rb +220 -0
  66. data/lib/aws_assume_role/version.rb +3 -0
  67. metadata +264 -20
  68. data/.rspec +0 -2
  69. data/Rakefile +0 -2
  70. data/bin/test.rb +0 -39
  71. data/lib/aws_assume_role/credentials.rb +0 -92
  72. data/lib/aws_assume_role/profile.rb +0 -203
  73. data/lib/aws_assume_role/profile/assume_role.rb +0 -127
  74. data/lib/aws_assume_role/profile/basic.rb +0 -152
  75. data/lib/aws_assume_role/profile/list.rb +0 -57
@@ -0,0 +1,3 @@
1
+ module AwsAssumeRole
2
+ VERSION = "0.1.0".freeze
3
+ end
metadata CHANGED
@@ -1,49 +1,179 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_assume_role
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Topper
8
8
  - Jack Thomas
9
+ - Naadir Jeewa
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2016-12-12 00:00:00.000000000 Z
13
+ date: 2017-02-16 00:00:00.000000000 Z
13
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '4.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '4.0'
14
29
  - !ruby/object:Gem::Dependency
15
30
  name: aws-sdk
16
31
  requirement: !ruby/object:Gem::Requirement
17
32
  requirements:
18
- - - ">="
33
+ - - "~>"
19
34
  - !ruby/object:Gem::Version
20
- version: '0'
35
+ version: '2.7'
21
36
  type: :runtime
22
37
  prerelease: false
23
38
  version_requirements: !ruby/object:Gem::Requirement
24
39
  requirements:
25
- - - ">="
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '2.7'
43
+ - !ruby/object:Gem::Dependency
44
+ name: dry-configurable
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
26
48
  - !ruby/object:Gem::Version
27
- version: '0'
49
+ version: '0.5'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0.5'
57
+ - !ruby/object:Gem::Dependency
58
+ name: dry-initializer
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '1.1'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.1'
71
+ - !ruby/object:Gem::Dependency
72
+ name: dry-types
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '0.9'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '0.9'
85
+ - !ruby/object:Gem::Dependency
86
+ name: dry-validation
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '0.10'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '0.10'
99
+ - !ruby/object:Gem::Dependency
100
+ name: gli
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '2.15'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '2.15'
113
+ - !ruby/object:Gem::Dependency
114
+ name: highline
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '1.7'
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '1.7'
127
+ - !ruby/object:Gem::Dependency
128
+ name: i18n
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '0.7'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '0.7'
28
141
  - !ruby/object:Gem::Dependency
29
142
  name: inifile
30
143
  requirement: !ruby/object:Gem::Requirement
31
144
  requirements:
32
- - - ">="
145
+ - - "~>"
33
146
  - !ruby/object:Gem::Version
34
- version: '0'
147
+ version: '3.0'
35
148
  type: :runtime
36
149
  prerelease: false
37
150
  version_requirements: !ruby/object:Gem::Requirement
38
151
  requirements:
39
- - - ">="
152
+ - - "~>"
40
153
  - !ruby/object:Gem::Version
41
- version: '0'
154
+ version: '3.0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: launchy
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: '2.4'
162
+ type: :runtime
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: '2.4'
42
169
  - !ruby/object:Gem::Dependency
43
170
  name: keyring
44
171
  requirement: !ruby/object:Gem::Requirement
45
172
  requirements:
46
173
  - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '0.4'
176
+ - - ">="
47
177
  - !ruby/object:Gem::Version
48
178
  version: 0.4.1
49
179
  type: :runtime
@@ -51,38 +181,152 @@ dependencies:
51
181
  version_requirements: !ruby/object:Gem::Requirement
52
182
  requirements:
53
183
  - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '0.4'
186
+ - - ">="
54
187
  - !ruby/object:Gem::Version
55
188
  version: 0.4.1
189
+ - !ruby/object:Gem::Dependency
190
+ name: pastel
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: '0.7'
196
+ type: :runtime
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '0.7'
203
+ - !ruby/object:Gem::Dependency
204
+ name: rubocop
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '0.46'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - "~>"
215
+ - !ruby/object:Gem::Version
216
+ version: '0.46'
217
+ - !ruby/object:Gem::Dependency
218
+ name: yard
219
+ requirement: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - "~>"
222
+ - !ruby/object:Gem::Version
223
+ version: '0.9'
224
+ type: :development
225
+ prerelease: false
226
+ version_requirements: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - "~>"
229
+ - !ruby/object:Gem::Version
230
+ version: '0.9'
231
+ - !ruby/object:Gem::Dependency
232
+ name: gir_ffi-gnome_keyring
233
+ requirement: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - "~>"
236
+ - !ruby/object:Gem::Version
237
+ version: '0.0'
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: 0.0.3
241
+ type: :runtime
242
+ prerelease: false
243
+ version_requirements: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - "~>"
246
+ - !ruby/object:Gem::Version
247
+ version: '0.0'
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: 0.0.3
56
251
  description: Used to fetch multiple AWS Role Credential Keys using different Session
57
252
  Keys and store them securely using Gnome Keyring or OSX keychain
58
253
  email:
59
254
  - jon@scalefactory.com
60
255
  - jack@scalefactory.com
256
+ - naadir@scalefactory.com
61
257
  executables:
62
258
  - aws-assume-role
63
259
  extensions: []
64
260
  extra_rdoc_files: []
65
261
  files:
66
262
  - ".gitignore"
67
- - ".rspec"
68
263
  - ".rubocop.yml"
69
264
  - Gemfile
70
265
  - LICENSE.md
71
266
  - README.md
72
- - Rakefile
73
267
  - aws_assume_role.gemspec
74
268
  - bin/aws-assume-role
75
- - bin/test.rb
269
+ - i18n/en.yml
76
270
  - lib/aws_assume_role.rb
77
- - lib/aws_assume_role/credentials.rb
271
+ - lib/aws_assume_role/cli.rb
272
+ - lib/aws_assume_role/cli/actions/abstract_action.rb
273
+ - lib/aws_assume_role/cli/actions/configure_profile.rb
274
+ - lib/aws_assume_role/cli/actions/configure_role_assumption.rb
275
+ - lib/aws_assume_role/cli/actions/console.rb
276
+ - lib/aws_assume_role/cli/actions/delete_profile.rb
277
+ - lib/aws_assume_role/cli/actions/includes.rb
278
+ - lib/aws_assume_role/cli/actions/list_profiles.rb
279
+ - lib/aws_assume_role/cli/actions/migrate_profile.rb
280
+ - lib/aws_assume_role/cli/actions/reset_environment.rb
281
+ - lib/aws_assume_role/cli/actions/run.rb
282
+ - lib/aws_assume_role/cli/actions/set_environment.rb
283
+ - lib/aws_assume_role/cli/actions/test.rb
284
+ - lib/aws_assume_role/cli/commands/configure.rb
285
+ - lib/aws_assume_role/cli/commands/console.rb
286
+ - lib/aws_assume_role/cli/commands/delete.rb
287
+ - lib/aws_assume_role/cli/commands/environment.rb
288
+ - lib/aws_assume_role/cli/commands/list.rb
289
+ - lib/aws_assume_role/cli/commands/migrate.rb
290
+ - lib/aws_assume_role/cli/commands/run.rb
291
+ - lib/aws_assume_role/cli/commands/test.rb
292
+ - lib/aws_assume_role/configuration.rb
293
+ - lib/aws_assume_role/core_ext/aws-sdk/credential_provider_chain.rb
294
+ - lib/aws_assume_role/core_ext/aws-sdk/includes.rb
295
+ - lib/aws_assume_role/credentials/factories.rb
296
+ - lib/aws_assume_role/credentials/factories/abstract_factory.rb
297
+ - lib/aws_assume_role/credentials/factories/assume_role.rb
298
+ - lib/aws_assume_role/credentials/factories/default_chain_provider.rb
299
+ - lib/aws_assume_role/credentials/factories/environment.rb
300
+ - lib/aws_assume_role/credentials/factories/includes.rb
301
+ - lib/aws_assume_role/credentials/factories/instance_profile.rb
302
+ - lib/aws_assume_role/credentials/factories/repository.rb
303
+ - lib/aws_assume_role/credentials/factories/shared.rb
304
+ - lib/aws_assume_role/credentials/factories/shared_keyring.rb
305
+ - lib/aws_assume_role/credentials/factories/static.rb
306
+ - lib/aws_assume_role/credentials/providers/assume_role_credentials.rb
307
+ - lib/aws_assume_role/credentials/providers/includes.rb
308
+ - lib/aws_assume_role/credentials/providers/mfa_session_credentials.rb
309
+ - lib/aws_assume_role/credentials/providers/shared_keyring_credentials.rb
310
+ - lib/aws_assume_role/includes.rb
78
311
  - lib/aws_assume_role/logging.rb
79
- - lib/aws_assume_role/profile.rb
80
- - lib/aws_assume_role/profile/assume_role.rb
81
- - lib/aws_assume_role/profile/basic.rb
82
- - lib/aws_assume_role/profile/list.rb
83
- homepage: https://github.com/scalefactory/aws_assume_role
312
+ - lib/aws_assume_role/profile_configuration.rb
313
+ - lib/aws_assume_role/runner.rb
314
+ - lib/aws_assume_role/store/includes.rb
315
+ - lib/aws_assume_role/store/keyring.rb
316
+ - lib/aws_assume_role/store/serialization.rb
317
+ - lib/aws_assume_role/store/shared_config_with_keyring.rb
318
+ - lib/aws_assume_role/types.rb
319
+ - lib/aws_assume_role/ui.rb
320
+ - lib/aws_assume_role/vendored/aws.rb
321
+ - lib/aws_assume_role/vendored/aws/README.md
322
+ - lib/aws_assume_role/vendored/aws/assume_role_credentials.rb
323
+ - lib/aws_assume_role/vendored/aws/includes.rb
324
+ - lib/aws_assume_role/vendored/aws/refreshing_credentials.rb
325
+ - lib/aws_assume_role/vendored/aws/shared_config.rb
326
+ - lib/aws_assume_role/version.rb
327
+ homepage: https://github.com/scalefactory/aws-assume-role
84
328
  licenses:
85
- - MIT
329
+ - Apache-2.0
86
330
  metadata: {}
87
331
  post_install_message:
88
332
  rdoc_options: []
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- require 'bundler/gem_tasks'
2
- task default: :spec
data/bin/test.rb DELETED
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $LOAD_PATH.unshift File.expand_path('../lib/', __FILE__)
4
-
5
- require 'aws_assume_role'
6
-
7
- test_profiles_yaml = <<EOF
8
- ---
9
- default:
10
- set_environment: false
11
- # credentials come from .aws/credentials or environment
12
-
13
- mgmt:
14
- set_environment: true
15
- type: assume_role
16
- role_arn: arn:aws:iam::339253004131:role/TerraformUser
17
-
18
- test:
19
- set_environment: true
20
- type: assume_role
21
- role_arn: arn:aws:iam::542043528869:role/TerraformUser
22
-
23
- tf_test:
24
- type: list
25
- list:
26
- - name: test
27
- env_prefix: TEST_
28
- - name: mgmt
29
- env_prefix: MGMT_
30
-
31
- EOF
32
-
33
- AWSAssumeRole::Profile.logger.level = Logger::DEBUG
34
- AWSAssumeRole::Profile.parse_config(test_profiles_yaml)
35
-
36
- p = AWSAssumeRole::Profile.get_by_name('tf_test')
37
- p.use
38
-
39
- system('env | grep "AWS" | sort')
@@ -1,92 +0,0 @@
1
- # AWSAssumeRole
2
- module AWSAssumeRole
3
-
4
- require 'keyring'
5
- require 'json'
6
- require 'time'
7
-
8
- # Represents credentials, used for serialising into keychain
9
- class Credentials
10
-
11
- include Logging
12
-
13
- def self.load_from_keyring(key)
14
-
15
- logger.debug("Keyring: load '#{key}'")
16
-
17
- keyring = Keyring.new
18
- json_session = keyring.get_password('AWSAssumeRole', key)
19
-
20
- unless json_session
21
- logger.info('No JSON session data in keyring')
22
- return nil
23
- end
24
-
25
- hash = JSON.parse(json_session, symbolize_names: true)
26
-
27
- unless hash
28
- logger.info('Couldn\'t parse keyring data as JSON')
29
- return nil
30
- end
31
-
32
- hash[:expiration] = Time.parse(hash[:expiration]) unless hash[:expiration].nil?
33
-
34
- logger.debug("Loaded #{hash}")
35
- AWSAssumeRole::Credentials.new(hash)
36
-
37
- end
38
-
39
- def self.create_from_sdk(object)
40
-
41
- raise TypeError unless object.is_a?(Aws::STS::Types::Credentials)
42
- AWSAssumeRole::Credentials.new(object.to_h)
43
-
44
- end
45
-
46
- @credentials = nil
47
-
48
- def initialize(hash)
49
- @credentials = hash
50
- end
51
-
52
- def secret_access_key
53
- @credentials[:secret_access_key]
54
- end
55
-
56
- def access_key_id
57
- @credentials[:access_key_id]
58
- end
59
-
60
- def session_token
61
- @credentials[:session_token]
62
- end
63
-
64
- def expiration
65
- @credentials[:expiration]
66
- end
67
-
68
- def region
69
- @credentials[:region]
70
- end
71
-
72
- def store_in_keyring(key)
73
- keyring = Keyring.new
74
- logger.debug("Keyring: store '#{key}' with #{@credentials.to_json}")
75
- keyring.set_password('AWSAssumeRole', key, @credentials.to_json)
76
- end
77
-
78
- def delete_from_keyring(key)
79
- keyring = Keyring.new
80
- logger.debug("Keyring: delete '#{key}'")
81
- keyring.delete_password('AWSAssumeRole', key)
82
- end
83
-
84
- def expired?
85
- logger.debug("Checking expiry: #{@credentials[:expiration]} "\
86
- '<= Time.now')
87
- @credentials[:expiration] <= Time.now
88
- end
89
-
90
- end
91
-
92
- end